Пример #1
0
 /// <summary>
 /// Inicializa as variáveis do formulário e monta o grafo a partir da árvore de cidades recebida
 /// </summary>
 /// <param name="cidades">Árvore das cidades que serão desenhadas no mapa</param>
 public frmMapaCidade(ref ArvoreDeBusca <Cidade> cidades)
 {
     InitializeComponent();
     grafoMapa = new GrafoCidades(null);
     PercorrerArvore(ref cidades.raiz);
     pnlMapa.Invalidate();
 }
Пример #2
0
        private void btnManutCidade_Click(object sender, EventArgs e)
        {
            frmManutCidade ManutCidade = new frmManutCidade(); // chama o formulário de manutenção de cidades

            ManutCidade.ShowDialog(this);

            grafoCaminhos = new GrafoCidades(null);
            cidades       = new String[GrafoCidades.NUM_VERTICES];
            cbxDestino.Items.Clear();
            cbxOrigem.Items.Clear();

            // Lê os arquivos novamente para atualizar as alterações
            FileStream     arqCidades = new FileStream("arqCidades.cid", FileMode.OpenOrCreate);
            RegistroCidade regCidade  = new RegistroCidade();

            for (int i = 0; i < arqCidades.Length / Cidade.TAMANHO_DO_REGISTRO; i++)
            {
                Cidade novaCidade = new Cidade("", 0D, 0D);
                regCidade.LerRegistro(arqCidades, i, ref novaCidade);
                cidades[i] = novaCidade.ToString();
                cbxDestino.Items.Add(novaCidade.ToString());
                cbxOrigem.Items.Add(novaCidade.ToString());
                grafoCaminhos.NovoVertice(novaCidade);
            }
            arqCidades.Close();

            FileStream      arqCaminhos = new FileStream("arqCaminhos.cam", FileMode.OpenOrCreate);
            RegistroCaminho regCaminho  = new RegistroCaminho();

            for (int i = 0; i < arqCaminhos.Length / Caminho.TAMANHO_DO_REGISTRO; i++)
            {
                Caminho novoCaminho = new Caminho(new Cidade("", 0D, 0D), new Cidade("", 0D, 0D), int.MaxValue);
                regCaminho.LerRegistro(arqCaminhos, i, ref novoCaminho);
                int cid1 = IndiceDe(novoCaminho.Saida.ToString());
                int cid2 = IndiceDe(novoCaminho.Destino.ToString());
                if (cid1 > 0 && cid2 > 0)
                {
                    grafoCaminhos.NovaAresta(cid1, cid2, novoCaminho.Distancia);
                }
            }
            arqCaminhos.Close();

            panel1.Invalidate(); // atualiza o panel1
        }
Пример #3
0
        private void frmBuscaCaminhos_Load(object sender, EventArgs e)
        {
            grafoCaminhos = new GrafoCidades(null);
            cidades       = new String[GrafoCidades.NUM_VERTICES];

            FileStream     arqCidades = new FileStream("arqCidades.cid", FileMode.OpenOrCreate); // abre o arquivo, criando-o se não existir
            RegistroCidade regCidade  = new RegistroCidade();

            for (int i = 0; i < arqCidades.Length / Cidade.TAMANHO_DO_REGISTRO; i++) //Enquanto houver registros para ler, o faz
            {
                Cidade novaCidade = new Cidade("", 0D, 0D);
                regCidade.LerRegistro(arqCidades, i, ref novaCidade); // lê o registro e o armazena em novaCidade
                cidades[i] = novaCidade.ToString();
                cbxDestino.Items.Add(novaCidade.ToString());
                cbxOrigem.Items.Add(novaCidade.ToString());
                grafoCaminhos.NovoVertice(novaCidade);
            }
            arqCidades.Close();                                                                     // fecha o arquivo de cidades

            FileStream      arqCaminhos = new FileStream("arqCaminhos.cam", FileMode.OpenOrCreate); // abre o arquivo, criando-o se não existir
            RegistroCaminho regCaminho  = new RegistroCaminho();

            for (int i = 0; i < arqCaminhos.Length / Caminho.TAMANHO_DO_REGISTRO; i++) //Enquanto houver registros para ler, o faz
            {
                Caminho novoCaminho = new Caminho(new Cidade("", 0D, 0D), new Cidade("", 0D, 0D), int.MaxValue);
                regCaminho.LerRegistro(arqCaminhos, i, ref novoCaminho); // lê o registro e o armazena em novoCaminho
                int cid1 = IndiceDe(novoCaminho.Saida.ToString());
                int cid2 = IndiceDe(novoCaminho.Destino.ToString());
                if (cid1 > 0 && cid2 > 0)                                        // se as duas cidades existirem
                {
                    grafoCaminhos.NovaAresta(cid1, cid2, novoCaminho.Distancia); // cria uma novas aresta entre essa cidades
                }
            }
            arqCaminhos.Close(); //fecha o arquivo de caminhos

            panel1.Invalidate();
        }