Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2022, 19:34   #1
nik0l@y
Новичок
Джуниор
 
Регистрация: 20.05.2022
Сообщений: 1
По умолчанию Сортировка данных из структуры - нужно вывести указанное количество абитуриентов n, которые имеют наибольшую сумму баллов

Добрый день, можете пожалуйста подсказать касаемо задания?

Нужно вывести указанное количество абитуриентов n, которые имеют наибольшую сумму баллов. Я смог сделать вывод наибольшего количества баллов, но это просто сортировка выбранного количества позиций структуры. Конкретно это задание решается в if == 3.

Нашел тут на форуме аналогичную тему, где применялись указатели - https://www.programmersforum.ru/showthread.php?t=285039 , но она датирована 2009 годом и там почти ничего непонятно...

С++ 14.

Код:
#include <string>
#include <iostream>



using namespace std;

struct marks {
    int bio;
    int math;
    int inf;
    int eng;
    int geo;
};

struct Abiturient // Створюємо структуру
{
    int id{};
    string name;
    string surname;
    string address;
    long phone{}; 
    marks built; 
};




int main() {
    int num = 0;


    Abiturient cr[] = {
            {6347234, "Дмитро",     "Шевченко",   "Ulica", 88005536, 76, 95, 87, 73, 82},
            {6755787, "Данило",     "Микитюк",    "Ulica", 88005536, 98, 92, 98, 93, 92},
            {6756234, "Константин", "Макогонюк",  "Ulica", 88005536, 87, 93, 89, 87, 76},
            {6756312, "Роман",      "Голяк",      "Ulica", 88005536, 78, 75, 78, 73, 74},
            {6756498, "Егор",       "Хмарський",  "Ulica", 88005536, 64, 69, 67, 68, 68},
            {6800453, "В'ячеслав",  "Поліщук",    "Ulica", 88005536, 83, 84, 79, 83, 87},
            {6801344, "Богдан",     "Юрчак",      "Ulica", 88005536, 75, 72, 76, 75, 73},
            {6801423, "Іван",       "Смірнов",    "Ulica", 88005536, 81, 83, 88, 87, 81},
            {7102332, "Станіслав",  "Цегельний",  "Ulica", 88005536, 79, 82, 76, 72, 72},
            {7123443, "Александр",  "Самойленко", "Ulica", 88005536, 86, 83, 98, 87, 82},
            {8798787, "Ігор",       "Ващенко",    "Ulica", 88005536, 99, 99, 99, 99, 99},
    };


    cout << "1. список абітурієнтів, що мають незадовільні оцінки;\n"
            "2. список абітурієнтів, у яких сума балів вище заданої;\n"
            "3. вибрати вказану кількість n абітурієнтів, що мають найбільшу суму балів.\n";
    cin >> num;

    if (num == 1) {
        int ocinka;
        cin >> ocinka;
        for (int i = 0; i < 10; ++i) {
            if ((ocinka > cr[i].built.bio) && (ocinka > cr[i].built.math) && (ocinka > cr[i].built.inf) &&
                (ocinka > cr[i].built.eng) &&
                (ocinka > cr[i].built.geo)) {
                cout << cr[i].name << endl;
            }
        }
    }

    if (num == 2) {
        int sumb;
        cin >> sumb;
        for (int i = 0; i < 10; ++i) {
            if ((sumb >
                 (cr[i].built.bio + cr[i].built.math + cr[i].built.inf + cr[i].built.eng + cr[i].built.geo))) {
                cout << cr[i].name << endl;
            }
        }
    }
    if (num == 3) {
        int a[100], b, i, j, c;

        cin >> b;
        for (int i = 0; i <= b - 1; i++)
            a[i] = cr[i].built.bio + cr[i].built.math + cr[i].built.inf + cr[i].built.eng + cr[i].built.geo;

        for (i = 0; i < b - 1; i++)
            for (j = i + 1; j < b; j++)
                if (a[i] < a[j])
                {
                    c = a[i];
                    a[i] = a[j];
                    a[j] = c;

                }
        for (i = 0; i < b; i++)
            cout << cr[i].name <<" "<< a[i] << endl;

    }
}
nik0l@y вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В файле записаны данные о результатах сдачи экзамена. Вывести в другой файл фамилии и имена тех учеников, которые получили больше 80 баллов. Вася195 Паскаль, Turbo Pascal, PascalABC.NET 8 27.10.2016 13:21
в текстовом файле подсчитать количество всех различных слов из латинских букв без учета регистра, которые имеют заданную длину slava5170 Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 5 09.10.2013 17:47
Найти количество членов последовательности b1,b2..bn, которые имеют четные порядковые номера и являются нечетными числами (Паскаль Vetal_1715 Помощь студентам 3 23.05.2012 13:20
определить количество четных чисел и количество нечетных чисел массива, которые вводятся в МЕМО, вывести в поле компонента Edit. Pyxy Помощь студентам 2 21.03.2012 23:24
Delphi. получить сумму тех чисел которые кратны 5 и имеют отрицательное значение Crabobass Помощь студентам 4 06.03.2011 22:21