Найти три самые дорогие вещи - Turbo Pascal

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

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

Всем привет, помогите пожалуйста с программой, описание задачи в скрине.

А это заготовка, было бы не плохо на его основании сделать. Но не важно! Нужно сделать прогу с использованием двумерных символьных массивов, текстовых файлов и без процедур;

Заранее СПАСИБО за помощь!

Решение задачи: «Найти три самые дорогие вещи»

textual
Листинг программы
const mm=3; nn=25; Digits=['0'..'9'];
var
  a: array [1..mm+1,1..nn] of Char;
  b: array [1..mm+1] of Longint;
  m, i, j: Integer; c, d: Char;
begin
  Assign(input,'in.txt'); Reset(input); {m:=0;}
  while not EoF do begin
    j:=0; c:=#0; if m<=mm then Inc(m);
    while (j<nn) and not EoLn do begin
      d:=c; Read(c); Inc(j); a[m,j]:=c;
      if c in Digits then begin
        if not (d in Digits) then b[m]:=0;
        b[m]:=b[m]*10+Ord(c)-Ord('0');
      end;
    end; ReadLn;
    i:=m-1; while (i>0) and (b[m]>b[i]) do Dec(i); Inc(i);
    for j:=m-1 downto i+1 do a[j]:=a[j-1];
    a[i]:=a[m]; b[i]:=b[m];
  end;
  if m>mm then Dec(m);
  for i:=1 to m do begin
    for j:=1 to nn do if a[i,j]<>#0 then Write(a[i,j]) else Break; WriteLn;
  end;
  Close(input);
end.

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

  1. В начале кода объявляются необходимые переменные: mm, nn, Digits, а также переменные a, b, m, i, j, c и d.
  2. Затем происходит назначение файла input для чтения и сброс его в начало с помощью функции Reset.
  3. В цикле while происходит чтение символов из файла до тех пор, пока не достигнут конец файла (EoF).
  4. Внутри цикла while происходит проверка, что текущий символ не является нулем. Если это так, то увеличивается значение переменной m на единицу.
  5. Далее идет цикл while, который выполняется до тех пор, пока не будут прочитаны все символы из файла или пока не будет достигнут конец файла. Внутри этого цикла происходит чтение символа из файла, увеличение значения переменной j на единицу и присваивание значения текущего символа переменной c.
  6. Затем проверяется, является ли текущий символ цифрой. Если это так, то происходит проверка, является ли следующий символ цифрой. Если нет, то значение переменной b[m] устанавливается в ноль.
  7. Значение переменной b[m] увеличивается на 10, к нему добавляется порядковый номер текущего символа, вычисленный как разница между порядковыми номерами текущей и предыдущей цифры, и вычитается порядковый номер символа '0'.
  8. После окончания цикла while происходит сброс переменной m в значение m-1.
  9. Затем происходит спуск по массиву a от m до i+1, при этом значения a[j] присваиваются значениям a[j-1], а значения b[j] присваиваются значениям b[j-1].
  10. После этого происходит сброс переменной m в значение m-1 и начинается новый цикл while, который повторяется до тех пор, пока значение переменной b[m] больше значения b[i].
  11. В конце цикла while происходит запись в файл input всех символов из массива a, кроме нуля, и запись в файл вывода значения переменной b[m].
  12. Конец программы.

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


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

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

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