Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_ООП_1-3иприм.doc
Скачиваний:
6
Добавлен:
15.11.2019
Размер:
248.83 Кб
Скачать

Упражнение 1. Перегрузка функций

1.1. Перегрузить функцию swap(a, b) - обменник, т.е. объявить в программе две одноименные функции для разных типов данных из табл.1. Вариант Вар = № MOD 14 +1.

Таблица 1.

тип a,b 1й функции

тип a,b 2й функции

тип a,b 1й функции

тип a,b 2й функции

1

int

stroka

8

double

float **z, масс. n*n

2

int

float

9

point

float **z, масс. n*n

3

stroka

char *s

10

point

float *x, массив n эл

4

double

cmplx

11

point

stroka

5

cmplx

stroka

12

point

cmplx

6

double

float *x, массив n эл

13

point

double

7

stroka

float **z, масс. n*n

14

stroka

complex из <complex.h>

Подключить необходимые заголовочные учебные файлы с определением классов.

1.2. Перегрузить функцию cmplx sqrt(cmplx); для класса cmplx комплексных чисел, из файла CMPLX.H и решить квадратное уравнение z= A*X2 + B*x + C с комплексными переменными по формулам Виетта. Числа A, B и C взять из предыдущей работы. Квадратный корень из комплексного числа X равен

, где - модуль, - аргумент комплексного числа X.

Для контрольного примера используем теорему Виета, согласно (X-X1)(X-X2) = 0, при известных корнях X1 и X2 коэффициенты нашего уравнения равны A = 1, B=-(X1+X2), C = X1*X2. Вычислим эти коэффициенты и найдем новые корни нашего уравнения x1 и x2, которые, если наша функция cmplx sqrt(cmplx) правильная, совпадут с исходными X1 и X2.

Отчет по 3й части должен содержать: -тексты программ, - ручные проверки и выводы.

Упражнения 2. Перегрузка операций

2.1. Перегрузить для класса stroka одну из выбираемых по варианту (ниже) операций для четного варианта в теле класса, для нечётного вне класса.

1,2

Вычитание строк S1-S1

Из первого слова удалять только первое вхождение буквы второго слова, например: долото – дом = лото

3,4

Вычитание строк S1-S1

Из первого слова удалять только все вхождения буквы второго слова, например: олово – слово = о

5,6

Вычитание строк S1-S1

Из первого слова удалять только соответствующие вхождения буквы второго слова, например: олово – соло = во

7,8

Кольцевая прокрутка слова

Например S<<i “программист”<<3 = граммистпро

9,10

Кольцевая прокрутка слова

Например S>>i “программист”>>3 = истпрограмм

11,12

Префиксная ++

++S, добавит слева одну букву “сслово”

13,14

Постфиксная ++

S++, добавит справа одну букву “словоо”

15,16

Префиксная --

--S, убавит слева одну букву “лово”

17,18

Постфиксная --

S--, убавит справа одну букву “слов”

19,20

Унарный минус картавит

-S станет “калтошка”

21,22

Унарный плюс грассирует

+S вместо “Прогресс Гроссерман” станет “Прррогрресс Гррроссеррман” С вероятностями 40% буква р удваивается или утраивается и с вероятностью 10% остаётся одна

23,24

Префиксная ++ Заика

С вероятностями 20% первая буква слова удваивается или утраивается и с вероятностью 60% остаётся одна “п-прекрассная п-п-погода не правда ли”

25,26

! Японский акцент

!S все буквы л заменяются на р, а все ч и ш на сь

2.2. Перегрузить для символа ^ (стандартная поразрядная операция исключающее ИЛИ) для операций возведения в степень X^Y, как в Бейсике.

Вариант выбирать по формуле N = Вар MOD 6 +1

Вариант N

Тип операнда X

Тип операнда Y

Тип результата

1

int

int

long

2

long

long

long

3

float

float

double

4

double

double

double

5

double

double

long double

6

complex

int

complex

Возведение комплексного числа в целую степень осуществлять по формуле Муавра

Zm = rm(cos(m φ)+ J sin( m φ),

где r = √ (re2 + im2) – модуль

φ = arctg(im/re) - аргумент (фаза) комплексного числа.

Подготовить контрольные примеры

Лабораторная работа № 3. Разработка собственных классов

ПРИМЕРЫ Объектно-ориентированное проектирования класса

При традиционном программировании вначале разрабатывают методики расчетов и алгоритмы, а затем реализуют их путем написания кода программ, процедур и функций. Т.е. работа проводится в две стадии: - проектирование и реализация (программирование).

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

- нужный набор данных, описывающих свойства объектов,

- статус их доступа,

- методы, описывающие поведение объектов,

- алгоритмы их реализующие,

- средства создания, инициализации и уничтожения объектов

- интерфейс и взаимодействие объектов.

Т.е., всё это необходимо вначале придумать.

Спроектируем в пять отмеченных этапов класс Point для решения задач манипуляции точками и, возможно будущем, другими графическими объектами, на плоскости (экране компьютера).