Beispiel #1
0
        private void LerDeArquivo(bool ehCidade)                        // metodo usado para ler os dois arquivos que apenas recebe o boolean que indica se e cidade
        {
            if (dlgAbrir.ShowDialog() == DialogResult.OK)               //Descobriremos o caminho do arquivo desejado
            {
                StreamReader arq = new StreamReader(dlgAbrir.FileName); // abertura do arquivo

                try
                {
                    if (!ehCidade)                                                           // se for um arquivo de caminhos entre cidades
                    {
                        while (!arq.EndOfStream)                                             // enquanto o arquivo nao terminou, percorremos
                        {
                            CaminhoEntreCidades c = new CaminhoEntreCidades(arq.ReadLine()); // le o caminho do arquivo
                            caminhos[c.Destino, c.Origem] = c;                               // armazena o caminho na matriz
                        }
                    }
                    else // se for um arquivo de cidades
                    {
                        while (!arq.EndOfStream) // enquanto o arquivo nao terminou, percorremos
                        {
                            Cidade c = new Cidade(arq.ReadLine()); // le a cidade do arquivo
                            cidades.Incluir(c);                    // armazena a cidade na arvore
                        }
                    }
                }
                catch // caso arquivo nao esteja nos padroes de dados pre definidos, informa o usuario e chama novamente o metodo
                {
                    MessageBox.Show("Por favor, selecione um arquivo válido!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    LerDeArquivo(ehCidade);
                }

                arq.Close(); // fecha o arquivo lido
            }
        }
        public GrafoBacktracking(string nomeArquivo)
        {
            // instancia-se leitor de arquivos com o nome do arquivo passado por parâmetro
            var arquivo = new StreamReader(nomeArquivo);

            qtasCidades = 23;                                                      // nº de cidades do arquivo
            matriz      = new CaminhoEntreCidades[qtasCidades, qtasCidades];       // matriz [23,23]
            while (!arquivo.EndOfStream)                                           // enquanto puder ler o arquivo
            {
                string linha = arquivo.ReadLine();                                 // lê uma linha por vez
                CaminhoEntreCidades caminho = new CaminhoEntreCidades(int.Parse(linha.Substring(0, 3)), int.Parse(linha.Substring(3, 3)), int.Parse(linha.Substring(6, 5)), int.Parse(linha.Substring(11, 4)), int.Parse(linha.Substring(15)));
                matriz[caminho.IdCidadeOrigem, caminho.IdCidadeDestino] = caminho; // add o caminho lido na matriz, com a linha = idCidadeOrigem e coluna = idCidadeDestino
            }
            arquivo.Close();
        }
Beispiel #3
0
        //ao iniciar o programa
        private void Form1_Load(object sender, EventArgs e)
        {
            //limpamos os itens existentes nos lsbs
            lsbOrigem.Items.Clear();
            lsbDestino.Items.Clear();
            //instanciamos variáveis
            caminho = new PilhaLista <int>();
            cidades = new Arvore <Cidade>();

            //leitura do arquivo de cidades de acordo com o método feito na classe Cidade
            //incluimos as cidades na árvore de cidades
            StreamReader arq = new StreamReader("CidadesMarte.txt");

            while (!arq.EndOfStream)
            {
                Cidade cid = Cidade.LerArquivo(arq);
                cidades.Incluir(cid);
            }
            arq.Close();

            //lemos o arquivo ordenado para inclusão das cidades nos lsbs de origem e destino
            arq = new StreamReader("CidadesMarteOrdenado.txt");
            while (!arq.EndOfStream)
            {
                Cidade cid = Cidade.LerArquivo(arq);
                lsbOrigem.Items.Add(cid.IdCidade + "-" + cid.NomeCidade);
                lsbDestino.Items.Add(cid.IdCidade + "-" + cid.NomeCidade);
            }
            arq.Close();

            //criamos uma matriz de cidades de acordo com a quantidade de cidades existentes
            adjacencias = new int[cidades.QuantosDados, cidades.QuantosDados];
            //lemos o arquivo que nos passa os caminhos entre as cidades
            arq = new StreamReader("CaminhosEntreCidadesMarte.txt");

            //cria-se uma variável que recebe o caminho entre as cidades
            //guarda-se a distância do caminho na matriz de acordo com a cidade de origem e cidade de destino
            //[idOrigem, idDestino] == [x,y]
            while (!arq.EndOfStream)
            {
                CaminhoEntreCidades caminho = CaminhoEntreCidades.LerArquivo(arq);
                adjacencias[caminho.IdCidadeOrigem, caminho.IdCidadeDestino] = caminho.Distancia;
            }
            arq.Close();

            //pedimos para que o mapa seja redesenhado
            pbMapa.Invalidate();
        }