public static Drob DelenDrob(Drob a, Drob b) { int x = a.X * b.Y; int y = a.Y * b.X; Drob c = new Drob(x, y); return(c); }
public static Drob MultiDrob(Drob a, Drob b) { int x = a.X * b.X; int y = a.Y * b.Y; Drob c = new Drob(x, y); return(c); }
/* * 3. *Описать класс дробей - рациональных чисел, являющихся отношением двух целых чисел. Предусмотреть методы сложения, вычитания, умножения и деления дробей. Написать программу, демонстрирующую все разработанные элементы класса. Достаточно решить 2 задачи. Все программы сделать в одном решении. * ** Добавить проверку, чтобы знаменатель не равнялся 0. Выбрасывать исключение **ArgumentException("Знаменатель не может быть равен 0"); **Добавить упрощение дробей. */ static void DZ3_3() { Drob Dr1 = new Drob(1, 3); Drob Dr2 = new Drob(4, 6); Drob DrSum = Drob.SummDrob(Dr1, Dr2); Drob DrMult = Drob.MultiDrob(Dr1, Dr2); Drob DrRazn = Drob.RaznDrob(Dr1, Dr2); Drob DrDelen = Drob.DelenDrob(Dr1, Dr2); Console.WriteLine($"Имеются дроби {Dr1.X}/{Dr1.Y} и {Dr2.X}/{Dr2.Y} \n сумма их равна {DrSum.X}/{DrSum.Y} \n произведение их равно {DrMult.X}/{DrMult.Y} \n разность их равна { DrRazn.X}/{ DrRazn.Y}, \n деление их равно { DrDelen.X}/{ DrDelen.Y}."); }
public static Drob RaznDrob(Drob a, Drob b) { int x; int y; if (a.Y == b.Y) { x = a.X - b.X; y = a.Y; } else if (a.Y > b.Y) { if (DelBezOst(a.Y, b.Y) == true) { y = a.Y; x = a.X - b.X * Kratnost(a.Y, b.Y); } else { y = a.Y * b.Y; x = a.X * b.Y - b.X * a.Y; } } else { if (DelBezOst(b.Y, a.Y) == true) { y = b.Y; x = a.X * Kratnost(b.Y, a.Y) - b.X; } else { y = a.Y * b.Y; x = a.X * b.Y - b.X * a.Y; } } Drob c = new Drob(x, y); return(c); }
public void Class_Drob() { //конструкторы Drob d1 = new Drob(); Assert.IsTrue(d1.chisl == d1.znam && d1.znam == 1); d1 = new Drob(1, 2); Assert.IsNotNull(d1); //сокращение дроби d1.chisl = 0; d1.znam = 5; Drob.DecDrob(ref d1); Assert.IsTrue(d1.chisl == 0 && d1.znam == 5); d1.chisl = 50; d1.znam = 5; Drob.DecDrob(ref d1); Assert.IsTrue(d1.chisl == 10 && d1.znam == 1); d1.chisl = 1; d1.znam = 5; Drob.DecDrob(ref d1); Assert.IsTrue(d1.chisl == 1 && d1.znam == 5); //умножение дробей Drob d2 = new Drob(2, 10); d1 = d1 * d2; Assert.IsTrue(d1.chisl == 1 && d1.znam == 25); //сложение дробей d1 = d1 + d2; Assert.IsTrue(d1.chisl == 6 && d1.znam == 25); //приведение к строке string s = d1.ToString(); Assert.IsTrue(s == d1.chisl + "/" + d1.znam); d1.chisl = 10; d1.znam = 2; s = d1.ToString(); Assert.IsTrue(s == (d1.chisl / d1.znam).ToString()); //вычисление выражения в задании Drob[] mas = new Drob[9]; mas[0] = new Drob(1, 3); mas[1] = new Drob(1, 3); mas[2] = new Drob(1, 3); mas[3] = new Drob(1, 3); mas[4] = new Drob(1, 3); mas[5] = new Drob(1, 3); mas[6] = new Drob(1, 3); mas[7] = new Drob(1, 3); mas[8] = new Drob(1, 2); Drob d = Drob.Calculated(mas); Assert.IsTrue(d.chisl == 85 && d.znam == 128); }