42026

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

Лабораторная работа

Математика и математический анализ

Для всех заданий реализовать: а конструктор инициализирующий значения полей некоторыми значениями; б вывод данных на экран оператор . Необходимо корректное описание данного оператора в демонстрация всех операций должны быть реализована через пользовательское меню где пользователь выбирает действие вводит данные указывает тип данных если нужно и т. Реализовать: а сложение вычитание векторов операторы –; б умножение вектора на скаляр оператор ; в скалярное произведение векторов оператор ; г векторное произведение...

Русский

2013-10-27

58 KB

19 чел.

Лабораторная работа № 4

Тема: перегрузка операций и функций.

Цель работы: освоить разработку программ с использованием перегрузки операций и функций. В задании на программирование требуется реализовать классы и операции (функции) для работы с объектами этих классов.

Для всех заданий реализовать:

а) конструктор, инициализирующий значения полей некоторыми значениями;

б) вывод данных на экран (оператор <<). Необходимо !корректное! описание данного оператора

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

Варианты заданий

1. Вектор в пятимерном евклидовом пространстве задается пятеркой своих координат. Реализовать:

а) сложение/вычитание векторов (операторы +, );

б) умножение вектора на скаляр (оператор *);

в) скалярное произведение векторов (оператор *);

г) векторное произведение векторов (оператор **).

2. Строка символов. Реализовать операции:

сравнения строк (оператор ==);

удаления из строки указанного символа (оператор -);

удаления из первой строки всех символов, встречающихся во второй строке (оператор -).

переворота строки (оператор ~),

3. В британском формате дата задается как чч/мм/гггг. Реализовать с учетом високосных годов (по грегорианскому стилю):

а) сложение даты и определенного пользователем количества дней (+);

б) вычитание из даты определенного пользователем количества дней (-);

в) вычитание числа дней, прошедших между датами (оператор -).

4. В американском формате дата задается как мм/чч/гггг. Реализовать с учетом високосных годов (по грегорианскому стилю):

а) сложение даты и определенного пользователем количества дней (+);

б) вычитание из даты определенного пользователем количества дней (-);

в) вычитание числа дней, прошедших между датами (оператор -).

5. Ввести класс для работы с прямоугольной матрицей. Реализовать следующие операции:

а) сложение (вычитание) двух матриц (операции +, );

б) умножение двух матриц (оператор *)

в) транспонирование матрицы (оператор !)

г) нахождение обратной матрицы (оператор ~)

6. Комплексное число задается своим модулем и углом (например, число 10*(cos(/6)+i*sin(/6)) задается парой (10, /6):

а) сложение (вычитание) чисел;

б) произведение двух чисел;

в) деление чисел;

г) возведение в целочисленную степень (оператор ^);

д) извлечение квадратного корня (функция sqrt()).

7. Комплексное число задается своей вещественной и мнимой частями (например, 5 + 3i задается парой (5, 3)). Реализовать:

а) сложение (вычитание) чисел (операции +, );

б) произведение двух чисел (оператор *);

в) деление чисел (оператор /);

г) возведение в целочисленную степень (оператор ^);

д) извлечение квадратного корня (функция sqrt()).

8. Время задается в формате чч.мм.сс. Реализовать следующие операции (учесть переход через 24 ч):

а) сложение времени и определенного пользователем количества секунд (оператор +);

б) вычитание из времени указанного пользователем количества секунд (оператор );

в) сложение двух моментов времени (оператор +);

г) вычитание из одного момента времени другого (оператор );

д) подсчет числа секунд между двумя моментами времени, лежащими в пределах одних суток (оператор %).

9. Ввести класс для работы с объектом «полином». Реализовать следующие операции:

а) сложение (вычитание) двух полиномов;

б) умножение (деление) двух полиномов;

в) умножение полинома на число (оператор &);

г) вычисление значения полинома в заданной точке Х (оператор ());

д) дифференцирование полинома (оператор ~);

е) интегрирование полинома (бинарный оператор !, второй операнд – значение константы С, например x2!8 = 0.333x3+8).

10. Ввести класс для работы с объектом «множество целых чисел». Реализовать следующие операции:

а) объединение двух множеств (оператор +);

б) пересечение двух множеств (оператор &);

в) разность двух множеств (оператор );

