М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
boyko3333
boyko3333
19.12.2020 01:42 •  Информатика

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

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

Заданы сначала количество учащихся 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
вот мой код:
#include
#include
#include
#include
using namespace std;

struct man {
string name;
string surname;
double point;
};

bool s (man a, man b) {
return a.point >= b.point;
}

int main() {
int n;
cin >> n;
vector a(n);
for (int i = 0; i < n; i++) {
string temp_name, temp_surname;
int pointTemp1, pointTemp2, pointTemp3;
double temp_point;
cin >> temp_name >> temp_surname >> pointTemp1 >> pointTemp2 >> pointTemp3;
temp_point = pointTemp1 + pointTemp2 + pointTemp3;
man struct_temp;
struct_temp.name = temp_name;
struct_temp.surname = temp_surname;
struct_temp.point = temp_point;
a[i] = struct_temp;
}
stable_sort(a.begin(), a.end(), s);
for (auto now : a) {
cout << now.name << ' ' << now.surname << endl;
}
return 0;
}
Надо как-то добавить ,когда четыре отличника

👇
Открыть все ответы
Ответ:
nazarkooo
nazarkooo
19.12.2020

#include <iostream>

#include <vector>

#include <map>

#include <cmath>

#include <queue>

#include <set>

#include <iomanip>

#include <map>

using namespace std;

signed main() {

   ios_base::sync_with_stdio(0);

   cin.tie(0);

   cout.tie(0);

   int n,m;

   cin >> n >> m;

   int max_val = -1,pointer = -1;

   for(int i = 0; i < n; i++)

   {

       int sum = 0,k;

       for(int j = 0; j < m; j++)

       {

           cin >> k;

           sum += k;

       }

       if(sum > max_val)

       {

           max_val = sum;

           pointer = i;

       }

   }

   cout << max_val << "\n" << pointer;

}

4,7(27 оценок)
Ответ:
анч21
анч21
19.12.2020

Начальное число — 5

Выполняем команды:

Первая команда — 5 + 1 = 6. Потом у нас идут три двойки. Это значит, что мы три раза подставляем какое-то число b к концу текущего (к концу 6). Т.к. в результате мы видим, что после шести у нас стоит две пятерки, это значит, что к шести доставили две пятерки. Третья команда — 2, но после нее идет единица, что говорит о том, что сначала в конец поставляется число b и потом все число увеличивается на единицу. Смотрим: в конце полученного числа стоит шесть. Если убрать единицу, то будет пять, что говорит о том, что число b равно пяти.

ответ: b = 5

4,8(33 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