Помогите с заданием в C++. 1) Описать структурный тип, состоящий из компонентов согласно своему варианту.
Дата публикации:

Помогите с заданием в C++. 1) Описать структурный тип, состоящий из компонентов согласно своему варианту.

2fd6b5dc

Помогите с заданием в 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 студентов. Затем пользователю предлагается ввести название группы и сумму для увеличения стипендии. Выполняются все пункты задания и выводятся соответствующие результаты.