示例#1
0
        private void AdicionarNoGridView() //metodo que percorre a matriz dos caminhos e passa para o gridview
        {
            int tamanhoColunas = 0;
            int tamanhoLinhas  = 0;

            if (idOrigem == 0)   // caso o origem fosse 0, ele nao aumentaria nas colunas abaixo
            {
                tamanhoColunas++;
            }

            //calcula quantas colunas e linhas terão
            for (int i = 1; i < tamanhoArray; i++)
            {
                for (int j = 1; j < tamanhoArray; j++)
                {
                    if (matrizCaminhosAchados[i, j] != 0)
                    {
                        if (tamanhoColunas < j)
                        {
                            tamanhoColunas++;
                        }
                        if (tamanhoLinhas < i)
                        {
                            tamanhoLinhas++;
                        }
                    }
                }
            }


            if (tamanhoLinhas == 0) //se não existe dados no gridview é porque rotas não foram encontradas
            {
                MessageBox.Show("Não existem caminhos entre esses destinos");
                Resetar();
                return;
            }

            List <CidadeMarte> listaCidades = arvoreCidades.ParaLista();

            //escreve os dados no gridview
            dgvCaminhosEncontrados.RowCount    = tamanhoLinhas;
            dgvCaminhosEncontrados.ColumnCount = tamanhoColunas;
            for (int lin = 0; lin < tamanhoLinhas; lin++)
            {
                for (int col = 0; col < tamanhoColunas; col++)
                {
                    dgvCaminhosEncontrados.Rows[lin].Cells[col].Value = matrizCaminhosAchados[lin + 1, col + 1] + " - " + listaCidades.ElementAt(matrizCaminhosAchados[lin + 1, col + 1]).Nome;
                }
            }

            int copiaTamanhoColunas = tamanhoColunas;

            for (int lin = 1; tamanhoColunas > 1 && lin <= tamanhoLinhas; lin++)
            {
                while (matrizCaminhosAchados[lin, tamanhoColunas] == 0)
                {
                    dgvCaminhosEncontrados.Rows[lin - 1].Cells[tamanhoColunas - 1].Value = "";
                    tamanhoColunas--;
                }
                tamanhoColunas = copiaTamanhoColunas;
            }

            dgvMelhorCaminho.ColumnCount = pilhaMenorCaminho.Tamanho() + 1;
            dgvMelhorCaminho.RowCount    = 1;

            PilhaVetor <CaminhoMarte> pilhaParaMostrar = pilhaMenorCaminho.Copia().Inverte();

            dgvMelhorCaminho.Rows[0].Cells[0].Value = idOrigem + " - " + listaCidades.ElementAt(idOrigem).Nome;
            for (int i = 1; !pilhaParaMostrar.EstaVazia(); i++)
            {
                dgvMelhorCaminho.Rows[0].Cells[i].Value = pilhaParaMostrar.OTopo().IdCidadeDestino + " - " + listaCidades.ElementAt(pilhaParaMostrar.Desempilhar().IdCidadeDestino).Nome;
            }
        }