6 пр
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ИМ. А.А. УГАРОВА
(филиал) федерального государственного автономного образовательного
учреждения высшего образования
«Национальный исследовательский технологический университет «МИСиС»
Лабораторная работа № 6
на тему
«Массивы структур и массивы строк»
Выполнил: Студент группы № АТ 22-2з
.
Старый Оскол, 2024
1. Цель работы:
1. Получить практические навыки работы с динамическими строковыми данными.
2. Получить практические навыки работы со структурами.
3. Получить практические навыки организации динамических массивов с элементами сложной структуры
Вариант 8
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
// Структура для представления студента
struct Student {
std::string name;
int kurs;
float rating;
};
// Функция для печати матрицы студентов
void printStudentMatrix(const std::vector<std::vector<Student>>& matrix) {
for (const auto& row : matrix) {
for (const auto& student : row) {
std::cout << "Name: " << student.name << ", Kurs: " << student.kurs << ", Rating: " << student.rating << "\t";
}
std::cout << std::endl;
}
}
// Функция для удаления K строк из конца матрицы
void deleteRowsFromEnd(std::vector<std::vector<Student>>& matrix, int K) {
// Убеждаемся, что K не превышает текущее количество строк
K = (matrix.size() < K) ? matrix.size() : K;
// Уменьшаем количество строк
matrix.erase(matrix.end() - K, matrix.end());
}
int main() {
// Пример создания матрицы студентов
std::vector<std::vector<Student>> studentMatrix = {
{{"Alice", 1, 4.5}, {"Bob", 2, 3.0}, {"Charlie", 3, 2.5}},
{{"David", 1, 4.0}, {"Eva", 2, 3.8}, {"Frank", 3, 2.0}},
{{"Grace", 1, 3.2}, {"Henry", 2, 2.7}, {"Ivy", 3, 4.1}}
};
// Печать исходной матрицы
std::cout << "Original Student Matrix:\n";
printStudentMatrix(studentMatrix);
// Условие для удаления студентов с рейтингом < 3.0
auto condition = [](const Student& student) { return student.rating < 3.0; };
// Удаление элементов, соответствующих условию
for (auto& row : studentMatrix) {
row.erase(std::remove_if(row.begin(), row.end(), condition), row.end());
}
// Печать матрицы после удаления
std::cout << "\nStudent Matrix after removing students with rating < 3.0:\n";
printStudentMatrix(studentMatrix);
// Удаление K строк из конца матрицы
int K = 1;
deleteRowsFromEnd(studentMatrix, K);
// Печать матрицы после удаления K строк из конца
std::cout << "\nStudent Matrix after deleting " << K << " rows from the end:\n";
printStudentMatrix(studentMatrix);
return 0;
}