C/C++
Программирование. Помогите написать программу.
Помогите, пожалуйста. Университет планирует принять N студентов на обучение по некоторой специальности. Сто двадцать девять абитуриентов, подавших заявления (число абитуриентов больше плана приема), представили результаты трех ЕГЭ (результат каждого ЕГЭ оценивается в стобальной шкале). Требуется напечатать фамилии N абитуриентов, имеющих лучшие результаты, в порядке убывания набранной суммы баллов, причем фамилии абитуриентов , имеющих одинаковые суммы баллов, должны быть напечатаны в алфавитном порядке. В каждой строке печатается по одной фамилии, с указанием суммы баллов. Если несколько абитуриентов имеют ту же сумму баллов, что и оказавшийся на позиции с номером N, то печатаются фамилии всех абитуриентов с такой суммой баллов (даже если общее число абитуриентов окажется больше N), но эта часть списка отделяется от остального списка пустой строкой. Напишите программу, в которой используется не более двух массивов, причем только одномерных. Исходные данные - значение N (натуральное число), записываемое в первой строке и, в последующих строках, фамилии абитуриентов и набранные ими баллы по каждому из ЕГЭ (в одной строке записывается сначала фамилия, а затем результаты ЕГЭ одного абитуриента). Задание засчитывается только в том случае если имеются пояснения к методу решения и комментарии, позволяющие понять назначение основных переменных и содержание основных этапов решения.
python
# Ввод количества студентов
N = int(input())
# Создание пустого словаря для хранения фамилий и суммы баллов
students = {}
# Чтение данных об абитуриентах
for _ in range(129):
line = input().split()
name = line[0]
scores = list(map(int, line[1:]))
total_score = sum(scores)
# Добавление фамилии и суммы баллов в словарь
if total_score in students:
students[total_score].append(name)
else:
students[total_score] = [name]
# Сортировка словаря по убыванию суммы баллов
sorted_students = sorted(students.items(), reverse=True)
# Вывод фамилий абитуриентов с лучшими результатами
for score, names in sorted_students:
for name in sorted(names):
print(name, score)
# Пустая строка для отделения групп абитуриентов с одинаковыми суммами баллов
print()
Программа сначала считывает количество студентов N, затем в цикле считывает данные об абитуриентах и сохраняет их в словаре students, где ключом является сумма баллов, а значением - список фамилий абитуриентов с такой суммой баллов.
Затем словарь сортируется по убыванию суммы баллов, и фамилии абитуриентов выводятся в порядке убывания суммы баллов и алфавитном порядке.
Также, после вывода фамилий абитуриентов с одинаковыми суммами баллов, выводится пустая строка для отделения групп абитуриентов.
# Ввод количества студентов
N = int(input())
# Создание пустого словаря для хранения фамилий и суммы баллов
students = {}
# Чтение данных об абитуриентах
for _ in range(129):
line = input().split()
name = line[0]
scores = list(map(int, line[1:]))
total_score = sum(scores)
# Добавление фамилии и суммы баллов в словарь
if total_score in students:
students[total_score].append(name)
else:
students[total_score] = [name]
# Сортировка словаря по убыванию суммы баллов
sorted_students = sorted(students.items(), reverse=True)
# Вывод фамилий абитуриентов с лучшими результатами
for score, names in sorted_students:
for name in sorted(names):
print(name, score)
# Пустая строка для отделения групп абитуриентов с одинаковыми суммами баллов
print()
Программа сначала считывает количество студентов N, затем в цикле считывает данные об абитуриентах и сохраняет их в словаре students, где ключом является сумма баллов, а значением - список фамилий абитуриентов с такой суммой баллов.
Затем словарь сортируется по убыванию суммы баллов, и фамилии абитуриентов выводятся в порядке убывания суммы баллов и алфавитном порядке.
Также, после вывода фамилий абитуриентов с одинаковыми суммами баллов, выводится пустая строка для отделения групп абитуриентов.
Владимир Пянзин
Комментарий - это не код программы, переведённый на русский язык, а пояснения тех вещей, которые не ясны из самого кода. И твой код не работает, кстати.
#include
#include
#include
#include
#include
using namespace std;
struct Enrollee {
string name;
int first;
int second;
int third;
int sum()const {
return first + second + third;
}
private:
friend istream& operator>>(istream& inp, Enrollee& en) {
return inp >> en.name >> en.first >> en.second >> en.third;
}
friend ostream& operator
Хью Тацума
Поправка нужна!
if (quota
Хью Тацума
Всё-таки вот так! :)
if (quantity
Похожие вопросы
- Помогите написать программу на C++ Нето мои знания по программированию равны 0 а зачёт нужен
- Программирование , помогите написать контрольную
- Помогите написать программу на С
- Помогите написать программу на C++
- Помогите написать программу на с++
- Помогите написать программу на с++
- Помогите написать программу
- Помогите написать программу на С++
- С++. Структуры(struct). Помогите написать программу
- Помогите написать программу на С++