Пример #1
0
        static void Main(string[] args)
        {
            int vertice = 0;


            Console.SetWindowSize(Console.WindowWidth + 45, Console.WindowHeight + 10);

            while (vertice <= 0)
            {
                Console.Clear();
                try
                {
                    Console.Write("Digite o número de vértices : ");
                    vertice = int.Parse(Console.ReadLine());
                }
                catch (System.FormatException)
                {
                    Console.WriteLine("\n\nDigite uma opção válida!!");
                    Console.ReadKey();
                    Console.Clear();
                }
                if (vertice <= 0)
                {
                    Console.WriteLine("Não existe grafo com 0 vértices ou com um número menor que 0 de vértices!!");
                    Console.ReadKey();
                }
            }

            grafos matriz = new grafos();

            matriz.grafo(vertice);



            int cont    = 0;
            int tamanho = 0;
            int opcao   = 0;

            string[] cidades = new string[] { "Betim", "Belo Horizonte", "Caeté", "Contagem", "Ibirité", "Lagoa Santa", "Nova Lima", "Pedro Leopoldo",
                                              "Raposos", "Ribeirão das Neves", "Rio Acima", "Sabará", "Santa Luzia", "Vespasiano", "Brumadinho", "Esmeraldas", "Igarapé", "Mateus Leme", "Arcos", "Governardor Valadares" };


            while (opcao != 7)
            {
                if (cont == 1)
                {
                    vertice = tamanho;
                }
                Console.Clear();
                Console.WriteLine("1 - Criar arestas.");
                Console.WriteLine("2 - Remover aresta.");
                Console.WriteLine("3 - Reiniciar grafo.");
                Console.WriteLine("4 - Mostrar Grafo.");
                Console.WriteLine("5 - Busca em largura");
                Console.WriteLine("6 - Ler arquivo txt");
                Console.WriteLine("7 - Sair");
                try
                {
                    Console.Write("Escolha uma opção : ");
                    opcao = int.Parse(Console.ReadLine());
                }
                catch (System.FormatException)
                {
                    Console.WriteLine("\n\nDigite uma opção válida!!");
                    opcao = 0;
                    Console.ReadKey();
                }

                switch (opcao)
                {
                case 1:
                    Console.Clear();
                    Console.WriteLine("\n Cidades e seus respectivos vértices :");

                    for (int i = 1; i <= vertice; i++)
                    {
                        Console.WriteLine("\n {0} = Vértice {1}", cidades[i - 1], i);
                    }
                    Console.WriteLine("\n Pressione enter para continuar!");
                    Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine(" Digite as cidades que serão adjacentes entre sí: ");
                    Console.WriteLine(" ================================================");

                    try
                    {
                        Console.Write("\n\n Vertice 1 : ");
                        int vertice1 = int.Parse(Console.ReadLine());

                        Console.Write("\n\n Vertice 2 : ");
                        int vertice2 = int.Parse(Console.ReadLine());

                        matriz.arestas(vertice1, vertice2);
                    }
                    catch (System.FormatException)
                    {
                        Console.WriteLine("\n\n Formato Inválido!!");
                        Console.WriteLine("\n Pressione enter para continuar");
                        Console.ReadKey();
                    }

                    break;

                case 2:
                    Console.Clear();
                    Console.WriteLine("\n Cidades e seus respectivos vértices :");

                    for (int i = 1; i <= vertice; i++)
                    {
                        Console.WriteLine("\n {0} = Vértice {1}", cidades[i - 1], i);
                    }
                    Console.WriteLine("\n Pressione enter para continuar!");
                    Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine(" Digite as vertices que terão arestas removidas");
                    Console.WriteLine(" ==============================================");
                    try
                    {
                        Console.Write("\n\n Vertice 1 : ");
                        int verticeRemover1 = int.Parse(Console.ReadLine());
                        Console.Write("\n\n Vertice 2 : ");
                        int verticeRemover2 = int.Parse(Console.ReadLine());
                        matriz.removerAresstas(verticeRemover1, verticeRemover2);
                    }
                    catch (System.FormatException)
                    {
                        Console.WriteLine("\n\n Formato Inválido!!");
                        Console.WriteLine("\n Pressione enter para continuar");
                        Console.ReadKey();
                    }

                    break;

                case 3:
                    Console.Clear();
                    matriz.Reiniciar(vertice);
                    break;

                case 4:
                    Console.Clear();
                    matriz.mostrar(vertice);
                    break;

                case 5:
                    matriz.Busca(vertice, cidades);
                    break;

                case 6:
                    Console.Clear();
                    Console.Write(" Essa opcão irá criar um novo grafo de acordo com os parametros passados no arquivo txt.\n\n Pressione S para continuar ou N para cancelar: ");
                    string escolha = Console.ReadLine();

                    if (escolha.ToUpper() == "N")
                    {
                        break;
                    }
                    if (escolha.ToUpper() == "S")
                    {
                        cont++;
                        string   path  = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), @"in.txt");
                        string   text  = System.IO.File.ReadAllText(path);
                        string[] lines = text.Split('\n');
                        string[] aux   = new string[lines.Length];
                        tamanho = int.Parse(lines[0]);

                        matriz.grafo(tamanho);


                        for (int i = 0; i < lines.Length - 3; i++)
                        {
                            aux[i] = lines[i + 1];
                            string[] x = aux[i].Split(';');
                            matriz.arestas(Convert.ToInt32(x[0]), Convert.ToInt32(x[1]));
                        }
                        Console.Clear();
                        Console.WriteLine("Matriz alterada com Sucesso!!");
                        Console.WriteLine("Pressione Enter para voltar ao menu principal.");
                        Console.ReadKey();
                    }

                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Opção Inválida!!!");
                        Console.WriteLine("Pressione Enter para voltar ao menu principal.");
                        Console.ReadKey();
                    }

                    break;
                }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Digite o número de vértices : ");
            int    vertice = int.Parse(Console.ReadLine());
            grafos matriz  = new grafos(vertice);

            int opcao = 0;


            while (opcao != 8)
            {
                Console.Clear();
                Console.WriteLine("1 - Criar arestas.");
                Console.WriteLine("2 - Remover aresta.");
                Console.WriteLine("3 - Mostrar Grafo.");
                Console.WriteLine("4 - Grafo Completo.");
                Console.WriteLine("5 - Totalmente desconexo.");
                Console.WriteLine("6 - Gerar grafo completo");
                Console.WriteLine("7 - Euleriano.");
                Console.WriteLine("8 - Sair");
                Console.Write("Escolha uma opção : ");
                opcao = int.Parse(Console.ReadLine());

                switch (opcao)
                {
                case 1:

                    Console.Clear();
                    Console.WriteLine(" Digite as vertices que terão arestas");
                    Console.WriteLine(" ====================================");
                    Console.Write("\n\n Vertice 1 : ");
                    int vertice1 = int.Parse(Console.ReadLine());
                    Console.Write("\n\n Vertice 2 : ");
                    int vertice2 = int.Parse(Console.ReadLine());


                    matriz.arestas(vertice1, vertice2);
                    break;

                case 2:
                    Console.Clear();
                    Console.WriteLine(" Digite as vertices que terão arestas removidas");
                    Console.WriteLine(" ==============================================");
                    Console.Write("\n\n Vertice 1 : ");
                    int verticeRemover1 = int.Parse(Console.ReadLine());
                    Console.Write("\n\n Vertice 2 : ");
                    int verticeRemover2 = int.Parse(Console.ReadLine());


                    matriz.removerAresstas(verticeRemover1, verticeRemover2);

                    break;

                case 3:
                    Console.Clear();
                    matriz.mostrar(vertice);
                    break;

                case 4:
                    Console.Clear();

                    if (matriz.Completo(vertice))
                    {
                        Console.WriteLine("O grafo é completo");
                    }
                    else
                    {
                        Console.WriteLine("O grafo não é completo");
                    }

                    Console.ReadLine();
                    break;

                case 5:
                    Console.Clear();

                    if (matriz.desconexo(vertice))
                    {
                        Console.WriteLine("O grafo não é desconexo");
                    }
                    else
                    {
                        Console.WriteLine("O grafo é desconexo");
                    }

                    Console.ReadLine();
                    break;

                case 6:
                    Console.Clear();
                    matriz.grafoCompleto(vertice);


                    break;

                case 7:
                    Console.Clear();

                    if (matriz.desconexo(vertice))
                    {
                        Console.WriteLine("O grafo não é euleriano");
                    }
                    else
                    {
                        Console.WriteLine("O grafo é euleriano");
                    }

                    Console.ReadLine();
                    break;
                }
            }
        }