Помогите с заданием в C++. 1) Описать структурный тип, состоящий из компонентов согласно своему варианту.
Помогите с заданием в C++. 1) Описать структурный тип, состоящий из компонентов согласно своему варианту.
Вот пример решения задания:
#include <iostream>
#include <algorithm>
#include <string>
struct Student {
std::string name;
std::string group;
int semester;
int scholarship;
};
void printTable(const Student list[], int size) {
std::cout << "ФИО\t\tГруппа\tСеместр\tСтипендия" << std::endl;
for (int i = 0; i < size; i++) {
std::cout << list[i].name << "\t" << list[i].group << "\t" << list[i].semester << "\t" << list[i].scholarship << std::endl;
}
}
void increaseScholarship(Student list[], int size, std::string group, int amount) {
for (int i = 0; i < size; i++) {
if (list[i].group == group) {
list[i].scholarship += amount;
}
}
}
bool compareScholarship(const Student& a, const Student& b) {
return a.scholarship > b.scholarship;
}
void sortStudentsByScholarship(Student list[], int size) {
std::sort(list, list + size, compareScholarship);
}
void copyStudentsWithoutScholarship(const Student list[], int size, Student newList[], int& newSize) {
newSize = 0;
for (int i = 0; i < size; i++) {
if (list[i].scholarship == 0) {
newList[newSize] = list[i];
newSize++;
}
}
}
int main() {
const int size = 5;
Student list[size] = {
{"Иванов Иван Иванович", "Группа 1", 1, 1000},
{"Петров Петр Петрович", "Группа 2", 2, 1500},
{"Сидоров Сидор Сидорович", "Группа 1", 1, 800},
{"Алексеев Алексей Алексеевич", "Группа 3", 3, 1200},
{"Николаев Николай Николаевич", "Группа 2", 2, 900}
};
std::string group;
int amount;
std::cout << "Введите название группы: ";
std::cin >> group;
std::cout << "Введите сумму для увеличения стипендии: ";
std::cin >> amount;
increaseScholarship(list, size, group, amount);
std::cout << "Исходный массив list:" << std::endl;
printTable(list, size);
sortStudentsByScholarship(list, size);
std::cout << "Студенты по убыванию размера стипендии:" << std::endl;
printTable(list, size);
Student newList[size];
int newSize;
copyStudentsWithoutScholarship(list, size, newList, newSize);
std::cout << "Новый массив newList:" << std::endl;
printTable(newList, newSize);
return 0;
}
В данном примере структурный тип Student
состоит из компонентов name
(ФИО), group
(Группа), semester
(Семестр) и scholarship
(Стипендия).
В функции printTable
выводится массив студентов в табличном виде.
Функция increaseScholarship
увеличивает стипендию каждого студента заданной группы на заданную сумму.
Функция compareScholarship
используется для сортировки студентов по убыванию размера стипендии.
Функция sortStudentsByScholarship
сортирует массив студентов по убыванию размера стипендии.
Функция copyStudentsWithoutScholarship
копирует всех студентов, не получающих стипендию, в новый массив.
В функции main
создается и инициализируется массив list
из 5 студентов. Затем пользователю предлагается ввести название группы и сумму для увеличения стипендии. Выполняются все пункты задания и выводятся соответствующие результаты.