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

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

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

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

Листинг программы
  1. Program p6;
  2. type
  3. t=array[1..25] of char;
  4. tt=array[1..10] of t;
  5. var
  6. A:tt;
  7. i,j:byte;
  8. p,k:char;
  9. begin
  10. assign(input,'in.txt');
  11. reset(input);
  12. assign(output,'out.txt');
  13. rewrite (output);
  14. for i:=1 to 10 do
  15. begin
  16. for j:= 1 to 25 do
  17. read(A[i,j]);
  18. readln
  19. end;
  20. for i:=1 to 10 do
  21. begin
  22. for j:=1 to 25 do
  23. write (A[i,j]);
  24. writeln
  25. end;
  26. close(input);
  27. close(output);
  28. end.
А это заготовка, было бы не плохо на его основании сделать. Но не важно! Нужно сделать прогу с использованием двумерных символьных массивов, текстовых файлов и без процедур;

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

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

textual
Листинг программы
  1. const mm=3; nn=25; Digits=['0'..'9'];
  2. var
  3.   a: array [1..mm+1,1..nn] of Char;
  4.   b: array [1..mm+1] of Longint;
  5.   m, i, j: Integer; c, d: Char;
  6. begin
  7.   Assign(input,'in.txt'); Reset(input); {m:=0;}
  8.   while not EoF do begin
  9.     j:=0; c:=#0; if m<=mm then Inc(m);
  10.     while (j<nn) and not EoLn do begin
  11.       d:=c; Read(c); Inc(j); a[m,j]:=c;
  12.       if c in Digits then begin
  13.         if not (d in Digits) then b[m]:=0;
  14.         b[m]:=b[m]*10+Ord(c)-Ord('0');
  15.       end;
  16.     end; ReadLn;
  17.     i:=m-1; while (i>0) and (b[m]>b[i]) do Dec(i); Inc(i);
  18.     for j:=m-1 downto i+1 do a[j]:=a[j-1];
  19.     a[i]:=a[m]; b[i]:=b[m];
  20.   end;
  21.   if m>mm then Dec(m);
  22.   for i:=1 to m do begin
  23.     for j:=1 to nn do if a[i,j]<>#0 then Write(a[i,j]) else Break; WriteLn;
  24.   end;
  25.   Close(input);
  26. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы