Задать вопрос
18 сентября, 19:38

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

+5
Ответы (1)
  1. 18 сентября, 21:06
    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
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Написать программу подведения итогов олимпийских игр, программу пользователь должен ввести кол-во медалей разного достоинства заваёваной ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
В Python С клавиатуры вводится натуральное число. Программа должна вывести следующее за ним четное число. Например, если ввести 7, то программа должна вывести 8, а если ввести 8, то программа должна вывести 10.
Ответы (1)
Программа должна выдавать ошибку если пользователь вводит ноль во втором числе, т. к на 0 делить нельзя и программа отправляет пользователя на повторный ввод, если пользователь умудряется допустить ошибку 3 раза подряд, то программа закрывается.
Ответы (1)
1) Напишите программу которая в последствии натуральных чисел определяет, есть ли в последовательности нечетные числа не оканчивающихся на 1. Вход: программа получает на выход кол-во чисел, а затем сами числа.
Ответы (2)
Какое событие наступит после того, как: А) ученик встретит учителя Б) пользователь выберет команду меню В) пользователь выберет объект правой кнопкой мыши Г) пользователь включит компьютер Д) пользователь перетянет левый нижний угол окна
Ответы (1)
Паскаль программа 1) Программа загадывает случайное целое число из отрезка [1; 10] и просит пользователя его угадать, вводя варианты с клавиатуры, пока пользователь не угадает число, программа будет ему подсказывать, сообщая больше или меньше число
Ответы (1)