6 пр-1
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ИМ. А.А. УГАРОВА
(филиал) федерального государственного автономного образовательного
учреждения высшего образования
«Национальный исследовательский технологический университет «МИСиС»
Лабораторная работа № 6
на тему
«Массивы структур и массивы строк»
Выполнил: Студент группы № АТ 22-2з
.
Старый Оскол, 2024
1. Цель работы:
1. Получить практические навыки работы с динамическими строковыми данными.
2. Получить практические навыки работы со структурами.
3. Получить практические навыки организации динамических массивов с элементами сложной структуры
Вариант 13
#include <iostream>
struct student {
char* name;
int kurs;
float rating;
};
// Функция для освобождения памяти, выделенной для имен студентов
void freeMemory(student * students, int n) {
for (int i = 0; i < n; ++i) {
delete[] students[i].name;
}
}
int main() {
setlocale(LC_ALL, "RU");
// Ввод количества студентов
int n;
std::cout << "Введите количество студентов: ";
std::cin >> n;
// Создание динамического массива структур
student* students = new student[n];
// Ввод данных о студентах
for (int i = 0; i < n; ++i) {
// Ввод имени
std::cout << "Введите имя студента " << i + 1 << ": ";
char name[100]; // Буфер для временного хранения имени
std::cin >> name;
// Динамическое выделение памяти для имени и копирование данных
students[i].name = new char[strlen(name) + 1];
strcpy_s(students[i].name, strlen(name) + 1, name); // Используем безопасную функцию strcpy_s
// Ввод курса и оценки
std::cout << "Введите курс студента " << i + 1 << ": ";
std::cin >> students[i].kurs;
std::cout << "Введите оценку студента " << i + 1 << ": ";
std::cin >> students[i].rating;
}
// Вывод информации о студентах пятого курса
std::cout << "\nИнформация о студентах пятого курса:\n";
for (int i = 0; i < n; ++i) {
if (students[i].kurs == 5) {
std::cout << "Студент " << i + 1 << ":\n";
std::cout << "Имя: " << students[i].name << std::endl;
std::cout << "Курс: " << students[i].kurs << std::endl;
std::cout << "Оценка: " << students[i].rating << std::endl;
std::cout << "-----------------\n";
}
}
// Вызов функции для освобождения памяти
freeMemory(students, n);
// Освобождение памяти для массива структур
delete[] students;
return 0;
}