/
RedResistance
/
JSonMall
Обзор
Документация
Войти
/
RedResistance
/
JSonMall
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
fraction.cpp
51 строка
1 KB
Domovoi-Kuzma
json_factory
22 июл 2025, 23:01
22 июл 2025, 23:01
7934937
Код
Авторство
О чём код?
#include "fraction.h" #include <utility> #include <cassert> using namespace std; int gcd(int a, int b) { while (b) { int t = b; b = a % b; a = t; } return a; } void fraction::balance() { assert(denum != 0); int div = gcd(num, denum); num /= div; denum /= div; } fraction operator + (fraction a, fraction b) { fraction res(a.num * b.denum + a.denum * b.num, a.denum * b.denum); res.balance(); return res; } fraction operator - (fraction a, fraction b) { fraction res(a.num * b.denum - a.denum * b.num, a.denum * b.denum); res.balance(); return res; } fraction operator * (fraction a, fraction b) { fraction res(a.num * b.num, a.denum * b.denum); res.balance(); return res; } fraction operator / (fraction a, fraction b) { fraction res(a.num * b.denum, a.denum * b.num); res.balance(); return res; } fraction operator == (fraction a, fraction b) { return a.num == b.num && a.denum == b.denum; } bool operator < (fraction a, fraction b) { return a.num * b.denum < a.denum * b.num; } bool operator > (fraction a, fraction b) { return a.num * b.denum > a.denum* b.num; } ostream& operator << (ostream& out, fraction f) { out << 1.0*f.num / f.denum; return out; }