Найти в файле наибольшее число и два числа, стоящих перед ним - Pascal

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

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

Создать типизированный файл целых чисел и поместить в него 12 случайных чисел. Удалить из файла три первых числа. Найти в файле наибольшее число и два числа, стоящих перед ним. Вывести в текстовый файл найденные значения и их сумму.

Решение задачи: «Найти в файле наибольшее число и два числа, стоящих перед ним»

textual
Листинг программы
  1. program pr;
  2. const n=12;
  3. var f:file of integer;
  4.     g:text;
  5.     i,a,p,mx,imx:integer;
  6.     s:real;
  7. begin
  8. randomize;
  9. assign(f,'c:\file1.txt');
  10. rewrite(f);
  11. assign(g,'c:\file2.txt');
  12. rewrite(g);
  13. for i:=1 to n do
  14.  begin
  15.   a:=random(50);
  16.   write(f,a);
  17.  end;
  18. reset(f);
  19. writeln('Содержание файла:');
  20. while not eof(f) do
  21.  begin
  22.   read(f,a);
  23.   write(a,' ');
  24. end;
  25. writeln;
  26. seek(f,0);
  27. p:=0;
  28. for i:=3 to filesize(f)-1 do
  29.  begin
  30.   seek(f,i);
  31.   read(f,a);
  32.   seek(f,p);
  33.   write(f,a);
  34.   p:=p+1;
  35.  end;
  36. seek(f,filesize(f)-2);
  37. truncate(f);
  38. writeln('Удаление первых 3:');
  39. seek(f,0);
  40. while not eof(f) do
  41.  begin
  42.   read(f,a);
  43.   write(a,' ');
  44. end;
  45. writeln;
  46. seek(f,0);
  47. read(f,mx);
  48. imx:=0;
  49. for i:=1 to filesize(f)-1 do
  50.  begin
  51.   read(f,a);
  52.   if a>mx then
  53.    begin
  54.     mx:=a;
  55.     imx:=i;
  56.    end;
  57.  end;
  58. if imx<2 then
  59.  begin
  60.   writeln(g,'Максимальное =',mx,' его номер =',imx+1);
  61.   writeln(g,'Перед ним нет 2 чисел');
  62.  end
  63. else
  64.  begin
  65.   s:=0;
  66.   seek(f,imx);
  67.   for i:=imx downto imx-2 do
  68.    begin
  69.     seek(f,i);
  70.     read(f,a);
  71.     s:=s+a;
  72.     write(g,' ',a);
  73.    end;
  74.   writeln(g);
  75.   write(g,'Cумма=',s:0:2);
  76.  end;
  77. close(f);
  78. close (g);
  79. end.

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

Программа начинается с определения константы n, которая определяет количество чисел, которые будут записаны в файл. Затем определяются переменные f и g, которые представляют собой файлы для чтения и записи соответственно. Далее следует цикл for, который повторяется n раз. В каждой итерации этого цикла генерируется случайное число a между 1 и 50 и записывается в файл f. После этого сбрасывается счетчик i и цикл for повторяется снова. После завершения цикла for, содержимое файла f выводится на экран. Затем файл f сбрасывается в начало и начинается цикл while, который повторяется до тех пор, пока не будет достигнут конец файла. В каждой итерации этого цикла число a считывается из файла f, записывается в переменную a и выводится на экран. После окончания цикла while, файл f сбрасывается в начало и начинается цикл for, который повторяется до тех пор, пока не будет достигнут конец файла. В каждой итерации этого цикла число a считывается из файла f, записывается в переменную a и выводится на экран. Если в процессе выполнения программы было обнаружено, что наибольшее число (mx) стоит перед двумя другими числами (imx-1 и imx-2), то выводится сообщение об этом на экран. В конце программы закрываются файлы f и g.

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


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

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

7   голосов , оценка 3.857 из 5

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

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

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