
Написать программу подведения итогов олимпийских игр,программу пользователь должен ввести кол-во
медалей разного достоинства заваёваной каждой командой участниц,а программа должна посчитать общее число медалей и соотвествующие число очков,после чего упорядочить список в соответствии с набранным кол-ом очков за золотую 7очков,серебряная 6 очков,бронзовая 5очков.

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

const
nMax = 50; { максимум 50 команд }
cGold = 7;
cSilver = 6;
cBronze = 5;
type
cName = string[20];
RC = record
position: byte;
name: cName;
nGold: byte;
nSilver: byte;
nBronze: byte;
cTotal: byte
end;
tM = array[1..nMax, 1..2] of byte;
procedure Shell(var a: tM; n: integer);
{ Сортировка методом Шелла массива a[1..n, 1..2]
по убыванию значений элементов второго столбца. }
var
i, j, step, t1, t2: integer;
begin
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i, 2] < a[i + step, 2] then
begin
t1 := a[i, 1]; t2 := a[i, 2];
a[i, 1] := a[i + 1, 1]; a[i, 2] := a[i + 1, 2];
a[i + 1, 1] := t1; a[i + 1, 2] := t2
end;
i := i + step
end
end;
step := step div 2
end
end;
{ Основная программа }
var
f: file of RC;
a: tM;
i, n: byte;
s: cName;
t: RC;
begin
{ Организуем ввод данных }
Assign(f, 'Olympic.in');
Rewrite(f);
n := 0;
repeat
Writeln('Введите наименование команды или * для окончания ввода');
Readln(s);
if s[1] <> '*' then
begin
n := n + 1;
Write('Количество медалей: золото, серебро, бронза: ');
Readln(t.nGold, t.nSilver, t.nBronze);
t.position := n;
t.name := s;
t.cTotal := t.nGold * cGold + t.nSilver * cSilver + t.nBronze * cBronze;
Write(f, t);
a[n, 1] := t.position; a[n, 2] := t.cTotal
end
until s[1] = '*';
Reset(f);
{ Выполняем сортировку заполненного массива a,
определяя положение записей в файле }
Shell(a, n);
{ Выводим результаты, используя прямой доступ к файлу }
Writeln('Результаты олимпиады');
for i := 1 to n do
begin
seek(f, a[i, 1] - 1);
Read(f, t);
Writeln(i, ': ', t.name, '(', t.nGold, ' зол, ', t.nSilver, ' сер, ',
t.nBronze, ' бронз), очков- ', t.cTotal)
end;
Close(f);
end.
Тестовое решение:
Введите наименование команды или * для окончания ввода
Веселые медузы
Количество медалей: золото, серебро, бронза: 4 6 10
Введите наименование команды или * для окончания ввода
Юные сурки
Количество медалей: золото, серебро, бронза: 2 0 5
Введите наименование команды или * для окончания ввода
Черепашки-ниндзя
Количество медалей: золото, серебро, бронза: 3 7 11
Введите наименование команды или * для окончания ввода
*
Результаты олимпиады
1: Черепашки-ниндзя(3 зол, 7 сер, 11 бронз), очков- 118
2: Веселые медузы(4 зол, 6 сер, 10 бронз), очков- 114
3: Юные сурки(2 зол, 0 сер, 5 бронз), очков- 39



Для решения данной задачи можно использовать язык программирования Python. Вот пример программы, которая решает данную задачу:
```python # Создаем пустой список для хранения результатов команд results = []
# Получаем от пользователя количество команд num_teams = int(input("Введите количество команд: "))
# Получаем от пользователя количество медалей разного достоинства для каждой команды for i in range(num_teams): gold = int(input(f"Введите количество золотых медалей для команды {i+1}: ")) silver = int(input(f"Введите количество серебряных медалей для команды {i+1}: ")) bronze = int(input(f"Введите количество бронзовых медалей для команды {i+1}: "))
# Рассчитываем общее количество медалей и соответствующее число очков для каждой команды total_medals = gold + silver + bronze total_points = gold * 7 + silver * 6 + bronze * 5
# Добавляем результаты в список results.append((total_points, total_medals))
# Сортируем список результатов по набранным очкам в порядке убывания results.sort(reverse=True)
# Выводим отсортированный список результатов print("Результаты олимпийских игр:") for i, result in enumerate(results): print(f"Место {i+1}: {result[1]} медалей, {result[0]} очков") ```
Программа начинается с создания пустого списка `results`, в котором будут храниться результаты команд. Затем программа запрашивает у пользователя количество команд `num_teams`.
Далее, в цикле, программа запрашивает у пользователя количество золотых, серебряных и бронзовых медалей для каждой команды. Для каждой команды программа рассчитывает общее количество медалей и соответствующее число очков, используя заданные в условии формулы. Результаты добавляются в список `results` в виде кортежа `(total_points, total_medals)`.
После того, как все результаты введены, список `results` сортируется в порядке убывания по набранным очкам.
Наконец, программа выводит отсортированный список результатов, показывая место команды, количество медалей и число очков.
Надеюсь, это поможет вам решить задачу!


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







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