Есть ответ 👍

Выведите фамилии и имена учащихся в порядке убывания их среднего балла.

Входные данные

Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Выходные данные

Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Если несколько учащихся имеют одинаковые средние баллы, то их нужно выводить в порядке, заданном во входных данных.

Sample Input:

3
Markov Valeriy 5 5 5
Sergey Petrov 1 1 1
Petrov Petr 3 3 3
Sample Output:

Markov Valeriy
Petrov Petr
Sergey Petrov

241
377
Посмотреть ответы 2

Ответы на вопрос:


#include lt;iostreamgt;

#include lt;cstringgt;

#include lt;vectorgt;

#include lt;algorithmgt;

struct StudentData

{

std::string name;

std::string surname;

int math;

int phys;

int comp_science;

};

bool

comp(const StudentData amp;a, const StudentData amp;b)

{

int tmp1 = a.math + a.phys + a.comp_science;

int tmp2 = b.math + b.phys + b.comp_science;

return tmp1 gt; tmp2 true : false;

}

int

main(void)

{

int n;

std::cin gt;gt; n;

std::vectorlt; StudentData gt; data(n);

for (int i = 0; i lt; n; i++) {

std::cin gt;gt; data[i].name gt;gt; data[i].surname;

std::cin gt;gt; data[i].math gt;gt; data[i].phys gt;gt; data[i].comp_science;

}

std::sort(data.begin(), data.end(), comp);

for (int i = 0; i lt; n; i++) {

std::cout lt;lt; data[i].name lt;lt; " " lt;lt; data[i].surname lt;lt; std::endl;

}

return 0;

}

Объяснение:

Ivan190901
4,7(15 оценок)

For i: =0 to 10 do a[i]: = i + 1;   // 1..11for i: =1 to 10 do a[i]: = a[i-1]; // 1..1a[7]: =1;

Популярно: Информатика