Пример #1
0
 public Uravnenie Check()
 {
     if (Size != 0)
     {
         Uravnenie ur       = arr[0];
         double    currentX = 0;
         for (int i = 0; i < arr.Length; i++)
         {
             arr[i].Calculate();
             if (arr[i].X1 != 0 && arr[i].X2 != 0)
             {
                 if (Math.Abs(arr[i].X1) > Math.Abs(arr[i].X2))
                 {
                     if (Math.Abs(arr[i].X1) > currentX)
                     {
                         currentX = Math.Abs(arr[i].X1);
                         ur       = arr[i];
                     }
                 }
                 else
                 {
                     if (Math.Abs(arr[i].X2) > currentX)
                     {
                         currentX = Math.Abs(arr[i].X2);
                         ur       = arr[i];
                     }
                 }
             }
         }
         return(ur);
     }
     return(null);
 }
Пример #2
0
 public UravnenieArray(int size)
 {
     Size = size;
     if (size != 0)
     {
         Random rand = new Random();
         arr = new Uravnenie[size];
         for (int i = 0; i < size; i++)
         {
             arr[i] = new Uravnenie(rand.Next(0, 20), rand.Next(0, 20), rand.Next(0, 20));
         }
     }
 }
Пример #3
0
 public UravnenieArray(int size, int a, int b, int c)
 {
     arr  = new Uravnenie[size];
     Size = size;
     if (size != 0)
     {
         arr[0] = new Uravnenie(a, b, c);
         for (int i = 1; i < arr.Length; i++)
         {
             Program.Input(out a, out b, out c);
             arr[i] = new Uravnenie(a, b, c);
         }
     }
 }
Пример #4
0
        public static string Calculate(Uravnenie s)
        {
            double discriminant = Math.Pow(s.B, 2) - 4 * s.A * s.C;

            if (discriminant < 0)
            {
                return("\nНет решений.");
            }
            else if (discriminant == 0)
            {
                s.X1 = (-s.B + Math.Sqrt(discriminant)) / (2 * s.A);
                s.X2 = (-s.B - Math.Sqrt(discriminant)) / (2 * s.A);
                return($"\nx1 = {s.X1}, x2 = {s.X2}");
            }
            else
            {
                s.X1 = (-s.B + Math.Sqrt(discriminant)) / (2 * s.A);
                s.X2 = (-s.B - Math.Sqrt(discriminant)) / (2 * s.A);
                return($"\nx1 = {s.X1}, x2 = {s.X2}");
            }
        }
Пример #5
0
        public override bool Equals(object obj)
        {
            Uravnenie ur = (Uravnenie)obj;

            return(this.A == ur.A && this.B == ur.B && this.C == ur.C);
        }
Пример #6
0
 public UravnenieArray()
 {
     Size   = 1;
     arr    = new Uravnenie[1];
     arr[0] = new Uravnenie(1, 1, 1);
 }
Пример #7
0
        static void Main(string[] args)
        {
            int count;

            Console.WriteLine("Выберите пункт меню.");
            Console.WriteLine("1.Часть 1.\n2.Часть 2.\n0.Выйти");
            while (!int.TryParse(Console.ReadLine(), out count) || count < 0 || count > 3)
            {
                Console.WriteLine("Неверный ввод, повторите!");
            }
            switch (count)
            {
            case 0:
                return;

            case 1:
                int a, b, c;
                int a1, b1, c1;

                Console.WriteLine("По очереди введите элементы a, b, c для первого уравнения.");
                Input(out a, out b, out c);
                Uravnenie uravnenie = new Uravnenie(a, b, c);
                Console.WriteLine("По очереди введите элементы a, b, c для второго уравнения.");
                Input(out a1, out b1, out c1);
                Uravnenie uravnenie_2 = new Uravnenie(a1, b1, c1);

                Console.WriteLine(uravnenie.Show());
                uravnenie.Calculate();
                Console.WriteLine($"\nКорни уравнения: x1 = {uravnenie.X1}, x2 = {uravnenie.X2}");
                Console.WriteLine(Uravnenie.Calculate(new Uravnenie(a, b, c)));
                Console.WriteLine("Унарные операции:\n");
                uravnenie++;
                Console.WriteLine("++:");
                Console.WriteLine(uravnenie.Show());
                Console.WriteLine("\n");
                uravnenie--;
                Console.WriteLine("--:");
                Console.WriteLine(uravnenie.Show());
                Console.WriteLine("\n(double):");
                double x = (double)uravnenie;
                Console.WriteLine($"\nx = {x}");
                Console.WriteLine("(bool):");
                bool advise = (bool)uravnenie;
                Console.WriteLine($"Решения существуют: {advise}\n");

                Console.WriteLine(@"Уравнения равны: {0}", uravnenie == uravnenie_2);

                Console.WriteLine(@"Объектов создано: {0}", Uravnenie.count);

                break;

            case 2:

                int size, size1;
                a = 0;
                b = 0;
                c = 0;
                Console.WriteLine("Введите размер для списка генерируемых уравнений:");
                Input(out size);
                Console.WriteLine("Введите размер для списка генерируемых уравнений:");
                Input(out size1);
                if (size1 > 0)
                {
                    Console.WriteLine("Вводите по очереди элементы a, b, c для уравнений:");
                    Input(out a, out b, out c);
                }


                UravnenieArray arr          = new UravnenieArray();
                UravnenieArray random_arr   = new UravnenieArray(size);
                UravnenieArray keyboard_arr = new UravnenieArray(size1, a, b, c);

                Console.WriteLine("Конструктор без параметров:\n");
                Console.WriteLine(arr.Show());
                Console.WriteLine("\nКонструктор с рандомными значениями:\n");
                Console.WriteLine(random_arr.Show());
                Console.WriteLine("\nКонструктор с элементами с клавиатуры:\n");
                Console.WriteLine(keyboard_arr.Show());



                if (size1 != 0)
                {
                    Uravnenie large = keyboard_arr.Check();
                    Console.WriteLine($"\nУравнение с наибольшим корнем:");
                    Console.WriteLine(large.Show());
                    large.Calculate();
                    if ((bool)large)
                    {
                        Console.WriteLine($"\nКорни уравнения: x1 = {large.X1}, x2 = {large.X2}");
                        Console.WriteLine($"\nНаибольший корень по абсолютному значению:");
                        if (Math.Abs(large.X1) > Math.Abs(large.X1))
                        {
                            Console.WriteLine(Math.Abs(large.X1));
                        }
                        else
                        {
                            Console.WriteLine(Math.Abs(large.X2));
                        }
                    }
                }

                break;
            }
            Console.ReadLine();
        }