Beispiel #1
0
        static void CriarGrafo(bool direcionado, string[] conteudoArquivo, ref GrafoNaoDir grafoComum, ref GrafoDirigido digrafo)
        {
            arqDAO = new ArquivoDAO(nomeArq);

            conteudoArquivo = arqDAO.LerAquivo();

            grafoDirecionado = IsDirecionado(conteudoArquivo[1]);

            if (direcionado)
            {
                digrafo = new GrafoDirigido(conteudoArquivo);
            }
            else
            {
                grafoComum = new GrafoNaoDir(conteudoArquivo);
            }

            BarraProgresso(25);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Console.WindowWidth = 100;

            ImprimirNomeGrupo();

            BarraProgresso(7);

            // Classe para acesso aos dados (Data Access Object).
            int           opcaoMenu;
            string        resposta;
            GrafoNaoDir   grafoComum = null;
            GrafoDirigido digrafo = null;
            Vertice       v1, v2;

            // Em cada do arquivo linha haverá informações de um vértice, sendo que o arquivo lido pode conter
            // informações de um grafo direcionado ou não-dir.
            // Exemplo: "3;2;5;-1" ou "3;2;5" em que "nomeVertice1; nomeVertice2; pesoAresta; direção".
            string[] conteudoArquivo;

            Console.WriteLine("Informe o nome do arquivo: ");
            nomeArq = Console.ReadLine();

            arqDAO = new ArquivoDAO(nomeArq);

            conteudoArquivo = arqDAO.LerAquivo();

            grafoDirecionado = IsDirecionado(conteudoArquivo[1]);

            CriarGrafo(grafoDirecionado, conteudoArquivo, ref grafoComum, ref digrafo);

            if (grafoDirecionado)
            {
                string nomeVert;
                int    grauVertice;
                do
                {
                    Console.Clear();
                    Console.WriteLine("Escolha uma opção:\n");
                    ImprimirMenu(grafoDirecionado);
                    Console.WriteLine();
                    opcaoMenu = int.Parse(Console.ReadLine());
                    Console.WriteLine();
                    switch (opcaoMenu)
                    {
                    case 0:
                        Console.WriteLine("Informe o nome do arquivo: ");
                        nomeArq = Console.ReadLine();

                        CriarGrafo(grafoDirecionado, conteudoArquivo, ref grafoComum, ref digrafo);
                        break;

                    case 1:
                        ImprimirGrafo(digrafo);
                        break;

                    case 2:
                        Console.WriteLine("Informe o nome do vértice:");
                        nomeVert = Console.ReadLine();

                        v1 = new Vertice(nomeVert);

                        grauVertice = digrafo.GetGrauEntrada(v1);

                        resposta = (grauVertice == -1) ? "O vértice não existe!" : "O grau de entrada do vértice é " + grauVertice + ".";
                        Responder(resposta);
                        break;

                    case 3:
                        Console.WriteLine("Informe o nome do vértice:");
                        nomeVert = Console.ReadLine();

                        v1 = new Vertice(nomeVert);

                        grauVertice = digrafo.GetGrauSaida(v1);

                        resposta = (grauVertice == -1) ? "O vértice não existe!" : "O grau de saída do vértice é " + grauVertice + ".";
                        Responder(resposta);
                        break;

                    case 4:

                        break;


                    default:
                        if (opcaoMenu != -1)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("\nA opção escolhida é inválida. Pressione qualquer tecla e tente novamente.");
                            Console.ResetColor();
                        }
                        break;
                    }
                    if (opcaoMenu != -1)
                    {
                        Console.WriteLine("\nPressione qualquer tecla para voltar ao menu principal.");
                        Console.ReadKey();
                    }
                } while (opcaoMenu != -1);
            }
            else
            {
                string nomeVert;
                do
                {
                    Console.Clear();
                    Console.WriteLine("Escolha uma opção:\n");
                    ImprimirMenu(grafoDirecionado);
                    Console.WriteLine();
                    opcaoMenu = int.Parse(Console.ReadLine());
                    Console.WriteLine();
                    switch (opcaoMenu)
                    {
                    case 0:
                        Console.WriteLine("Informe o nome do arquivo: ");
                        nomeArq = Console.ReadLine();

                        CriarGrafo(grafoDirecionado, conteudoArquivo, ref grafoComum, ref digrafo);
                        break;

                    case 1:
                        ImprimirGrafo(grafoComum);
                        break;

                    case 2:
                        string nomeVert1, nomeVert2;
                        Console.WriteLine("Informe o nome do vértice 1:");
                        nomeVert1 = Console.ReadLine();
                        Console.WriteLine("\nInforme o nome do vértice 2:");
                        nomeVert2 = Console.ReadLine();

                        v1 = new Vertice(nomeVert1);
                        v2 = new Vertice(nomeVert2);

                        resposta = (grafoComum.IsAdjacente(v1, v2)) ? "Os vértices são adjacentes!" : "Os vértices não são adjacentes.";
                        Responder(resposta);
                        break;

                    case 3:
                        int grauVertice;
                        Console.WriteLine("Informe o nome do vértice:");
                        nomeVert = Console.ReadLine();

                        v1 = new Vertice(nomeVert);

                        grauVertice = grafoComum.GetGrau(v1);

                        resposta = (grauVertice == -1) ? "O vértice não existe!" : "O grau do vértice é " + grauVertice + ".";
                        Responder(resposta);
                        break;

                    case 4:
                        Console.WriteLine("Informe o nome do vértice:");
                        nomeVert = Console.ReadLine();

                        v1 = new Vertice(nomeVert);

                        resposta = (grafoComum.IsPendente(v1)) ? "O vértice é pendente!" : "O vértice não é pendente.";
                        Responder(resposta);
                        break;

                    case 5:
                        resposta = (grafoComum.IsRegular()) ? "O grafo é regular!" : "O grafo não é regular.";
                        Responder(resposta);
                        break;

                    case 6:
                        resposta = (grafoComum.IsNulo()) ? "O grafo é nulo!" : "O grafo não é nulo.";
                        Responder(resposta);
                        break;

                    case 7:
                        resposta = (grafoComum.IsCompleto()) ? "O grafo é completo!" : "O grafo não é completo.";
                        Responder(resposta);
                        break;

                    case 8:
                        resposta = (grafoComum.IsConexo()) ? "O grafo é conexo!" : "O grafo não é conexo.";
                        Responder(resposta);
                        break;

                    case 9:

                        break;

                    case 10:

                        break;

                    case 11:

                        break;

                    case 12:

                        break;

                    case 13:

                        break;

                    default:
                        if (opcaoMenu != -1)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("\nA opção escolhida é inválida. Pressione qualquer tecla e tente novamente.");
                            Console.ResetColor();
                        }
                        break;
                    }
                    if (opcaoMenu != -1)
                    {
                        Console.WriteLine("\nPressione qualquer tecla para voltar ao menu principal.");
                        Console.ReadKey();
                    }
                } while (opcaoMenu != -1);
            }

            Console.ReadKey();
        }