Exemplo n.º 1
0
        static void Main()
        {
            IOConsole console = new IOConsole();

            while (true)
            {
                try
                {
                    Console.Clear();
                    if (console.CMatrix == null)
                    {
                        Console.WriteLine("*** There is no flow matrix to work with ***\n");
                    }
                    else
                    {
                        Console.WriteLine("*** The matrix is ready ***\n");
                    }
                    Console.WriteLine("1. Read flow matrix from file");
                    Console.WriteLine("2. Console input of matrix");
                    Console.WriteLine("3. Random generating matrix");
                    Console.WriteLine("4. Matrix Output");
                    Console.WriteLine("5. Ford-Fulkerson solution");
                    Console.WriteLine("6. Dinics solution");
                    Console.WriteLine("7. Greedy search of path");
                    Console.WriteLine("8. DFS of path");
                    Console.WriteLine("9. Experimental research");
                    Console.WriteLine("10. Exit");
                    var key = Console.ReadLine();
                    Console.Clear();
                    switch (key)
                    {
                    case "1":
                        if (console.CMatrix != null)
                        {
                            Console.WriteLine("You have already got a matrix. " +
                                              "Do you really want to rewrite it? [y/n]");
                            char k;
                            do
                            {
                                k = Console.ReadKey().KeyChar;
                            } while (k != 'n' && k != 'y');
                            if (k == 'n')
                            {
                                break;
                            }
                        }

                        Console.WriteLine("\nEnter the filename: ");
                        var filename = Console.ReadLine();
                        if (!File.Exists(filename))
                        {
                            Console.WriteLine("The file \"" + filename + "\" does not exist");
                            Console.ReadKey();
                            continue;
                        }
                        console = new IOConsole(filename);
                        console.ReadMatrix();
                        console.WriteMatrix(console.CMatrix);
                        Console.ReadKey();
                        break;

                    case "2":
                        if (console.CMatrix != null)
                        {
                            Console.WriteLine("You have already got a matrix. " +
                                              "Do you really want to rewrite it? [y/n]");
                            char k;
                            do
                            {
                                k = Console.ReadKey().KeyChar;
                            } while (k != 'n' && k != 'y');
                            if (k == 'n')
                            {
                                break;
                            }
                        }

                        console = new IOConsole();
                        console.ConsoleInputMatrix();
                        console.WriteMatrix(console.CMatrix);
                        Console.ReadKey();
                        break;

                    case "3":
                        if (console.CMatrix != null)
                        {
                            Console.WriteLine("You have already got a matrix. " +
                                              "Do you really want to rewrite it? [y/n]");
                            char k;
                            do
                            {
                                k = Console.ReadKey().KeyChar;
                            } while (k != 'n' && k != 'y');
                            if (k == 'n')
                            {
                                break;
                            }
                        }

                        console = new IOConsole();
                        int bound = console.RandomInput();
                        console.RandomGenerate(bound);
                        console.WriteMatrix(console.CMatrix);
                        Console.ReadKey();
                        break;

                    case "4":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("You haven`t got any matrix to use");
                        }
                        else
                        {
                            console.WriteMatrix(console.CMatrix);
                        }
                        Console.ReadKey();
                        break;

                    case "5":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("You haven`t got any matrix to use");
                            Console.ReadKey();
                            continue;
                        }

                        Console.WriteLine("Ford-Fulkerson solution:");
                        Solver solve = new Solver(console.From - 1, console.To - 1, console.N, console.CMatrix);
                        console.WriteFlowMatrixToConsole(console.CMatrix, console.GetNullMatrix());
                        solve.FordFulkerson();

                        Console.WriteLine($"Result: Max F = {solve.F}");
                        console.WriteFlowMatrixToConsole(console.CMatrix, solve.FlowMatrix.FlowToIntMatrix());
                        Console.ReadKey();
                        break;

                    case "6":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("You haven`t got any matrix to use");
                            Console.ReadKey();
                            continue;
                        }

                        Console.WriteLine("\nDinics solution:");
                        Dinics dinics = new Dinics(console.From - 1, console.To - 1, console.N, console.CMatrix);
                        console.WriteFlowMatrixToConsole(console.CMatrix, console.GetNullMatrix());
                        dinics.Run();

                        Console.WriteLine("\nResult: Max F = " + dinics.F.ToString());
                        console.WriteFlowMatrixToConsole(console.CMatrix, dinics.FlowMatrix.FlowToIntMatrix());
                        Console.ReadKey();
                        break;

                    case "7":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("You haven`t got any matrix to use");
                            Console.ReadKey();
                            continue;
                        }

                        Console.WriteLine("\nGreedy solution:");
                        var greedy = new Greedy(console.CMatrix, console.N, console.From - 1, console.To - 1);
                        (int costGreedy, List <int> pathGreedy) = greedy.GreedyAlgorithm();
                        console.WriteListToConsole(pathGreedy, costGreedy);
                        Console.ReadKey();
                        break;

                    case "8":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("You haven`t got any matrix to use");
                            Console.ReadKey();
                            continue;
                        }

                        Console.WriteLine("\nDFS solution:");
                        var dfs = new DFS(console.CMatrix, console.N, console.From - 1, console.To - 1);
                        (int costDFS, List <int> pathDFS) = dfs.Run();
                        console.WriteListToConsole(pathDFS, costDFS);
                        Console.ReadKey();
                        break;

                    case "9":
                        console = new IOConsole();
                        Research experimentor = new Research();
                        experimentor.Menu();
                        break;

                    case "10":
                        Environment.Exit(0);
                        break;

                    default:
                        Console.WriteLine("Invalid input");
                        Console.ReadKey();
                        break;
                    }
                }catch (StackOverflowException e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
            }
        }
