//сложение дробей с последующим сокращением public static Drob operator +(Drob d1, Drob d2) { Drob d = new Drob(); d.chisl = d1.chisl * d2.znam + d2.chisl * d1.znam; d.znam = d1.znam * d2.znam; DecDrob(ref d); return(d); }
//вычисление выражения ао методу горнера public static Drob Calculated(Drob[] mas) { Drob res = new Drob(); res.chisl = mas[7].chisl; res.znam = mas[7].znam; for (int i = 6; i >= 0; i--) { res = res * mas[8] + mas[i]; } return(res); }
//1 итерация программы public static void Actions() { //ввод значений Console.WriteLine("Чтобы вычислить многочлен введите 9 дробей (n - числитель, d - знаменатель)"); Drob[] mas = new Drob[9]; // 8 дробей n/d и дробь a/b for (int i = 0; i < 8; i++) { mas[i] = new Drob(InputIntNumber("\nВведите n" + i), InputIntNumber("Введите d" + i, "Нужно целое ненулевое значение", znam: true)); } mas[8] = new Drob(InputIntNumber("\nВведите a"), InputIntNumber("Введите b", "Нужно целое ненулевое значение", znam: true)); //сокращение дробей for (int i = 0; i < 9; i++) { Drob.DecDrob(ref mas[i]); } //вычисление выражения и вывод ответа Console.WriteLine("\nРезультат вычисления: " + Drob.Calculated(mas).ToString()); }
//сокращение дроби public static void DecDrob(ref Drob dr) { if (dr.chisl != 0) { bool ok = true; while (ok) { ok = false; for (int i = 2; i <= dr.chisl; i++) { if (dr.chisl % i == 0 && dr.znam % i == 0) { dr.chisl = dr.chisl / i; dr.znam = dr.znam / i; ok = true; break; } } } } }