profile
Размещено 4 года назад по предмету Информатика от legioner47890

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

  1. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    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


    1. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Существует пять схем сортировки, откуда я знаю, что у вас называют "обычным образом"? Еще раз: надо писать все ограничения в условии сразу, а теперь поздно: задача решена и работает.
    2. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Если что-то иначе надо, то делается новое задание и в его условии все формулируется.
    3. Ответ на вопрос
      Ответ на вопрос дан legioner47890
      хорошо, спасибо и на этом
    4. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      А желание сейчас что-то тут "по-другому" переписать - это всего лишь Ваше "Я был небрежен в формулировках, а чужой труд не ценю".
    5. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Есть Правила на данном Сервисе и их должны соблюдать ОБЕ стороны.
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.