г) добавление элемента во множество (оператор +);

д) удаление элемента из множества (оператор ).

11. Ввести класс для работы с объектом «рациональная дробь» (вида m/n). Реализовать:

а) сложение/вычитание двух дробей (операторы + и );

б) умножение/деление двух дробей (операторы * и /);

в) приведение дроби к несократимому виду (оператор !);

г) вывод дроби в виде m/n (оператор <<);

д) сравнения двух дробей (операторы >, <, ==, !=).

12. Класс, представляющий целое число для арифметики с насыщением для диапазона от 18 до 185 (это такая арифметика, где число может принимать только значения из указанного диапазона). Например, если x – такое число, то х = 23 - 15 будет равно 18 (достигли левой границы), аналогично х = 170 + 300 будет равно 185 (достигли правой границы). Реализовать:

а) операторы арифметических действий над такими классами(+, -, *);

б) те же операторы арифм. действий над классом и целым числом;

в) операторы строгого сравнения ( <, >, ==, !=).

13. Класс, представляющий целое число для арифметики с циклическим переходом через границы для диапазона от 80 до 230 (это такая арифметика, где число может принимать только значения из указанного диапазона). Например, если x – такое число, то:

х = 80 – 1 = 230 (переход  через границу),

х = 93 – 25 = (93 – 13) – 1 – 11 = (80 – 1) – 11 = 230 – 11 = 219

х = 170 + 300 = (170 + 60) + 1 + 239 = (230 + 1) + 239 = 80 + 239 = (80 + 150) + 1 + 88 = (230 + 1) + 88 = 80 + 88 = 168

Реализовать:

а) операторы арифметических действий над такими классами(+, -, *);

б) те же операторы арифм. действий над классом и целым числом;

в) операторы строгого сравнения ( <, >, ==, !=).


14.
Класс представляющий единицу длины с поддержкой преобразования из метров в футы и обратно (1 фут = 0,3048 м). При реализации арифметических операторов предусмотреть корректное вычисление результата при использовании различных единиц длины. Например, 1м + 2фута = 1м + 0,6098м = 1,6098м. Добровольно презреть законы физики и принять, что:

м*м = м (а не м2) – с футами тоже самое;

м/м = м (а не разы) – с футами тоже самое;

м ОП ф = м,      ф ОП м = ф  (результат равен ед. изм. левого операнда).

Реализовать:

а) операторы арифметических действий над такими классами(+, -, /, *);

б) операторы * и / над классом и целым числом;

в) операторы строгого сравнения ( <, >, ==, !=) двух таких классов.

г) оператор преобразования единицы измерения в классе (~).

15. Класс, имитирующий процесс управления колонией бактерий. В классе содержится переменная, соответствующая количеству бактерий в текущий момент времени. Реализовать:

а) Операторы ++ и --, которые соответственно увеличивают/ уменьшают размер популяции вдвое.

б) Оператор + между двумя колониями производит их слияние, итоговая колония обладает суммарным количеством бактерий.

в) Оператор - производит удаление заданного количества бактерий из популяции.

г) Оператор ! производит уничтожение колонии.

16. Класс, имитирующий управление системой круиз-контроля автомобиля. В классе содержится переменная, соответствующая заданной скорости движения в км/ч. Реализовать:

а) Оператор ~ включает/выключает круиз-контроль.

б) Оператор + (с целым числом) увеличивает скорость на заданную величину при выключенном круиз-контроле; при включенном – не работает.

в) Оператор - (с целым числом) уменьшает скорость на заданную величину при выключенном круиз-контроле; при включенном – выключает его и затем уменьшает скорость.

г) Операторы ++/-- соответственно увеличивают/уменьшают скорость на 10 км/ч при включенном круиз-контроле; при выключенном – не работают.

д) При включенном круиз-контроле скорость должна находится в пределах от 10 до 110 км/ч, при выключенном – от 0 до 110 км/ч.


17.
Класс, определяющий первые 10 значений функции вида

y = A*sin (k * x + b)

для x, начиная от 0, с шагом 0.01.

а) Операторы +/- (с числом) над классом и числом увеличивают/уменьшают частоту k на заданную величину.

б) Операторы +, -, *, / над классами выполняют соответствующие операции над всеми параметрами функции (на этот раз презреем законы математики). Например, 5*sin(2x–4) + 2*sin(–8x+3) = 7*sin(–6x–1).

