Записать в файл g наибольшее значение первых пяти компонент файла f - Pascal
Формулировка задачи:
Здравствуйте, помогите пожалуйста написать алгоритм к этой задаче без паскалевского кода и по этому алгоритму само кодовое решение.
Дан файл f, компоненты которого являются целыми числами. Записать в файл g наибольшее значение первых пяти компонент файла f, затем - следующих пяти компонент и т.д. Если в последней группе окажется менее пяти компонент, то последняя компонента файла g должна быть равна наибольшей из компонент файла f, образующих последнюю (неполную) группу.
Решение задачи: «Записать в файл g наибольшее значение первых пяти компонент файла f»
textual
Листинг программы
var f,g:file of integer; k,a,i,j,n,mx:integer; begin randomize; assign(f,'fileF'); write('Сколько чисел записать в файл F k='); readln(k); rewrite(f); for i:=1 to k do begin a:=random(100); write(f,a); end; writeln('Содержание исходного файла:'); reset(f); for i:=0 to filesize(f)-1 do begin read(f,a); write(a:3); end; writeln; reset(f); assign(g,'fileG'); rewrite(g); n:=filesize(f) div 5; for i:=0 to n-1 do //выберем максимумы в полных пятерках begin j:=5*i; seek(f,j); read(f,mx); while(j<5*i+4)and(j<filesize(f)-1)do begin j:=j+1; seek(f,j); read(f,a); if a>mx then mx:=a; end; write(g,mx); end; if 5*n<filesize(f) then //в неполной группе, если она есть begin j:=5*n; seek(f,j); read(f,mx); while j<filesize(f)-1 do begin j:=j+1; seek(f,j); read(f,a); if a>mx then mx:=a; end; write(g,mx); end; close(f); writeln('Содержание файла максимумов:'); reset(g); for i:=0 to filesize(g)-1 do begin read(g,a); write(a:3); end; close(g); end.
Объяснение кода листинга программы
- Создаются два файла:
fileF
иfileG
. - Задается количество чисел, которые нужно записать в
fileF
(переменная k). - Записываются случайные числа в
fileF
до достижения заданного количества чисел. - Считывается содержимое
fileF
и выводится на экран. - Открывается
fileG
. - Переменная n устанавливается равной размеру
fileF
, деленному на 5. Это будет количество пятерок, которые будут выбраны для записи вfileG
. - Для каждой пятерки (от 0 до n-1) выполняется следующая последовательность действий:
- Переменная j устанавливается равной 5 * i (т.е. i-ой пятерке от начала
fileF
). seek
используется для прокруткиfileF
к позиции j.- Считывается максимальное значение из
fileF
до позиции j и записывается вfileG
(переменная mx). - Если считанное значение больше mx, то mx обновляется этим значением.
seek
используется для прокруткиfileF
к следующей позиции.
- Переменная j устанавливается равной 5 * i (т.е. i-ой пятерке от начала
- Если после прокрутки
fileF
до конца пятерка (т.е. j < 5 * i + 4) и следующая позиция (j + 1) находятся внеfileF
, то это означает, что неполная пятерка была найдена, и действия повторяются с шага 7. - Закрываются
fileF
иfileG
. - Выводится содержимое
fileG
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д