#include struct Rational { int m; int n; }; Rational sum(Rational a, Rational b) { int divisor = a.n * b.n; return { a.m * divisor + b.m * divisor, divisor }; } Rational sub(Rational a, Rational b) { b.m *= -1; return sum(a, b); } Rational mult(Rational a, Rational b) { return { a.m * b.m, a.n * b.n }; } Rational div(Rational a, Rational b) { int temp = b.m; b.m = b.n; b.n = temp; return mult(a, b); } bool isValid(Rational a) { return a.n != 0; } bool isWholeNumber(Rational a) { return a.n % a.m == 0; }