Найти в файле наибольшее число и два числа, стоящих перед ним - Pascal
Формулировка задачи:
Решение задачи: «Найти в файле наибольшее число и два числа, стоящих перед ним»
- 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д