void fraction::lowterms() // сокращение дроби { long tnum, tden, temp, gcd; tnum = labs(num); // используем неотрицательные tden = labs(den); // значения (нужен cmath) if( tden == 0 ) // проверка знаменателя на 0 { cout << "Недопустимый знаменатель!"; exit(1); } else if( tnum == 0 ) // проверка числителя на 0 { num=0; den = 1; return; } // нахождение наибольшего общего делителя while(tnum !=0) { if( tnum < tden ) // если числитель больше знаменателя, { temp=tnum; tnum=tden; tden=temp; } //меняем их местами tnum = tnum - tden; // вычитание } gcd = tden; // делим числитель и знаменатель на num = num / gcd; // полученный наибольший общий делитель den = den / gcd; }