Мария-Кострыгина175
?>

ТЕРМІНОВО!ВІ На вході маємо ціле число, яке запитується в користувача.Програма переводить його в текст та виводить результат, додаючи до нього символ '!' в кінець (не використовувати додаткові повідомлення)Програма Python)

Информатика

Ответы

iqtoy2010
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
ev89036973460
Const
  nm = 50;{ предельное число товаров }

var
  mn: array[1..nm] of string;
  mk, ms: array[1..nm] of real;
  i, k, n: integer;
  min: real;

begin
  Write('Введите число продуктов на складе (не более ', nm, '): ');
  Readln(n);
  min := 1e10;
  for i := 1 to n do
  begin
    Write('Наименование продукта ', i, ': '); Readln(mn[i]);
    Write('Количество и стоимость: '); Readln(mk[i], ms[i]);
    if min > mk[i] then begin min := mk[i]; k := i end
  end; 
  Writeln('На складе меньше всего продукта ', mn[k], ': ', mk[k],
    ' кг. стоимостью ', ms[k], ' руб. за 1 кг.')
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

ТЕРМІНОВО!ВІ На вході маємо ціле число, яке запитується в користувача.Програма переводить його в текст та виводить результат, додаючи до нього символ '!' в кінець (не використовувати додаткові повідомлення)Програма Python)
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

samogon-mozhaisk
михаил
PetrovnaTsukanov
bergamon
triumfmodern
alexeytikhonov
glebovaludok
Voshchula David393
Виктор Попова
shabaev19542355
vsemvsego306
Исаченко Тераски1181
Dlyamila
Aleksandrovich-Mayatskikh
Faed_Arakcheeva