private void exibirDgv(Rota rota, DataGridView onde) { int quantasCidades = rota.CodigosCidade().Length; onde.RowCount++; if (onde.ColumnCount < quantasCidades) { onde.ColumnCount = quantasCidades; } for (int a = 0; a < quantasCidades; a++) { onde[a, onde.RowCount - 1].Value = rota.CodigosCidade()[a]; } }
private void achaProx(ref ListaSimples <Rota> lista, int codO, int codD) { for (int i = 0; i < quantosdados; i++) { if (rotasMatriz[i, 0] == codO) { for (int a = 0; a < quantosdados; a++) { ListaSimples <Caminho> novaRota = new ListaSimples <Caminho>(); if (rotasMatriz[i, a] > 0) { novaRota.InserirAntesDoInicio(new Caminho(rotasMatriz[i, 0], rotasMatriz[a, 0], rotasMatriz[i, a])); if (rotasMatriz[0, a] == codD) { Rota RotaPronta = new Rota(); while (!novaRota.EstaVazia) { RotaPronta.AdicionarCaminho(novaRota.Primeiro.Info); novaRota.Remover(novaRota.Primeiro.Info); } lista.InserirAposFim(RotaPronta); } else { achaProx(ref lista, rotasMatriz[a, 0], codD); } } else if (a == quantosdados) { novaRota.Remover(novaRota.Ultimo.Info); achaProx(ref lista, novaRota.Ultimo.Info.CodOrigem, codD); } } } } }
private void BtnBuscar_Click(object sender, EventArgs e) { dataGridView1.RowCount = 0; dataGridView1.ColumnCount = 6; dataGridView2.RowCount = 0; dataGridView2.ColumnCount = 6; if (destino != origem) { ListaSimples <Rota> rotas = obterRotas(origem, destino); rotas.Atual = rotas.Primeiro; Rota nova, menor = new Rota(); menor.AdicionarCaminho(new Caminho(-1, -1, int.MaxValue)); while (rotas.Atual != null) { nova = rotas.Atual.Info; if (nova.DistanciaTotal() < menor.DistanciaTotal()) { menor = nova; } exibirDgv(nova, dataGridView1); rotas.Atual = rotas.Atual.Prox; } exibirDgv(menor, dataGridView2); podeMostrar = true; } else { MessageBox.Show("Você já está onde você quer chegar."); } marcarOrigem(); marcarDestino(); }