1.1.Создайте класс rational, моделирующий рациональные числа и действия над ними.
· В разделе privateкласс должен содержатьзакрытые переменные-члены a и b, которые означают соответственно числитель и знаменатель рационального числа.
· В разделе public класс должен содержать
o конструкторы
§ по умолчанию rational(), который полагает , ;
§ параметризованный конструктор rational(doudle с) для преобразования действительного числа в комплексное (полагает , );
§ параметризованный конструктор rational(doudle с, doudle d), который инициализирует переменные a и b;
o функцию-член
void print();
которая выводит рациональное число на экран в виде a/b;
o функцию-друга rational inverse(rational q) для нахождения рационального числа, обратного данному;
o перегруженные операторы
§ унарный – для вычисления рационального числа противоположного данному;
§ бинарные +, –, * и / для вычисления суммы, разности, произведения и частного рациональных чисел;
§ логические бинарные операции ==, !=.
§ оператор вывода << для вывода комплексных чисел на экран.
§ (необязательное задание) оператор ввода >> для ввода комплексных чисел в алгебраической форме с клавиатуры.
Требования к программе, содержащей класс rational:
1. результатом операций, должно быть такое рациональное число числитель и знаменатель которого – взаимно простые числа.
2. программа должна выдавать сообщения в случаях, когда происходит какое-либо некорректная операция (находится обратное к 0 или производится деление на 0);
3. интерфейс программы должен находиться в файле rational.h, который должен быть защищен от повторного включения.
4. реализация класса complex должна находиться в файле rational.cpp.
1.2. Создайте файл-приложение application.cpp класса rational, которое должно продемонстрировать работу всех его функций и операторов. В частности,
· объявлять и инициализировать всеми возможными способами две рациональные переменные p и q;
· выводить на экран комплексное число u двумя способами: с помощью функции print()и с помощью перегруженного оператора вывода <<.
· вычислять , , , , , , , , ;
· вычислять логические значения выражений;
· организовывать ввод рациональных чисел с клавиатуры.