Перейти к основному содержимому

Введение

Создание класса

В данной лабораторной работе необходимо создать класс для работы с обыкновенными дробями. Все операции, которые должны выполняться с дробями, включены в программу в приложении 1.

Числитель и знаменатель дроби имеют тип int.

Дроби вводятся как строка, имеющая вид:

  • для дробей с целой частью: знак, целая часть, пробел, числитель, слэш (/), знаменатель. Например: -2 6/18, 5 9/3, 2 4/1.
  • для дробей без целой части: знак, числитель, слэш (/), знаменатель. Например: 3/4, -9/3, -8/6 (знаменатель всегда положительный).
  • для дробей без дробной части. Например: -2, 0, 4.
предупреждение

Предусмотреть обработку некорректных дробей: 4/0, -1 3/0.

Значения представленных выше дробей на экране при выводе должны иметь вид:

-2 1/3, 8, 6.
3/4, -3, -1 1/3.

При выводе и после выполнения арифметических операций дроби сокращаются, то есть числитель и знаменатель не должны иметь общих множителей.

Перегрузка операции

Для работы с дробями необходимо:

  1. Перегрузить операции +, += для сложения дробей и дроби и целого в любых сочетаниях (дробь+целое, целое+дробь, дробь+дробь).
  2. Перегрузить операции +, += для сложения дроби и double в любых сочетаниях (дробь+double, double+дробь). Преобразование double-дробь должно выполняться с точностью до N_DEC десятичных знаков после запятой, где N_DEC - целочисленная константа, задаваемая пользователем. Задайте значение по умолчанию N_DEC=4.
осторожно

Для разбора double запрещено использовать тип string.

При перегрузке операций использовать функции-члены класса, а где это невозможно, то функции-друзья класса.

Для обеспечения более удобного контроля результатов выполнения программы вставьте в конструкторы и перегруженные операции операторы вывода, идентифицирующие выполняемую функцию. Выполните следующий эксперимент: закомментируйте операции дроби с int и повторно выполните программу. Объясните результаты сложения дробей с целыми числами.

Создание конструкторов

Для инициализации объектов разрабатываемого класса обыкновенных дробей предусмотреть соответствующие конструкторы (с одним аргументом типа char*, с одним аргументом типа double и с двумя аргументами типа int, которые имеют значения по умолчанию).