Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Порядок выполнения работы. 1. Определить пользовательский класс в соответствии с вариантом задания;




 

1. Определить пользовательский класс в соответствии с вариантом задания;

2. Определить в классе соответствующие конструкторы и деструктор

3. Определить в классе компоненты-функции для просмотра и установки полей данных.

4. Реализовать все необходимые операции в соответствии с вариантом задания;

5. Написать демонстрационную программу, наглядно демонстрирующую реализацию перегрузки операций.

Варианты задания.

Вариант 1.

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

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

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

векторное произведение векторов (операция %);

умножение вектора на скаляр.

Вариант 2.

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

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

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

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

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

 

Вариант 3.

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

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

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

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

 

Вариант 4.

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

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

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

 

Вариант 5.

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

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

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

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

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

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

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

 

Вариант 6.

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

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

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

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

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

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

 

Вариант 7.

Время задается в формате час.минута.секунда.

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

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

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

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

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

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

 

Вариант 8.

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

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

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

в) умножение полинома на число (ТОЛЬКО КОЭФФИЦИЕНТЫ)(операция &);

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

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

е) интегрирование полинома (операция!).

 

Вариант 9.

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

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

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

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

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

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

 

Вариант 10.

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

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

б) умножение/деление двух дробей;

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

г) сравнения двух дробей (операция ||).

Методические указания.

Пример решения задачи

Переопределим операцию + так, чтобы можно было складывать (сцеплять) символьные строки.

#include <stdio.h>

#include <string.h>

const LEN=80;

struct String

{

char s[LEN];

int len;

};

String operator + (String S1, String S2)

{

String TmpS;

if((TmpS.len=S1.len+S2.len)>=LEN)

{ TmpS.s[0]='\0';

TmpS.len=0;

} else

{

strcpy(TmpS.s, S1.s);

strcat(TmpS.s, S2.s);

}

return TmpS;

}

void main()

{

String S1,S2,S3;

strcpy(S1.s, "Перегрузка операций - ");

S1.len=strlen(S1.s);

strcpy(S2.s, "классная вещь!");

S2.len=strlen(S2.s);

printf("Были строки: \n %s\n %s\n с длинами %d и %d\n",S1.s, S2.s, S1.len, S2.len);

S3=S1+S2;//генерируется код, <=> вызову: operator+(s1, s2);

printf("Получилась строка:\n\t%s длиной %d\n", S3.s,S3.len);

}

Содержание отчета.

 

1. Титульный лист: название дисциплины; номер и наименование работы; фамилия, имя, отчество студента; дата выполнения.

2. Постановка задачи. Следует дать конкретную постановку, т.е. указать, какой класс должен быть реализован, какие должны быть в нем конструкторы, компоненты-функции и т.д.

3. Определение пользовательского класса с комментариями.

4. Реализация конструкторов и деструктора.

5. Реализация перегрузки операций с объяснением алгоритма работы для данного типа данных;

6. Листинг основной программы.

Контрольные вопросы

 

1. Какова цель перегрузки функций и операций?

2. Что такое дружественные функции, как они описываются и вызывается?

3. Какие операции должны быть функциями - друзьями, а какие - только членами?

4. Какие операции нельзя переопределять?

5. Особенности переопределения бинарных и унарных операций.

6. Особенности операций между переменными пользовательских и стандартных типов.

7. Использование конструктора для операции преобразования типов.

8. Перегрузка операций new и delete.

9. Перегрузка операции приведения типа.

10. Перегрузка операции вызова функции.

11. Перегрузка операции индексирования.


 

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

 

«НАСЛЕДОВАНИЕ И ВИРТУАЛЬНЫЕ ФУНКЦИИ»

Цель. Получить практические навыки создания иерархии классов и использования статических компонентов класса. Написать программу, в которой создается иерархия классов. Включить полиморфные объекты в связанный список, используя статические компоненты класса. Показать использование виртуальных функций.





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


Дата добавления: 2016-11-02; Мы поможем в написании ваших работ!; просмотров: 1279 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент может не знать в двух случаях: не знал, или забыл. © Неизвестно
==> читать все изречения...

2806 - | 2369 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.