Лабораторная работа 3. Структуры данных C++
Теоретическая часть
В C++ структура (struct) — это тип данных, объединяющий логически связанные данные разных типов (поля) в одну единицу. Перечисление (enum) — это тип данных, который позволяет задать ограниченный набор именованных целочисленных констант.
Пример объявления:
// Перечисление для дней недели
enum DayOfWeek {
Monday = 1,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
// Структура для хранения данных о студенте
struct Student {
char name[50]; // Поле для имени
int group; // Поле для номера группы
int grades[5]; // Поле для массива оценок (5 предметов)
DayOfWeek examDay; // Поле типа "День недели"
};Задание 1.
Объявите структуру
Studentпо примеру выше.Напишите функцию
void inputStudent(Student &s)для ввода данных об одном студенте с клавиатуры.Для ввода дня недели (
examDay) запросите у пользователя число от 1 до 7 и присвойте соответствующее значение из перечисленияDayOfWeek.
Напишите функцию
void printStudent(const Student &s)для вывода данных о студенте на экран. Выводите название дня недели, а не его числовое значение (можно использоватьswitchили массив строк).В функции
main()создайте массив из 3-5 элементов типаStudent.Используя цикл, заполните массив данными, вызывая функцию
inputStudent.Выведите на экран информацию о всех студентах, используя функцию
printStudent.
Пример работы программы (запуск и ввод):
Введите имя студента 1: Иван Петров Введите группу: 101 Введите 5 оценок через пробел: 5 4 5 3 5 Введите день экзамена (1-Пн, ..., 7-Вс): 3 ... (ввод остальных студентов) Список студентов: Имя: Иван Петров, Группа: 101, Оценки: 5 4 5 3 5, День экзамена: Среда ...
Задание 2
Добавьте функционал в программу из базового задания.
Напишите функцию
float calculateAverage(const Student &s), которая вычисляет средний балл одного студента по его пяти оценкам.Напишите функцию
void findBestStudent(const Student students[], int size), которая находит и выводит на экран студента с самым высоким средним баллом. Если таких несколько, выведите первого.Напишите функцию
void sortStudentsByName(Student students[], int size), которая сортирует массив студентов по алфавиту (по полюname).В функции
main()после вывода списка вызовите новые функции:Выведите средний балл для каждого студента.
Найдите и выведите лучшего студента.
Отсортируйте массив и выведите отсортированный список.
Задание 3
Создайте программу для каталогизации книг в библиотеке.
Объявите перечисление
Genre(Жанр) с как минимум 5 вариантами (например, Фантастика, Детектив, Роман, Научная литература, Поэзия).Объявите структуру
Book, которая содержит следующие поля:Название книги (
char title[100]илиstd::string title)Автор (
char author[50])Год издания (
int year)Жанр (
Genre genre)
Реализуйте необходимые функции:
void inputBook(Book &b)void printBook(const Book &b)
В функции
main()создайте массив из 4-5 книг. Заполните массив данными (можно частично инициализировать в коде, а не вводить с клавиатуры, для экономии времени).Реализуйте меню для пользователя:
text1. Показать все книги 2. Показать книги определенного жанра (запросить у пользователя номер жанра) 3. Показать книги, изданные после определенного года (запросить год у пользователя) 4. Выход
Программа должна работать в цикле, пока пользователь не выберет пункт "Выход".