コード例 #1
0
        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];
            }
        }
コード例 #2
0
        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);
                        }
                    }
                }
            }
        }
コード例 #3
0
        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();
        }