public static void Questao6(List <Rotas> rotas) { List <Rotas> viagensComecandoC = new List <Rotas>(); int count = 0; //monta as listas das rotas começadas e terminadas em C foreach (var item in rotas) { if (item.rota.StartsWith("C")) { viagensComecandoC.Add(item); } } // define o numero das rotas possiveis List <Rotas> rotapossivel = new List <Rotas>(); int flag = 0; foreach (var item in viagensComecandoC) { Rotas rotaAnterior = item; if (flag == 0) { rotapossivel.Add(item); } foreach (var item2 in rotas) { //se a proxima rota existir if (proximaRota(rotas, rotaAnterior, rotaAnterior.rota.Substring(item.rota.Count() - 1)) != null) { //se a rota não exister na lisa de rota ainda, entra no if if (rotapossivel.Contains(rotaAnterior) == true) { var b = proximaRota(rotas, rotaAnterior, rotaAnterior.rota.Substring(item.rota.Count() - 1)); //se a proxima rota, já existir na rota, para o looop. if (rotapossivel.Contains(b)) { break; } rotapossivel.Add(b); rotaAnterior = b; //verifica fim da rota com rotas terminada em C if (b.rota.EndsWith("C")) { break; } } } } if (rotapossivel.Count <= 3) { count++; } rotapossivel = new List <Rotas>(); } Console.WriteLine(string.Format("#6) O número de viagens começando em C e terminando em C com no máximo 3 paradas: {0}", count)); }
private static void Questao8(List <Rotas> rotas) { List <Rotas> viagensComecandoC = new List <Rotas>(); List <int> menorRota = new List <int>(); //monta as listas das rotas começadas em A e terminadas em C foreach (var item in rotas) { if (item.rota.StartsWith("A")) { viagensComecandoC.Add(item); } } // define o numero das rotas possiveis List <Rotas> rotapossivel = new List <Rotas>(); int flag = 0; foreach (var item in viagensComecandoC) { Rotas rotaAnterior = item; if (flag == 0) { rotapossivel.Add(item); } foreach (var item2 in rotas) { //se a proxima rota existir if (proximaRota(rotas, rotaAnterior, rotaAnterior.rota.Substring(item.rota.Count() - 1)) != null) { //se a rota não exister na lisa de rota ainda, entra no if if (rotapossivel.Contains(rotaAnterior) == true) { var b = proximaRota(rotas, rotaAnterior, rotaAnterior.rota.Substring(item.rota.Count() - 1)); //se a proxima rota, já existir na rota, para o looop. if (rotapossivel.Contains(b)) { break; } rotapossivel.Add(b); rotaAnterior = b; //verifica fim da rota com rotas terminada em C if (b.rota.EndsWith("C")) { menorRota.Add(rotapossivel.Sum(x => x.distancia)); break; } } } } rotapossivel = new List <Rotas>(); } Console.WriteLine(string.Format("#8) O tamanho da menor viagem(em termos de distância) de A para C: {0}", menorRota.Min())); }
public VerRotasViewModel(VerRotas pai) { parentPage = pai; // apagar rota selecionada this.ApagarCommand = new Command(async() => { // verifica se existe rota selecionada na lista de rotas if (parentPage.RotaSelecionada == null) { DependencyService.Get <IMessage>().ShortAlert("Nenhuma rota foi selecionada."); return; } // confirma eliminação da rota var resposta = await parentPage.DisplayAlert("Apaga Rota", "Confirma eliminação da rota selecionada?", "Sim", "Não"); if (resposta) { if (RotasBD.ApagaRota(parentPage.RotaSelecionada.RotaId)) { // apaga rota da lista de rotas Rotas.Remove(parentPage.RotaSelecionada); InformaAlteracao("Rotas"); } else { DependencyService.Get <IMessage>().ShortAlert("Erro na eliminação da rota!"); } } }); // ver rota selecionada no mapa this.VerCommand = new Command(async() => { // verifica se existe rota selecionada na lista de rotas if (parentPage.RotaSelecionada == null) { DependencyService.Get <IMessage>().ShortAlert("Nenhuma rota foi selecionada."); return; } // verifica se existem coordenadas na rota selecionada if ((parentPage.RotaSelecionada.Coordenadas == null) || (parentPage.RotaSelecionada.Coordenadas.Count < 2)) { DependencyService.Get <IMessage>().ShortAlert("Rota selecionada não possui nenhum trajeto."); return; } // mostra rota no mapa await App.NavegarParaPagina(new VerRotaNoMapa(parentPage.RotaSelecionada.Coordenadas)); }); }
public static Rotas ProximaRotaCurta(List <Rotas> rotasAtual, Rotas rotaAnterior, string Final, List <Rotas> rotapossivel) { List <Rotas> rota = new List <Rotas>(); foreach (var item in rotasAtual.Except(rotapossivel)) { if (item.rota.StartsWith(Final)) { rota.Add(item); } } return(rota.FirstOrDefault(x => x.distancia == rota.Min(r => r.distancia))); }
//pega a proxima rota, de acordo com o fim da rota enviada public static Rotas proximaRota(List <Rotas> rotas, Rotas rota, string Final) { Rotas a = null; foreach (var item in rotas) { if (item.rota.StartsWith(Final)) { a = item; break; } } return(a); }