Вопрос задан 21.01.2020 в 07:51. Предмет Информатика. Спрашивает Смирнов Ярослав.

Написать программу подведения итогов олимпийских игр,программу пользователь должен ввести кол-во

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

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

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

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


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

Для решения данной задачи можно использовать язык программирования 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` сортируется в порядке убывания по набранным очкам.

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

Надеюсь, это поможет вам решить задачу!

0 0

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

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

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