Войти Создать аккаунт

ООП · 24 из 27

Класс «Дробь»

Лабораторная «классы». Борис Аркадьевич запрещает float на весь семестр: «0.1 + 0.2 у Python — не 0.3, а 0.30000000000000004. Для денег и точных вычислений нужны настоящие дроби». Задание — класс Drob, который сам себя сокращает, держит знак в числителе и умеет четыре действия — и с дробями, и с целыми числами.

Что сделать

Напишите класс Drob — несократимую дробь со знаком в числителе, которая складывается, вычитается, умножается, делится и сравнивается с дробями и целыми.

Что приходит

  • chislitel — числитель, целое число

  • znamenatel — знаменатель, целое число, по умолчанию 1; ноль — ZeroDivisionError

Что должен уметь

Объект с полями chislitel и znamenatel (дробь несократима, знаменатель больше нуля), действиями + - * / и == с дробями и целыми, видом Drob(3, 4) в repr и 3/4 в str.

Допишите класс Drob в редакторе справа. Проверка создаёт его объекты и зовёт методы — то, что напечатано, на проверку не влияет.

Пример

Drob(1, 2) + Drob(1, 3): общий знаменатель 6, 3/6 + 2/6 = 5/6 — получается Drob(5, 6). А Drob(2, -4) сразу становится Drob(-1, 2): сокращена, минус переехал в числитель.

Тот же пример кодом
Вызов
Drob(1, 2) + Drob(1, 3)
Вернуть
Drob(5, 6)
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.