Exemplo n.º 2
0
        static void Main()
        {
            IOConsole console = new IOConsole();

            while (true)
            {
                try
                {
                    Console.Clear();
                    if (console.CMatrix == null)
                    {
                        Console.WriteLine("*** Немає матрицi ***\n");
                    }
                    else
                    {
                        Console.WriteLine("*** Матриця готова ***\n");
                    }
                    Console.WriteLine("1. Зчитати матрицю з файлу");
                    // Console.WriteLine("2. Console input of matrix");
                    //  Console.WriteLine("3. Random generating matrix");
                    Console.WriteLine("2. Вивести матрицю ");
                    Console.WriteLine("3. Вирiшення методом Форда-Фалкерсона");
                    // Console.WriteLine("6. Dinics solution");
                    //Console.WriteLine("7. Greedy search of path");
                    //Console.WriteLine("8. DFS of path");
                    //Console.WriteLine("9. Experimental research");
                    Console.WriteLine("4. Вийти");
                    var key = Console.ReadLine();
                    Console.Clear();
                    switch (key)
                    {
                    case "1":
                        if (console.CMatrix != null)
                        {
                            Console.WriteLine("Матриця вже є! " +
                                              "Перезаписати її? [y/n]");
                            char k;
                            do
                            {
                                k = Console.ReadKey().KeyChar;
                            } while (k != 'n' && k != 'y');
                            if (k == 'n')
                            {
                                break;
                            }
                        }

                        Console.WriteLine("\nВвести назву файлу: ");
                        var filename = Console.ReadLine();
                        if (!File.Exists(filename))
                        {
                            Console.WriteLine("Файл з назвою  \"" + filename + "\" не iснує");
                            Console.ReadKey();
                            continue;
                        }
                        console = new IOConsole(filename);
                        console.ReadMatrix();
                        console.WriteMatrix(console.CMatrix);
                        Console.ReadKey();
                        break;
                    //case "2":
                    //    if (console.CMatrix != null)
                    //    {
                    //        Console.WriteLine("You have already got a matrix. " +
                    //          "Do you really want to rewrite it? [y/n]");
                    //        char k;
                    //        do
                    //        {
                    //            k = Console.ReadKey().KeyChar;
                    //        } while (k != 'n' && k != 'y');
                    //        if (k == 'n')
                    //            break;
                    //    }

                    //    console = new IOConsole();
                    //    console.ConsoleInputMatrix();
                    //    console.WriteMatrix(console.CMatrix);
                    //    Console.ReadKey();
                    //    break;
                    //case "3":
                    //    if (console.CMatrix != null)
                    //    {
                    //        Console.WriteLine("You have already got a matrix. " +
                    //          "Do you really want to rewrite it? [y/n]");
                    //        char k;
                    //        do
                    //        {
                    //            k = Console.ReadKey().KeyChar;
                    //        } while (k != 'n' && k != 'y');
                    //        if (k == 'n')
                    //            break;
                    //    }

                    //    console = new IOConsole();
                    //    int bound = console.RandomInput();
                    //    console.RandomGenerate(bound);
                    //    console.WriteMatrix(console.CMatrix);
                    //    Console.ReadKey();
                    //    break;
                    case "2":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("Немає матрицi");
                        }
                        else
                        {
                            console.WriteMatrix(console.CMatrix);
                        }
                        Console.ReadKey();
                        break;

                    case "3":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("Немає матрицi");
                            Console.ReadKey();
                            continue;
                        }

                        Console.WriteLine("Вирiшення методом Форда-Фалкерсона:");
                        Solver solve = new Solver(console.From - 1, console.To - 1, console.N, console.CMatrix);
                        console.WriteFlowMatrixToConsole(console.CMatrix, console.GetNullMatrix());
                        solve.FordFulkerson();

                        Console.WriteLine($"Результат: Max F = {solve.F}");
                        console.WriteFlowMatrixToConsole(console.CMatrix, solve.FlowMatrix.FlowToIntMatrix());
                        Console.ReadKey();
                        break;
                    //case "3":
                    //    if (console.CMatrix == null)
                    //    {
                    //        Console.WriteLine("Немає матрицi");
                    //        Console.ReadKey();
                    //        continue;
                    //    }

                    //    Console.WriteLine("\nDinics solution:");
                    //    Dinics dinics = new Dinics(console.From - 1, console.To - 1, console.N, console.CMatrix);
                    //    console.WriteFlowMatrixToConsole(console.CMatrix, console.GetNullMatrix());
                    //    dinics.Run();

                    //    Console.WriteLine("\nResult: Max F = " + dinics.F.ToString());
                    //    console.WriteFlowMatrixToConsole(console.CMatrix, dinics.FlowMatrix.FlowToIntMatrix());
                    //    Console.ReadKey();
                    //    break;
                    //case "7":
                    //    if (console.CMatrix == null)
                    //    {
                    //        Console.WriteLine("You haven`t got any matrix to use");
                    //        Console.ReadKey();
                    //        continue;
                    //    }

                    //    Console.WriteLine("\nGreedy solution:");
                    //    var greedy = new Greedy(console.CMatrix, console.N, console.From - 1, console.To - 1);
                    //    (int costGreedy, List<int> pathGreedy) = greedy.GreedyAlgorithm();
                    //    console.WriteListToConsole(pathGreedy, costGreedy);
                    //    Console.ReadKey();
                    //    break;
                    //case "8":
                    //    if (console.CMatrix == null)
                    //    {
                    //        Console.WriteLine("You haven`t got any matrix to use");
                    //        Console.ReadKey();
                    //        continue;
                    //    }

                    //    Console.WriteLine("\nDFS solution:");
                    //    var dfs = new DFS(console.CMatrix, console.N, console.From - 1, console.To - 1);
                    //    (int costDFS, List<int> pathDFS) = dfs.Run();
                    //    console.WriteListToConsole(pathDFS, costDFS);
                    //    Console.ReadKey();
                    //    break;
                    //case "9":
                    //    console = new IOConsole();
                    //    Research experimentor = new Research();
                    //    experimentor.Menu();
                    //    break;
                    case "4":
                        Environment.Exit(0);
                        break;

                    default:
                        Console.WriteLine("Неправильний вибiр");
                        Console.ReadKey();
                        break;
                    }
                }catch (StackOverflowException e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
            }
        }
