
Помогите пожалуйста, даю 30 баллов Дан массив записей, каждая из которых состоит из Фамилии и
имени учащегося и результата, полученного на районной олимпиаде. Необходимо вывести фамилии трех победителей в порядке убывания балла и место, которое они заняли. Если есть несколько учащихся с одинаковым баллом, выводятся все фамилии. Данные подаются на вход в следующем формате: число участников n, за которым следуют n строк (n>3) Пример: 5 Иванов Вася 100 Петров Федя 150 Сидоров Сеня 99 Катаев Вова 120 Пупкин Вася 120 Программа должна вывести: Петров Федя – 1 место Катаев Вова – 2 место Пупкин Вася -2 место Иванов Вася – 3 место Указание. При сохранении записей использовать динамический массив.

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

Python
f=open('your file.txt')
f=f.readlines()
list_0=''.join(f).split('\n')
stud_count=list_0[0]
list_0=list_0[1:]
list_stud=list(map(lambda x: x.split(), list_0))
list_stud=list(map(lambda x: [x[0], x[1], int(x[2])], list_stud))
list_stud.sort(key=lambda x: x[2], reverse=True)
list_balls=list(map(lambda x: int(x[2]), list_stud))
first=list_balls.count(list_stud[0][2])
if first>1:
for i in range(first):
print(list_stud[i][0], list_stud[i][1], '- 1 место')
else:
print(list_stud[0][0], list_stud[0][1], '- 1 место')
second= list_balls.count(list_stud[first][2])
if second>1:
for i in range(first, second+first):
print(list_stud[i][0], list_stud[i][1], '- 2 место')
else:
print(list_stud[first][0], list_stud[first][1], '- 2 место')
third=list_balls.count(list_stud[first+second][2])
if third>1:
for i in range(first+second, second+first+third):
print(list_stud[i][0], list_stud[i][1], '- 3 место')
else:
print(list_stud[first+second][0], list_stud[first+second][1], '- 3 место')



type
Stud=record
fi:string;
re:byte;
end;
var
a:array of Stud;
i,m,n,max,err:integer;
x1:string;
begin
readln(n);
setlength(a,n);
dec(n);
for i:=0 to n do
with a[i] do
begin
readln(x1);
m:=pos(' ',x1,pos(' ',x1,1)+1);
fi:=copy(x1,1,m-1);
delete(x1,1,m);
val(x1,re,err);
end;
writeln;
for m:=1 to 3 do
begin
max:=0;
for i:=0 to n do
if a[i].re > max then
max:=a[i].re;
for i:=0 to n do
if a[i].re = max then
begin
writeln(a[i].fi,' -',m,' место!');
a[i].re:=0;
end;
end;
end.



Для решения данной задачи, вы можете воспользоваться следующим псевдокодом:
- Создайте динамический массив (список) для хранения записей участников.
- Прочитайте число участников n.
- Прочитайте n строк, каждая из которых содержит фамилию, имя и результат участника. Добавьте каждую запись в динамический массив.
- Отсортируйте массив в порядке убывания баллов. Вы можете использовать любой алгоритм сортировки, например, сортировку пузырьком, сортировку вставками или сортировку слиянием.
- Переберите массив и определите место каждого участника, учитывая одинаковые баллы.
- Выведите фамилии участников и их места в соответствии с заданным форматом.
Вот пример кода на Python для выполнения этой задачи:
python# Создаем пустой список для хранения записей
records = []
# Читаем число участников
n = int(input())
for i in range(n):
# Читаем запись участника и добавляем её в список
record = input().split()
records.append((record[0] + ' ' + record[1], int(record[2])))
# Сортируем список в порядке убывания баллов
records.sort(key=lambda x: (-x[1], x[0]))
# Определяем места и выводим результаты
place = 1
for i in range(n):
if i > 0 and records[i][1] != records[i - 1][1]:
place = i + 1
print(records[i][0] + ' - ' + str(place) + ' место')
Этот код сначала собирает все записи в список, затем сортирует их по баллам и определяет места, учитывая одинаковые баллы. Наконец, он выводит результаты в соответствии с заданным форматом.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili