
Среда программирования: Visual C++ .NET 2019
Название работы: Объектное-ориентирование и программирование. ТУСУР. ЛР2. Вариант 21
Вид работы: Лабораторная работа
Тематика работы: Технологии
Объем программы: 2 (по десятибалльной шкале)
Уровень сложности: 3 (по десятибалльной шкале)
Разработчик (автор):
Программист сайта kursovik.com
(письмо автору)
Данная работа написана ЧЕЛОВЕКОМ без использования ИИ
Ключевые слова: ТУСУР, ФДО, ТУСУР, ООП, лабораторная работа
Функции программы:
Лабораторная работа 2. Вариант 1.
1. В среде программирования на С++ создайте консольный проект с именем LAB2 в каталоге LAB2.
2. Переименуйте файл main.h из предыдущей лабораторной в Student.h. Создайте файл Student.cpp и включите в проект эти два файла. Переместите конструктор и функции объекта Student из main.cpp в файл Student.cpp. Таким образом, файл Student.h содержит описание объекта Student, а файл Student.cpp – реализацию объекта Student.
3. Включите в проект файл main.cpp и очистите тело функции main().
4. Определите объект Group, который будет содержать динамический массив объектов Student. Создайте два файла Group.h и Group.cpp и включите их в проект.
5. В файле Group.h определите с помощью ключевого слова class объект Group.
Данные объекта:
размер массива (целый тип);
указатель на массив (тип Student*).
Пусть данные имеют закрытый уровень доступа (private).
6. Опишите конструктор объекта с одним аргументом – размер массива (целый тип) и деструктор объекта.
7. Откройте файл Group.cpp. С помощью директивы #include включите необходимые заголовочные файлы.
8. Определите конструктор объекта Group. В теле конструктора проинициализируйте данные объекта, т.е. проинициализируйте размер массива значением аргумента конструктора и выделите динамическую память под массив с помощью строки кода:
указатель на массив = new Student[размер массива].
9. В деструкторе объекта освободите память, занимаемую массивом, с помощью строки кода:
delete [] указатель на массив.
Таким образом, мы создали объект Group, который содержит массив объектов Student.
10. Определите открытые (public) методы для объекта Group. Напишите функцию void Student::Print(), которая выводит в цикле for все записи массива на экран. В теле цикла примените ранее написанную функцию Print() для объекта Student.
11. Напишите функцию int Group::Size(), которая возвращает размер массива.
12. Напишите функции void PutStudent(int i, Student& student); и Student& GetStudent(int i);, первая функция заносит объект student типа Student в i-й элемент массива, вторая функция возвращает объект типа Student из i-го элемента массива.
13. Заполните массив данными и затем выведите их на экран. Создайте объект с именем group типа Group размером пять записей, т.е. Group group(5);.
14. Ниже с помощью цикла for заполните массив данными. Для этого в теле функции int main() сначала определите массивы имен, номеров курса, пола которые будут заносится в поля name, course и gender объектов Student, например:
char names[5][25] = {"A", "B", "C", "D", "E"};
Затем создайте объект с именем group типа Group размером пять записей, т.е. Group group(5);.
15. Выведите массив на экран с помощью строки кода: group.Print();.
16. Напишите функцию приведения типа. Для этого с помощью ключевого слова operator напишите функцию объекта Student, которая преобразует тип Student в int. Пусть функция возвращает yjvth rehcf, например,
Person::operator double() { return this->Age; }.
17. Проверьте функцию преобразования типа. В функции int main() определите переменную int и присвойте ей объект Student, например:
double age = group.GetStudent(2);.
То есть совершается неявное преобразование из типа Student в тип int при обращении к объекту. Выведите значение переменной на экран.
18. Перегруженные функции имеют одинаковое название, но разный возвращаемый тип или/и разный список аргументов. Определите в объекте Group две функции с одинаковым именем, например int Course(); и int Course(int limit). Первая функция пусть возвращает среднее значения номера курса для всех элементов массива, а вторая функция пусть возвращает среднее значения номера курса для элементов массива, номер курса которых не больше указанного значения limit. Функции отличаются списком аргументов.
19. Проверьте работу перегруженных функций, отобразив на экране подсчитанные два значения среднего номера курса.
20. Перегрузите оператор индексирования. Если раньше, чтобы обратиться к элементу массива, нам необходимо было вызывать функцию GetStudent, то, определив оператор индексирования, мы будем использовать только квадратные скобки. В объекте Group с помощью ключевого слова operator определите оператор индексирования, например:
Student& Group::operator[](int i).
В теле оператора напишите код, возвращающий i-ый элемент массива, т.е. объект Student.
21. Выведите на экран с помощью оператора индексирования любой один элемент массива group, например третий.
22. Перегрузите бинарный оператор, например оператор сложения (+), для объекта Student. Пусть оператор сложения будет возвращать суммарное значение курсов двух студентов. Опишем в объекте Student данный оператор как дружественную функцию с помощью ключевого слова friend, например:
friend int operator+(Student& p1, Student& p2);
Эта строка кода означает, что оператор сложения не принадлежит объекту, но ему доступны все закрытые данные и методы объекта.
В файле Student.cpp определите оператор сложения, например:
double operator + (Person& p1, Person& p2)
{ return (p1.Age + p2.Age); }
23. Проверим работу оператора с помощью следующих строк кода:
double sum = group[1] + group[3];
cout << sum << endl;
Описание (отчет):
Есть
на 22 страниц, посмотреть оглавление

Lab2
Lab2
Lab2
Group
Lab2
Lab2.vcxproj
Lab2.vcxproj
main
StudentПеред покупкой готовой работы не забудьте проверить её оригинальность. Запросить у администратора проверку текущей оригинальности работы по версии системы Антиплагиат.РУ
Отчет к программе. Содержание1. Задание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2 . Цели и задачи работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 3 . Краткие теоретические сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 3 . Ход выполнения работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 4 . Результаты работы . . . . . . . . . . . . . . .