Динамические структуры данных
Классы
П.1. Класс сomplex
1.1.Создайте класс сomplex, моделирующий комплексные числа и действия над ними в алгебраической форме (см. приложение 1).
· В разделе privateкласс должен содержатьзакрытые переменные-члены Re и Im, которые означают соответственно действительную и мнимую части комплексного числа.
· В разделе public класс должен содержать
o конструкторы
§ по умолчанию complex(), который придает переменным Re и Im значение равное 0;
§ параметризованный конструктор complex(doudle a) для преобразования действительного числа в комплексное (полагает Re = a и Im = 0);
§ параметризованный конструктор complex(doudle a, doudle b), который инициализирует переменные Re и Im;
o функцию-член
void print();
которая выводит комплексное число на экран в алгебраической форме записи a+bi;
o функции-друзей
§ double mod(complex z);
§ double arg(complex z);
§ complex conjugate(complex z);
§ complex inverse(complex z).
o перегруженные операторы
§ унарный – для вычисления комплексного числа противоположного данному;
§ бинарные +, –, * и / для вычисления суммы, разности, произведения и частного комплексных чисел (при делении на 0 программа должна выдавать сообщение об ошибке);
§ логические бинарные операции = =, !=.
§ оператор вывода << для вывода комплексных чисел на экран.
§ (необязательное задание) оператор ввода >> для ввода комплексных чисел в алгебраической форме с клавиатуры.
Требования к программе, содержащей класс complex:
- программа должна выдавать сообщения в случаях, когда происходит какое-либо некорректная операция (находится обратное к 0; производится деление на 0; вычисляется аргумент 0);
- Интерфейс программы должен находиться в файле complex.h, который должен быть защищен от повторного включения.
- Реализация класса complex должна находиться в файле complex.cpp.
|
|
1.2. Создайте файл-приложение application1.cpp класса complex, который должен содержать программу, демонстрирующую работу всех его функций и операторов. В частности,
· объявлять и инициализировать всеми возможными способами две комплексные переменные u и v;
· выводить на экран комплексное число u двумя способами: с помощью функции print()и с помощью перегруженного оператора вывода <<;
· вычислять , , , , , , , ;
· вычислять логические значения выражений;
· (необязательное задание) организовывать ввод комплексных чисел в алгебраической форме с клавиатуры.
П.2. Класс rational
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()и с помощью перегруженного оператора вывода <<.
· вычислять , , , , , , , , ;
· вычислять логические значения выражений;
· организовывать ввод рациональных чисел с клавиатуры.
Производные классы
2.1.Создайте производный класс complexExt от класса complex, который должен
· В разделе privateсодержать с закрытые переменные-члены mod и argument которые означают соответственно модуль и аргумент комплексного числа.
· В разделе public содержать
o конструктор по умолчанию complexExt(), который придает переменным mod и argument значение равное 0;
o функции
double mod();
double argument();
которые возвращают соответственно модуль и аргумент комплексного числа;
o параметризованный конструктор complexExt(complex a), который с помощью функций-членов mod() и argument() преобразует объект типа complex в объект типа complexExt;
|
|
o перегружаемую функцию базового класса
void print();
которая выводит комплексное число на экран в тригонометрической форме записи
mod(cos(argument)+i*sin(argument));
o функцию-друга, которая перегружает оператор << для реализации вывода комплексных чисел, записанных в тригонометрической форме, на экран.
1.2. Пользуясь классом complexExt, напишите программу, которая должна
· описывать переменные
complex u,v;
complexExt z;
· получать действительную и мнимую части переменных u и v;
· выводить на экран комплексные числа u и v в алгебраической и тригонометрической формах записи;
· пользуясь конструктором complexExt(complex a) инициализировать переменную z и вывести ее на экран двумя способами: с помощью перегруженной функции print()и с помощью перегруженного оператора вывода <<;
· выводить на экран комплексные числа z=u+2*v+1, z+5.2 (происходит ли автоматическое преобразование типа double в тип complexExt ?);
· проверять результаты присваиваний z=u и v=z (о чем они говорят?).
Строки
Программы 3.1–3.4 необходимо написать, используя функции get() и put().
3.1Написать программу, которая копирует все комментарии из файла file.cpp в файл file1.txt, а оставшийся текст – в файл file2.txt.
3.2Написать программу, которая с помощью функции getline() считывает строки текстового файла palindrome.txt и проверяет, является ли записанное в каждой строке выражение палиндромом.
3.3Пользуясь функциями класса string, написать программу, которая из строки “abcdefghijklmnopqrstuvwxyz^” генерирует следующую таблицу
3.4Пользуясь реверсивным итератором и функцией getline(), напишите программу, считывающую строки из файла и выводящую их в обратном порядке.
Перегрузка функций
4.1В стандартной библиотеке С++ есть три функции abs(), labs() и fabs(), которые позволяют находить абсолютные значения переменных типа int, long и double соответственно. Необходимо написать программу, в которой функция mod(x) нахождения модуля числа перегружается 3 раза и, благодаря этому позволяет находить значения любой из функций abs(), labs() и fabs().
4.2Функция обмена местами для переменных типа int, double, float, int*…
4.3Сумма элементов массива (для строк - объединение)
4.4какая-нибудь функция с различным количеством параметров. Например, функция замены элементов первого массива на соответствующие элементы второго (если размерность r первого массива не превосходит размерности k второго, то все элементы заменяются; если превосходит, то заменяются только k элементов первого массива); замена на соответствующие элементы начиная с номера m; замена на соответствующие элементы начиная с номера m и заканчивая номером n; замена соответствующих элементов не с начала, а после какого-то индекса.
Шаблоны функций и классов
Программа, шаблон класса определения минимального числа из двух.
Программа, сортировки различного типа чисел и строк
В качестве примера рассмотреть функции обмена местами для переменных различных типов
Динамические структуры данных
Дата добавления: 2018-04-15; просмотров: 209; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!