예제 #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            cidades        = new ArvoreBinaria <Cidade>();                                    // instancia a arvore
            dlgAbrir.Title = "Ler cidades de: ";                                              // coloca um titulo no dialog

            LerDeArquivo(true);                                                               // chama o metodo de leitura de arquivo

            dlgAbrir.Title = "Ler caminhos de: ";                                             // coloca outro titulo no mesmo dialog
            caminhos       = new CaminhoEntreCidades[cidades.QuantosNos, cidades.QuantosNos]; //instancia a matriz com a quiantidade de elementos da arvore

            LerDeArquivo(false);                                                              //chama o metodo de leitura de arquivo

            calc            = new CalculadoraDeRotas(cidades.QuantosNos, caminhos);           //instancia a calculadora de rotas com os caminhos e a quantidade de elementos da arvore
            rotaSelecionada = new List <Cidade>();                                            // instancia a rota selecionada

            cidades.ExecutaEmTodos((Cidade c) =>                                              //chama o metodo da arvore que recebe uma funcao como parametro e excutara essa funcao em todos os nos da arvore
            {
                string mostrante = c.ToString();                                              // recebe o nome da cidade

                lsbOrigem.Items.Add(mostrante);                                               // escrve no listBox de origem
                lsbDestino.Items.Add(mostrante);                                              // escrve no listBox de destino
            });

            // coloca os selecionados do ListBox em duas cidades diferentes
            lsbOrigem.SelectedIndex  = 0;
            lsbDestino.SelectedIndex = 1;
        }
예제 #2
0
 public Form1()
 {
     InitializeComponent();
     if (openCidades.ShowDialog() == DialogResult.OK)
     {
         arvore = new ArvoreBinaria(openCidades.FileName);
     }
 }
예제 #3
0
        public Form1()
        {
            InitializeComponent();

            MessageBox.Show("Selecione o arquivo texto com as cidades de marte");
            if (openCidades.ShowDialog() == DialogResult.OK)
            {
                arvore = new ArvoreBinaria(openCidades.FileName);
            }

            MessageBox.Show("Selecione o arquivo texto com os caminhos entre as cidades de marte");
            if (openCaminhos.ShowDialog() == DialogResult.OK)
            {
                grafo = new Grafo(openCaminhos.FileName, arvore.Quantos);
            }
        }
예제 #4
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //Abertura do primeiro arquivo --> CidadesMarte.txt
            var arq = new StreamReader("CidadesMarte.txt");

            arvore = new ArvoreBinaria <Cidade>();

            string linha = null;

            while (!arq.EndOfStream)
            {
                linha = arq.ReadLine();
                arvore.Incluir(new Cidade(linha));
                qtdCidades++;
            }
            arq.Close();

            //Abertura do segundo arquivo --> CaminhosEntreCidadesMarte.txt
            var arq2 = new StreamReader("CaminhosEntreCidadesMarte.txt");

            matriz = new Caminho[qtdCidades, qtdCidades];
            string linha2 = null;

            while (!arq2.EndOfStream)
            {
                linha2 = arq2.ReadLine();
                matriz[int.Parse(linha2.Substring(0, 3)), int.Parse(linha2.Substring(3, 3))] = new Caminho(linha2);
            }
            arq2.Close();

            //Abertura do terceiro arquivo --> CidadesMarteOrdenado.txt
            var arq3 = new StreamReader("CidadesMarteOrdenado.txt");

            lsbOrigem.Items.Clear();
            lsbDestino.Items.Clear();

            string linha3 = null;

            while (!arq3.EndOfStream)
            {
                linha3 = arq3.ReadLine();
                lsbOrigem.Items.Add(linha3.Substring(0, 3) + " - " + linha3.Substring(3, 15));
                lsbDestino.Items.Add(linha3.Substring(0, 3) + " - " + linha3.Substring(3, 15));
            }
            arq3.Close();
        }
        // Método que lê de um arquivo texto e constroe uma árvore a partir dele
        private void ConstruirArvore(string nomeArquivo)
        {
            if (nomeArquivo == null || nomeArquivo.Equals(""))
            {
                throw new Exception("Nome de arquivo invalido");
            }

            var arquivo = new StreamReader(nomeArquivo);

            arvoreBinaria = new ArvoreBinaria <CidadeMarte>();
            while (!arquivo.EndOfStream)
            {
                string linha      = arquivo.ReadLine();
                int    id         = int.Parse(linha.Substring(0, 3));
                string nomeCidade = linha.Substring(3, 15);
                int    x          = int.Parse(linha.Substring(18, 5));
                int    y          = int.Parse(linha.Substring(23, 5));

                var cidadeMarte = new CidadeMarte(id, nomeCidade, x, y);
                arvoreBinaria.InserirInfo(cidadeMarte);
            }

            arquivo.Close();
        }