Exemplo n.º 3
0
        static void Main()
        {
            IOConsole console = new IOConsole();

            while (true)
            {
                try
                {
                    Console.Clear();
                    if (console.CMatrix == null)
                    {
                        Console.WriteLine("*** Немає матрицi ***\n");
                    }
                    else
                    {
                        Console.WriteLine("*** Матриця готова ***\n");
                    }
                    Console.WriteLine("1. Зчитати матрицю з файлу");

                    Console.WriteLine("2. Вивести матрицю ");
                    Console.WriteLine("3. Вирiшення методом Форда-Фалкерсона");

                    Console.WriteLine("4. Вийти");
                    var key = Console.ReadLine();
                    Console.Clear();
                    switch (key)
                    {
                    case "1":
                        if (console.CMatrix != null)
                        {
                            Console.WriteLine("Матриця вже є! " +
                                              "Перезаписати її? [y/n]");
                            char k;
                            do
                            {
                                k = Console.ReadKey().KeyChar;
                            } while (k != 'n' && k != 'y');
                            if (k == 'n')
                            {
                                break;
                            }
                        }

                        Console.WriteLine("\nВвести назву файлу: ");
                        var filename = Console.ReadLine();
                        if (!File.Exists(filename))
                        {
                            Console.WriteLine("Файл з назвою  \"" + filename + "\" не iснує");
                            Console.ReadKey();
                            continue;
                        }
                        console = new IOConsole(filename);
                        console.ReadMatrix();
                        console.WriteMatrix(console.CMatrix);
                        Console.ReadKey();
                        break;

                    case "2":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("Немає матрицi");
                        }
                        else
                        {
                            console.WriteMatrix(console.CMatrix);
                        }
                        Console.ReadKey();
                        break;

                    case "3":
                        if (console.CMatrix == null)
                        {
                            Console.WriteLine("Немає матрицi");
                            Console.ReadKey();
                            continue;
                        }

                        Console.WriteLine("Вирiшення методом Форда-Фалкерсона:");
                        Solver solve = new Solver(console.From - 1, console.To - 1, console.N, console.CMatrix);
                        console.WriteFlowMatrixToConsole(console.CMatrix, console.GetNullMatrix());
                        solve.FordFulkerson();

                        Console.WriteLine($"Результат: Max F = {solve.F}");
                        console.WriteFlowMatrixToConsole(console.CMatrix, solve.FlowMatrix.FlowToIntMatrix());
                        Console.ReadKey();
                        break;

                    case "4":
                        Environment.Exit(0);
                        break;

                    default:
                        Console.WriteLine("Неправильний вибiр");
                        Console.ReadKey();
                        break;
                    }
                }catch (StackOverflowException e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
            }
        }