public static Fraction operator *(Fraction ob1, Fraction ob2) { Fraction res = new Fraction(); res.numerator = ob1.sign * ob2.sign * (ob1.intPart * ob1.denominator + ob1.numerator) * (ob2.intPart * ob2.denominator + ob2.numerator); res.denominator = ob1.denominator * ob2.denominator; if (res.numerator < 0) { res.numerator *= -1; res.sign = -1; } res.GetMixedView(); return res; }
public static Fraction Parse(string str) { int intPart, numerator, denominator, sign; // разделение строки на подстроки // с помощью разделителя-пробела string [] strs=str.Split(' '); string[] strs1; Fraction res; if (strs.Length == 1) { // в строке не было найдено пробелов // производим разделение строки по символу ‘/’ strs1 = str.Split('/'); if (strs1.Length == 1) { // число задано в виде только целой части // выделяем целую часть intPart = int.Parse(strs1[0]); // в зависимости от значения целой части, // формируем новую дробь if (intPart!=0) res = new Fraction(0, 1, Math.Abs(intPart), intPart / Math.Abs(intPart)); else res = new Fraction(0, 1, Math.Abs(intPart), 1); return res; } else { // число задано в виде только дробной части // выделяем отдельно числитель и знаменатель numerator = int.Parse(strs1[0]); denominator = int.Parse(strs1[1]); sign = 1; // определяем знак числа по знаку числителя if (numerator < 0) { numerator = -numerator; sign = -1; } // формируем новую дробь и приводим ее // к несократимому виду res = new Fraction(numerator, denominator, 0, sign); res.GetMixedView(); return res; } } // дробь задана в смешанном виде // отделяем дробную часть по разделителю ‘/’ strs1 = strs[1].Split('/'); intPart = int.Parse(strs[0]); // определяем знак числа по знаку целой части if (intPart < 0) { intPart = -intPart; sign = -1; } else sign = 1; numerator = int.Parse(strs1[0]); denominator = int.Parse(strs1[1]); // формируем новую дробь и приводим ее // к несократимому виду res = new Fraction(numerator, denominator, intPart, sign); res.GetMixedView(); return res; }
public static Fraction operator /(Fraction ob1, Fraction ob2) { Fraction res = new Fraction(); int den = ob2.denominator; int num = (ob2.intPart * ob2.denominator + ob2.numerator); ob2.numerator = den; ob2.denominator = num; ob2.intPart = 0; res = ob1 * ob2; res.GetMixedView(); return res; }
public static Fraction operator /(int a, Fraction ob1) { Fraction res = new Fraction(); Fraction ob2 = new Fraction(0, 1, Math.Abs(a), a / Math.Abs(a)); res = ob2 / ob1; res.GetMixedView(); return res; }
public static Fraction operator *(int a, Fraction ob1) { Fraction res = new Fraction(); Fraction ob2 = new Fraction(0, 1, Math.Abs(a), a / Math.Abs(a)); res.numerator = ob1.sign * ob2.sign * (ob1.numerator * ob2.intPart); res.denominator = ob1.denominator; if (res.numerator < 0) { res.numerator *= -1; res.sign = -1; } res.GetMixedView(); return res; }