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); }
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(); }