예제 #1
0
 public bool EquivaleA(Arvore <Dado> outraArvore)
 {
     /* . ambas são vazias
      * ou
      * .. Info(A) = Info(B) e
      * ... Esq(A) eq Esq(B) e Dir(A) eq Dir(B)
      */
     return(Eq(this.Raiz, outraArvore.Raiz));
 }
예제 #2
0
        public FrmRotasMarte()
        {
            InitializeComponent();

            cidades      = new Arvore <Cidade>();
            caminhos     = new List <Caminho>();
            pontosAUnir  = new List <Point>();
            fonteCidades = lblCidades.Font;
        }
예제 #3
0
        public Object Clone()
        {
            Arvore <Dado> ret = null;

            try
            {
                ret = new Arvore <Dado>(this);
            }
            catch (Exception e) { }

            return(ret);
        }
예제 #4
0
        public Matriz(Arvore <Cidade> cidades, List <Caminho> caminhosPossiveis)
        {
            matrizDeAdjacencias = new int[cidades.QuantosDados, cidades.QuantosDados];

            this.cidades = new List <Cidade>();

            InserirCidade(cidades.Raiz);
            foreach (Caminho c in caminhosPossiveis)
            {
                matrizDeAdjacencias[c.IdCidadeOrigem, c.IdCidadeDestino] = c.Distancia;
            }
        }
예제 #5
0
        /**
         * Construtor, cada atributo é instanciado ou tem seus dados carregados.
         */
        public GPS()
        {
            arvore          = new Arvore <Cidade>();
            listaCidades    = new List <Cidade>();
            listaMovimentos = new List <Movimento>();

            arvore          = Leitor.LerCidades();
            listaCidades    = arvore.getListaOrdenada();
            listaMovimentos = Leitor.LerMovimentos();

            matrizAdjacencia = MontarMatrizAdjacencia();
        }
예제 #6
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();
        }
예제 #7
0
        /**
         * Método responsável por ler o arquivo "CidadesMarte.txt" e armazenar seus dados numa Arvore de cidades, que será retornada.
         */
        public static Arvore <Cidade> LerCidades()
        {
            StreamReader    leitorDeArquivos = new StreamReader("CidadesMarte.txt", Encoding.GetEncoding("iso-8859-1"));
            Arvore <Cidade> arvore           = new Arvore <Cidade>();

            while (!leitorDeArquivos.EndOfStream)
            {
                String linhaLinha  = leitorDeArquivos.ReadLine();
                int    idCidade    = int.Parse(linhaLinha.Substring(0, 3).Trim());
                String nomeCidade  = linhaLinha.Substring(3, 16).Trim();
                int    coordenadaX = int.Parse(linhaLinha.Substring(19, 5).Trim());
                int    coordenadaY = int.Parse(linhaLinha.Substring(24, 4).Trim());

                Cidade novaCidade = new Cidade(idCidade, nomeCidade, coordenadaX, coordenadaY);
                arvore.Raiz = arvore.InserirBalanceado(novaCidade, arvore.Raiz);
            }
            return(arvore);
        }
예제 #8
0
        double?[] melhorCaminho;                                                      // Variável que guarda a linha seleciona pelo usuário para que o caminho escolhido seja exibido no mapa

        public Form1()
        {
            InitializeComponent();
            arvore = new Arvore <Cidade>();                                           //Instanciação da árvore
        }
예제 #9
0
 public Arvore(Arvore <Dado> modelo)
 {
     this.Raiz       = modelo.Raiz;
     this.Atual      = modelo.Atual;
     this.Antecessor = modelo.Antecessor;
 }
예제 #10
0
        private void Form1_Load(object sender, EventArgs e)
        {
            arvoreCidades  = new Arvore <CidadeMarte>();
            matrizCaminhos = new int[23, 23];

            dgvCaminhosEncontrados.RowCount = 0;



            //arquivo cidades
            try
            {
                // vai ler o arquivo e armazenar em uma árvore
                StreamReader arquivo;

                arquivo = new StreamReader(@"C:\Temp\CidadesMarte.txt", Encoding.Default);
                while (!arquivo.EndOfStream)
                {
                    string linha = arquivo.ReadLine();
                    arvoreCidades.Incluir(new CidadeMarte(int.Parse(linha.Substring(1, 2)),      // id
                                                          linha.Substring(3, 16),                // nome
                                                          int.Parse(linha.Substring(19, 4)),     // coordx
                                                          int.Parse(linha.Substring(24, 4))));   // coordy
                }
            }
            catch
            { //caso não consiga achar o arquivo ele da um openfile
                StreamReader arquivo;
                MessageBox.Show("Selecione o arquivo das cidades (CidadesMarte.txt)");
                if (dlgAbrir.ShowDialog() == DialogResult.OK)
                {
                    arquivo = new StreamReader(dlgAbrir.FileName);
                }
                else
                {
                    arquivo = new StreamReader(@"C:\Temp\CidadesMarte.txt", Encoding.Default);
                }

                while (!arquivo.EndOfStream)
                {
                    string linha = arquivo.ReadLine();
                    arvoreCidades.Incluir(new CidadeMarte(int.Parse(linha.Substring(1, 2)),      // id
                                                          linha.Substring(3, 16),                // nome
                                                          int.Parse(linha.Substring(19, 4)),     // coordx
                                                          int.Parse(linha.Substring(24, 4))));   // coordy
                }
            }


            // arquivo caminhos
            try
            {
                StreamReader arquivo;
                arquivo = new StreamReader(@"C:\Temp\CaminhosEntreCidadesMarte.txt", Encoding.Default);
                while (!arquivo.EndOfStream)
                {
                    string linha = arquivo.ReadLine();
                    matrizCaminhos[int.Parse(linha.Substring(1, 2)), int.Parse(linha.Substring(4, 2))] = int.Parse(linha.Substring(7, 4));
                    // id origem             // id destino                    // distancia
                }
            }
            catch
            {
                StreamReader arquivo;
                MessageBox.Show("Selecione o arquivo dos caminhos (CaminhosEntreCidadesMarte.txt)");
                if (dlgAbrir.ShowDialog() == DialogResult.OK)
                {
                    arquivo = new StreamReader(dlgAbrir.FileName);
                }
                else
                {
                    arquivo = new StreamReader(@"C:\Temp\CaminhosEntreCidadesMarte.txt", Encoding.Default);
                }

                while (!arquivo.EndOfStream)
                {
                    string linha = arquivo.ReadLine();
                    matrizCaminhos[int.Parse(linha.Substring(1, 2)), int.Parse(linha.Substring(4, 2))] = int.Parse(linha.Substring(7, 4));
                    // id origem             // id destino                    // distancia
                }
            }

            pnlArvore.Invalidate();
        }