DM_Q SUB_QQ_Q(DM_Q f1, DM_Q f2) { DM_Q res; // результ. дробь res.a = SUB_ZZ_Z(MUL_ZZ_Z(f2.b, f1.a), MUL_ZZ_Z(f1.b, f2.a)); // находим числитель res.b = MUL_ZZ_Z(f1.b, f2.b); // находим общий знаменатель return res; }
fraction MUL_QQ_Q(const fraction& Num1, const fraction& Num2) { // умножение дробей fraction Num3; Num3.numerator = MUL_ZZ_Z(Num1.numerator, Num2.numerator); // перемножение числителей первой и второй дробей Num3.denominator = MUL_NN_N(Num1.denominator, Num2.denominator); // перемножение знаменателей первой и второй дробей Num3 = RED_Q_Q(Num3); // упрощение полученной дроби return (Num3); }
fraction ADD_QQ_Q(fraction a, fraction b) { fraction sum = 0; if (b.denominator == a.denominator)//сравнение знаменателей слагаемых { sum.denominator = b.denominator;//если равны, присвоить сумме знаменатель слагаемых sum.numerator = ADD_ZZ_Z(a.numerator,b.numerator);// return sum; } else{ sum.denominator = LCM_NN_N(a, b); sum.numerator = ADD_ZZ_Z((MUL_ZZ_Z(a.numerator, TRANS_N_Z(sum.denominator / a.denominator))), MUL_ZZ_Z(b.numerator, TRANS_N_Z(sum.denominator / b.denominator))); return sum; } }