Спартакиада Тур I, задача 2 - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

В ближайшее время в г. Бресте планируется провести школьную городскую спартакиаду. Каждая средняя школа города должна выставить на спартакиаду команду в составе трех человек. Программа спартакиады включает в себя следующие виды упражнений: подтягивание на перекладине, отжимание от пола, приседания. Спартакиада проводится в три тура: в первом туре участники будут подтягиваться на перекладине, во втором – отжиматься от пола, в третьем – приседать. Жюри спартакиады приняло решение применить в судействе рейтинговую систему. После каждого тура подводится промежуточный рейтинг команды, который определяется суммой баллов, набранных тремя участниками команды в данном виде упражнений. После проведения трех туров спартакиады жюри определяет общий рейтинг команды, равный сумме промежуточных рейтингов команды в каждом из трех туров. Команда с максимальным общим рейтингом объявляется победителем спартакиады. Так как не все виды упражнений являются равнозначными результаты каждого из них жюри оценивает особым образом. За каждое подтягивание участнику идет в зачет X баллов, за каждое отжимание – Y баллов, за каждое приседание – Z баллов. Эти критерии достаточно объективно отражают сложность выполняемых упражнений. Однако, при формировании команды руководство средней школы № 14 г. Бреста столкнулось с некоторыми трудностями. В школе учатся N учащихся, известны спортивные данные каждого из них: Ai – число подтягиваний на перекладине, Bi – число отжиманий от пола и Ci – число приседаний. Но имея даже такие данные о каждом учащемся, достаточно сложно определить состав команды. Так как одни учащиеся, например, хорошо подтягиваются на перекладине, но плохо отжимаются, а другие наоборот. Ваша задача помочь руководству средней школы сформировать состав команды из трех человек так, чтобы общий рейтинг команды на спартакиаде был максимален. Входные данные Первая строка входного файла содержит три целых числа X, Y и Z (1 ≤ X, Y, Z ≤ 104), разделенных одиночными пробелами. Вторая строка содержит целое число N (3 ≤ N ≤ 105) – число учащихся в школе. Каждая из последующих N строк описывает спортивные данные каждого учащегося школы и содержит три целых числа Ai, Bi и Ci (1 ≤ Ai, Bi, Ci ≤ 104), разделенных одиночными пробелами. Выходные данные Выходной файл должен содержать три целых числа, разделенные одиночными пробелами – номера учащихся, которые должны войти в команду. Учащиеся нумеруются последовательно, начиная с единицы в порядке ввода их данных. Если вариантов решения несколько, то выведете любой из них. input.txt 10 10 10 4 1 1 1 10 1 1 1 10 1 output.txt 2 3 4 Пояснения Общий рейтинг 360 input.txt 5 3 4 7 2 7 12 13 10 5 6 7 5 1 1 20 8 2 14 3 21 4 7 9 8 1 1 10 output.txt 7 2 5 Пояснения Общий рейтинг 311 Вот задача. Выдаёт ошибку "Error 29: Ordinal type expected." Нашёл что это за ошибка, но не понимаю как исправить. А сделать массив меньше нельзя.
Как исправить? Можно не через массив. Заранее спасибо!!!

Решение задачи: «Спартакиада Тур I, задача 2»

textual
Листинг программы
type
   rec=record
     n,r:longint;
   end;
var
  a,b,c,x,y,z,n,i,j:longint;
  r:array[1..4] of rec;
  t:rec;
begin
  readln(a,b,c,n);
  for n:=1 to n do begin
    readln(x,y,z);
    r[4].r:=x*a+y*b+z*c;
    r[4].n:=n;
    for i:=1 to 3 do
      for j:=i+1 to 4 do
        if r[i].r<r[j].r then begin
          t:=r[j];
          r[j]:=r[i];
          r[i]:=t;
        end;
    end;
    for i:=1 to 3 do write(r[i].n,' ');
end.

Объяснение кода листинга программы

Данный код представляет собой решение задачи по программированию, которая относится к Спартакиаде Тур I, задача 2. В коде используется язык программирования Turbo Pascal. Он содержит следующие переменные:

  1. a, b, c, n - переменные типа longint, которые считываются с помощью функции readln(). Их значения используются для вычисления значения переменной r.
  2. r - переменная типа array[1..4] of rec. Эта переменная содержит массив из 4 записей типа rec. Каждая запись имеет два поля: r и n. Значение переменной r считывается с помощью функции readln() и используется для вычисления значения переменной t.
  3. t - переменная типа rec. Она используется для временного хранения значения переменной r в процессе выполнения цикла.
  4. i, j - переменные типа longint. Они используются для сравнения значений переменных r в цикле. Цель данного кода - вычислить сумму произведений чисел a, b и c, а затем вывести на экран номера чисел, которые были использованы при вычислении этой суммы. Для решения задачи используется алгоритм сортировки пузырьком. В цикле происходит следующее:
  5. Для каждого числа n (исключая само число n) считываются числа x, y и z.
  6. Значение переменной r[4] присваивается произведению чисел x, y и z.
  7. Значение переменной n присваивается числу n.
  8. Для каждой пары чисел i и j (от 1 до 3) происходит сравнение значения переменной r[i] с значением переменной r[j]. Если значение переменной r[i] меньше значения переменной r[j], то значения переменных r[i], r[j] и t[j] меняются местами с помощью операций присваивания.
  9. После завершения цикла происходит вывод на экран номеров чисел, которые были использованы при вычислении суммы. Таким образом, данный код решает задачу по сортировке чисел и вычислению их суммы, используя алгоритм сортировки пузырьком.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы