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

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

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

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

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

textual
Листинг программы
program pr;
const n=12;
var f:file of integer;
    g:text;
    i,a,p,mx,imx:integer;
    s:real;
begin
randomize;
assign(f,'c:\file1.txt');
rewrite(f);
assign(g,'c:\file2.txt');
rewrite(g);
for i:=1 to n do
 begin
  a:=random(50);
  write(f,a);
 end;
reset(f);
writeln('Содержание файла:');
while not eof(f) do
 begin
  read(f,a);
  write(a,' ');
end;
writeln;
seek(f,0);
p:=0;
for i:=3 to filesize(f)-1 do
 begin
  seek(f,i);
  read(f,a);
  seek(f,p);
  write(f,a);
  p:=p+1;
 end;
seek(f,filesize(f)-2);
truncate(f);
writeln('Удаление первых 3:');
seek(f,0);
while not eof(f) do
 begin
  read(f,a);
  write(a,' ');
end;
writeln;
seek(f,0);
read(f,mx);
imx:=0;
for i:=1 to filesize(f)-1 do
 begin
  read(f,a);
  if a>mx then
   begin
    mx:=a;
    imx:=i;
   end;
 end;
if imx<2 then
 begin
  writeln(g,'Максимальное =',mx,' его номер =',imx+1);
  writeln(g,'Перед ним нет 2 чисел');
 end
else
 begin
  s:=0;
  seek(f,imx);
  for i:=imx downto imx-2 do
   begin
    seek(f,i);
    read(f,a);
    s:=s+a;
    write(g,' ',a);
   end;
  writeln(g);
  write(g,'Cумма=',s:0:2);
 end;
close(f);
close (g);
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
Похожие ответы