static void Main(string[] args) { Console.WriteLine("Обыкновенные Дроби"); try { int a, b, c, d; Console.Write("Введите числитель первой дроби: "); a = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите знаменатель первой дроби: "); b = Convert.ToInt32(Console.ReadLine()); Fractions a1 = new Fractions(a, b); string a1String = Fractions.ToString(a1); Console.Write("Введите числитель второй дроби: "); c = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите знаменатель второй дроби: "); d = Convert.ToInt32(Console.ReadLine()); Fractions a2 = new Fractions(c, d); string a2String = Fractions.ToString(a2); Fractions add = Fractions.AddFractions(a1, a2); string addString = Fractions.ToString(add); Fractions sub = Fractions.SubFractions(a1, a2); string subString = Fractions.ToString(sub); Fractions multi = Fractions.MultiFractions(a1, a2); string multiString = Fractions.ToString(multi); Fractions div = Fractions.DivFractions(a1, a2); string divString = Fractions.ToString(div); Console.WriteLine("\n1. Арифметические методы работы с дробями"); Console.WriteLine($"Cложение:\t{a1String}+{a2String}={addString}"); Console.WriteLine($"Вычитание:\t{a1String}-{a2String}={subString}"); Console.WriteLine($"Умножение:\t{a1String}*{a2String}={multiString}"); Console.WriteLine($"Деление:\t{a1String}:{a2String}={divString}"); Enter(); Console.WriteLine("2. Демонстрация доступа к числителю и знаменателю"); Fractions a3 = new Fractions(a1.P, a1.Q); Console.WriteLine($"до изменения:\t {Fractions.ToString(a3)}"); Console.Write("Введите числитель новой дроби: "); a3.P = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите знаменатель новой дроби: "); a3.Q = Convert.ToInt32(Console.ReadLine()); Console.WriteLine($" после:\t {Fractions.ToString(a3)}"); Enter(); Console.WriteLine("3. Десятичные дроби чисел:"); Console.WriteLine($"{a1String}={a1.DecimalFraction}"); Console.WriteLine($"{a2String}={a2.DecimalFraction}"); Console.WriteLine($"{addString}={add.DecimalFraction}"); Console.WriteLine($"{subString}={sub.DecimalFraction}"); Console.WriteLine($"{multiString}={multi.DecimalFraction}"); Console.WriteLine($"{divString}={div.DecimalFraction}"); Console.WriteLine($"{Fractions.ToString(a3)}={a3.DecimalFraction}"); Enter(); } catch (ArgumentException e) { Console.WriteLine($"{e.GetType().Name}: {e.Message}"); Enter(); } }
/// <summary> /// Метод печати обыкновенной дроби в формате p/q /// </summary> /// <param name="z"></param> /// <returns></returns> public static string ToString(Fractions z) { if (z._p == 0) { return("0"); } else { return($"{z._p}/{z._q}"); } }
/// <summary> /// Метод вычитания обыкновенных дробей /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static Fractions SubFractions(Fractions a, Fractions b) { return(new Fractions(a._p * (NOK(a._q, b._q) / a._q) - b._p * (NOK(a._q, b._q) / b._q), NOK(a._q, b._q))); }
/// <summary> /// Метод деления обыкновенных дробей /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static Fractions DivFractions(Fractions a, Fractions b) { return(new Fractions(a._p * b._q, a._q * b._p)); }
/// <summary> /// Метод умножения обыкновенных дробей /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static Fractions MultiFractions(Fractions a, Fractions b) { return(new Fractions(a._p * b._p, a._q * b._q)); }