private static void Lecture7DZ2() { // Домашнее задание // - Реализовать неизменяемую структуру - простая дробь(x / y). // - Числитель и знаменатель - целые числа. Знаменатель - всегда положительный. Ноль - 0 / x. // - Реализовать операции сложения, вычитания, умножения, деления. // - Реализовать интерфейс IComparable. // - Создать массив из N случайных дробей, отсортировать по возрастанию. // - Найти сумму всех дробей. SimpleFraction fraction1 = new SimpleFraction(2, 3); SimpleFraction fraction2 = new SimpleFraction(1, 5); SimpleFraction fraction3 = new SimpleFraction(3, 7); SimpleFraction fraction4 = new SimpleFraction(1, 2); Console.WriteLine($"Операция вычитания: {fraction1} - {fraction3} = {fraction1 - fraction3}"); Console.WriteLine($"Операция деления: {fraction3} / {fraction4} = {fraction3 / fraction4}"); Console.WriteLine($"Операция сложения: {fraction2} + {fraction4} = {fraction2 + fraction4}"); Console.WriteLine($"Операция умножения: {fraction2} * {fraction4} = {fraction2 * fraction4}"); Console.WriteLine(); // Ноль - 0 / x. Console.WriteLine($"Ноль = {SimpleFraction.Zero}"); List <SimpleFraction> fractions = new List <SimpleFraction> { fraction1, fraction2, fraction3, fraction4 }; fractions.Sort(); SimpleFraction sumSimpleFraction = new SimpleFraction(); foreach (SimpleFraction fraction in fractions) { Console.Write($"{fraction} \t"); sumSimpleFraction += fraction; } Console.WriteLine(); Console.WriteLine($"Сумма всех дробей = {sumSimpleFraction}"); Console.ReadKey(); }
public int CompareTo(object obj) { SimpleFraction fraction = (SimpleFraction)obj; var fraction1 = ReductionDenominator(this, fraction.Denominator); var fraction2 = ReductionDenominator(fraction, this.Denominator); if (fraction1.Numerator < fraction2.Numerator) { return(-1); } if (fraction1.Numerator > fraction2.Numerator) { return(1); } return(0); }
public static SimpleFraction operator /(SimpleFraction leftFraction, SimpleFraction rightFraction) { SimpleFraction resultFraction = new SimpleFraction((int)(leftFraction.Numerator * rightFraction.Denominator), (uint)(leftFraction.Denominator * rightFraction.Numerator)); return(resultFraction); }