//процедура по сокращению дроби public static Дробь SetFormat(Дробь a) { double max = 0; //выбираем что больше числитель или знаменатель if (a.числитель > a.знаменатель) { max = Math.Abs(a.знаменатель);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными } else { max = Math.Abs(a.числитель);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными } //поиск от максимума до 2 for (double i = max; i >= 2; i--) { //такого числа, поделив на которое бы делилось без //остатка и на числитель и на знаменатель if ((a.числитель % i == 0) & (a.знаменатель % i == 0)) { a.числитель = a.числитель / i; a.знаменатель = a.знаменатель / i; } } //Определяемся со знаком //если в знаменателе минус, поднимаем его наверх if ((a.знаменатель < 0)) { a.числитель = -1 * (a.числитель); a.знаменатель = Math.Abs(a.знаменатель); } return(a); //возращаем результат }
public static Дробь operator /(Дробь a, Дробь b) //деление дробей { Дробь t = new Дробь(1, 1); //создание и инициализация новой дроби t.числитель = (a.числитель / b.числитель); //числитель новой дроби t.знаменатель = a.знаменатель / b.знаменатель; //знаменатель новой дроби Дробь.SetFormat(t); //сокращаем дробь return(t); //возвращаем результат }
static void Main(string[] args) { //Основная программа Дробь a = new Дробь(4, -8); //создание объекта класса Drob Дробь b = new Дробь(2, 5); //создание объекта класса Drob Дробь c; c = a + b; Console.WriteLine(a.ToString()); Console.WriteLine(b.ToString()); Console.WriteLine("Проверка на сложение: " + a.ToString() + "+" + b.ToString() + "=" + c.ToString()); Console.ReadKey(); }
//процедура по сокращению дроби public static Дробь SetFormat(Дробь a) { double max = 0; //выбираем что больше числитель или знаменатель if (a.числитель > a.знаменатель) max = Math.Abs(a.знаменатель);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными else max = Math.Abs(a.числитель);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными //поиск от максимума до 2 for (double i = max; i >= 2; i--) { //такого числа, поделив на которое бы делилось без //остатка и на числитель и на знаменатель if ((a.числитель % i == 0) & (a.знаменатель % i == 0)) { a.числитель = a.числитель / i; a.знаменатель = a.знаменатель / i; } } //Определяемся со знаком //если в знаменателе минус, поднимаем его наверх if ((a.знаменатель < 0)) { a.числитель = -1 * (a.числитель); a.знаменатель = Math.Abs(a.знаменатель); } return (a);//возращаем результат }
static void Main(string[] args) { //Основная программа Дробь a = new Дробь(4, -8);//создание объекта класса Drob Дробь b = new Дробь(2, 5);//создание объекта класса Drob Дробь c; c = a + b; Console.WriteLine(a.ToString()); Console.WriteLine(b.ToString()); Console.WriteLine("Проверка на сложение: " + a.ToString() + "+" + b.ToString() + "=" + c.ToString()); Console.ReadKey(); }
public static Дробь operator /(Дробь a, Дробь b)//деление дробей { Дробь t = new Дробь(1, 1);//создание и инициализация новой дроби t.числитель = (a.числитель / b.числитель);//числитель новой дроби t.знаменатель = a.знаменатель / b.знаменатель;//знаменатель новой дроби Дробь.SetFormat(t);//сокращаем дробь return t;//возвращаем результат }