Классы. Конструкторы и деструкторы. Список инициализации. RAII принцип. Приватности. Поля класса и методы. Константность методов. This. Разделение на объявление и определение класса.

Шаблон задачи на repl.it

Рациональные числа или Дроби

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/302093ad-8126-4d6a-99c0-3563ef632349/Untitled.png

Требуется создать абстракцию рациональных чисел с возможностью: создавать, складывать, вычитать, умножать, делить, сравнивать, печатать и превращать их в float number. Результаты должны быть всегда с наименьшим знаменателем (алгоритм Евклида в помощь). Целую часть выделять не надо.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8319a101-342b-4374-8e44-028f2d85c758/Untitled.png

Итого, нужен тип данных, который реализует следующие правила:

$$ \frac{n_1}{d_1} + \frac{n_2}{d_2} = \frac{n_1 d_2 + n_2 d_1}{d_1 d_2} $$

$$ \frac{n_1}{d_1} - \frac{n_2}{d_2} = \frac{n_1 d_2 - n_2 d_1}{d_1 d_2} $$

$$ \frac{n_1}{d_1} * \frac{n_2}{d_2} = \frac{n_1 n_2}{d_1 d_2} $$

$$ \frac{n_1}{d_1} / \frac{n_2}{d_2} = \frac{n_1 d_2}{d_1 n_2} $$

$$ {\frac{n_1}{d_1} = \frac{n_2}{d_2}} \Longleftrightarrow {n_1 d_2 = n_2 d_1} $$

Чеклист