Динамические структуры данных



Классы

П.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:

  1. программа должна выдавать сообщения в случаях, когда происходит какое-либо некорректная операция (находится обратное к 0; производится деление на 0; вычисляется аргумент 0);
  2. Интерфейс программы должен находиться в файле complex.h, который должен быть защищен от повторного включения.
  3. Реализация класса 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!