Exemplo n.º 1
0
 internal void OutputResultsToFile(TextWriter w, LinearSystem system, List <double> results, List <double> r) //method to output final results to a file
 {
     w.WriteLine("System: ");
     LinearSystemOperator.FileOutput(system, w);
     w.WriteLine("Results: ");
     for (int i = 0; i < system.NumberOfUnknowns; i++)
     {
         w.WriteLine($"x{i + 1} = {results[i]}; ");
     }
     w.WriteLine("Error: ");
     for (int i = 0; i < system.NumberOfUnknowns; i++)
     {
         w.WriteLine($"Error for x{i + 1} = {r[i]}");
     }
 }
Exemplo n.º 2
0
        public static void RunMenu()
        {
            uint key;

            try
            {
                Console.WriteLine("Hello! This program is designed as a calculator for linear system. This program uses direct methods such as Gauss and Cramer's method." +
                                  "To start using this program you have to enter linear system of equations. Please follow instractions!");
                LinearSystem system = LinearSystemOperator.Read();
                do
                {
                    Console.WriteLine("Press 1 to show linear system.");
                    Console.WriteLine("Press 2 to find results using Gauss Method with main element");
                    Console.WriteLine("Press 3 to find results using Gauss Method with unit diagonal");
                    Console.WriteLine("Press 4 to find results using Cramer's Method");
                    Console.WriteLine("Press 5 to enter new linear system");
                    Console.WriteLine("Press 0 to exit program");
                    Console.WriteLine("Enter key: ");
                    key = Convert.ToUInt32(Console.ReadLine());

                    switch (key)
                    {
                    case 1:
                    {
                        LinearSystemOperator.Show(system);
                        break;
                    }

                    case 2:
                    {
                        LinearSystemOperator.Show(system);
                        MainElementGaussMethod gaussMethod = new MainElementGaussMethod();
                        List <double>          results     = gaussMethod.FinalCalculations(system);
                        if (results != null)
                        {
                            List <double> error = gaussMethod.R(system, results);
                            Console.WriteLine("Please, enter 1 if you want to save results to file, press enter to go back to menu: ");
                            if (Int32.TryParse(Console.ReadLine(), out int saveKey) && saveKey == 1)
                            {
                                Console.WriteLine("Please, enter name of file: ");
                                string fileName = Console.ReadLine();
                                using (StreamWriter w = new StreamWriter(fileName))
                                {
                                    gaussMethod.OutputResultsToFile(w, system, results, error);
                                }
                            }
                        }
                        break;
                    }

                    case 3:
                    {
                        LinearSystemOperator.Show(system);
                        var           gaussMethod = new UnitDiagonalGaussMethod();
                        List <double> results     = gaussMethod.FinalCalculations(system);
                        if (results != null)
                        {
                            List <double> error = gaussMethod.R(system, results);
                            Console.WriteLine("Please, enter 1 if you want to save results to file, press enter to go back to menu: ");
                            if (Int32.TryParse(Console.ReadLine(), out int saveKey) && saveKey == 1)
                            {
                                Console.WriteLine("Please, enter name of file: ");
                                string fileName = Console.ReadLine();
                                using (StreamWriter w = new StreamWriter(fileName))
                                {
                                    gaussMethod.OutputResultsToFile(w, system, results, error);
                                }
                            }
                        }
                        break;
                    }

                    case 4:
                    {
                        LinearSystemOperator.Show(system);
                        var           method  = new CramersMethod();
                        List <double> results = method.FinalCalculations(system);
                        if (results != null)
                        {
                            List <double> error = method.R(system, results);
                            Console.WriteLine("Please, enter 1 if you want to save results to file, press enter to go back to menu: ");
                            if (Int32.TryParse(Console.ReadLine(), out int saveKey) && saveKey == 1)
                            {
                                Console.WriteLine("Please, enter name of file: ");
                                string fileName = Console.ReadLine();
                                using (StreamWriter w = new StreamWriter(fileName))
                                {
                                    method.OutputResultsToFile(w, system, results, error);
                                }
                            }
                        }
                        break;
                    }

                    case 5:
                    {
                        system = LinearSystemOperator.Read();
                        break;
                    }

                    case 0:
                        break;
                    }
                } while (key != 0);
            }
            catch (ArgumentException)
            {
                Console.WriteLine("You entered inappropriate value, the program will restart now, please follow instructions.");
                Menu.RunMenu();
            }
            catch (Exception ex)
            {
                Console.WriteLine("An error occured during while program was running, please follow instructions");
                Console.WriteLine($"{ ex.GetType()} says { ex.Message}");
                Menu.RunMenu();
            }
        }