в) Операторы * и / (с числом) увеличивают/уменьшают амплитуду A в указанное число раз.

г) Операторы % и # (с числом) увеличивают/уменьшают значение сдвига b на указанную величину.

д) В результате применения операторов значения функции пересчитываются.

18. Класс, представляющий «округление» дробного числа по следующему правилу:

1) дробная часть [0; 0.25) – отбрасывается (то есть модуль целой части не изменяется)

2) дробная часть [0.25; 0.75] заменяется на 0.5

3) при дробной части (0.75; 0.(9)] целая часть получает +1 к модулю

Например: 15.1815;  3.413.5;   8.728.5;   51.8652;   –3.31–3.5;          –18.28–18;    –31.76–32

а)Класс хранит во внутреннем поле точное значения числа, но при выводе на экран ведет себя как округленное.

б) Арифметические операторы +, -, *, / для дробного числа и числа типа класс – класс ведет себя как округленное число. Например,  класс(1.6)*3 = 4.5

в) Для операций сравнения (<, >, ==, !=) класс ведет себя как округленное значение.

г) Арифметические операторы +, -, *, / для двух чисел данного класса производятся операции с точным значением внутреннего поля, результат представляет собой новый класс, который ведет себя по описанным принципам. Например, класс(1.82)/класс(1.3)=класс(1.4), а при выводе на экран появится число 1.5.


 

А также другие работы, которые могут Вас заинтересовать

66511. Проектирование баз данных Access 1.36 MB
  Перед созданием реляционной базы данных Access пользователь должен определить, из каких таблиц должна состоять база данных, какие данные автоматизируемой предметной области нужно поместить в каждую таблицу, как связать таблицы.
66512. Логические элементы в Workbench 149.78 KB
  Нарисуем моделируемую схему в программе ElectronicsWorkbench После запуска схемы в логическом анализаторе получили следующее Составим таблицы истинности по 4 значения из логического анализатораи по ним определим название логических элементов...
66513. ДИНАМІЧНІ МАСИВИ 96.5 KB
  Визначити добуток позитивних елементів кожного стовпця матриці А її розмір вводити з клавіатури а елементи розмістити в пам’яті динамічно. Визначити добуток елементів парних стовпців матриці її розмір вводити з клавіатури а елементи розмістити в пам’яті динамічно.
66514. Разработка и отладка алгоритмов и программ обработки массивов 784.5 KB
  Дан массив целых чисел А[30]. Заменить все нулевые элементы минимальным. В упорядоченном по невозрастанию массиве чисел определить, есть ли заданное число Z, в противном случае подсчитать количество чисел, небольших Z; кроме того определить, сколько отрицательных чисел в массиве.
66515. Разработка и отладка алгоритмов и программ с применением пользовательских функций 126 KB
  Цель работы: Получить практические навыки в разработке алгоритмов и написании программ на языке С с применением пользовательских функций. Оборудование: IBM – совместимый компьютер, система программирования BC3.1, MVC++ 6.00.
66516. ВЗАИМОДЕЙСТВИЕ С ФАЙЛОВЫМИ СИСТЕМАМИ UNIX/WINDOWS 89.96 KB
  Цель работы — изучение основных файловых операций в ОС UNIX и Windows, работы механизмов перенаправления ввода/вывода, конвейера, механизма управления устройствами ввода-вывода UNIX при помощи специальных файлов устройств, а также с организацией прямого доступа к диску в ОС Windows.
66517. Регенерація картриджів принтерів 108 KB
  Для успішного самостійного заправлення картриджа лазерного принтера немає необхідності в детальному вивченні конструктивних особливостей кожного конкретного типу картриджа. Звідси випливає що якщо ви освоїте заправлення одного типу картриджа зрозумієте принцип його функціонування то картриджі...
66518. Освоение технологии структурного программирования при разработке и создании программы на языке Турбо Паскаль для циклического вычислительного процесса с известным числом повторений 225 KB
  Если число повторений известно заранее до начала повторений то в этом случае всегда используется оператор цикла с параметром for. Такой оператор предусматривает изменение управляющей переменной параметра цикла по правилу прогрессии с шагом 1 и повторное выполнение некоторого...