Вопрос задан 24.06.2023 в 07:34. Предмет Информатика. Спрашивает Романова Софья.

Помогите пожалуйста, даю 30 баллов Дан массив записей, каждая из которых состоит из Фамилии и

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Борохтянова Эльвира.

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 место')

0 0
Отвечает Хиленко Ира.

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.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи, вы можете воспользоваться следующим псевдокодом:

  1. Создайте динамический массив (список) для хранения записей участников.
  2. Прочитайте число участников n.
  3. Прочитайте n строк, каждая из которых содержит фамилию, имя и результат участника. Добавьте каждую запись в динамический массив.
  4. Отсортируйте массив в порядке убывания баллов. Вы можете использовать любой алгоритм сортировки, например, сортировку пузырьком, сортировку вставками или сортировку слиянием.
  5. Переберите массив и определите место каждого участника, учитывая одинаковые баллы.
  6. Выведите фамилии участников и их места в соответствии с заданным форматом.

Вот пример кода на 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) + ' место')

Этот код сначала собирает все записи в список, затем сортирует их по баллам и определяет места, учитывая одинаковые баллы. Наконец, он выводит результаты в соответствии с заданным форматом.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос