Записать в файл 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.

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

  1. Создаются два файла: fileF и fileG.
  2. Задается количество чисел, которые нужно записать в fileF (переменная k).
  3. Записываются случайные числа в fileF до достижения заданного количества чисел.
  4. Считывается содержимое fileF и выводится на экран.
  5. Открывается fileG.
  6. Переменная n устанавливается равной размеру fileF, деленному на 5. Это будет количество пятерок, которые будут выбраны для записи в fileG.
  7. Для каждой пятерки (от 0 до n-1) выполняется следующая последовательность действий:
    • Переменная j устанавливается равной 5 * i (т.е. i-ой пятерке от начала fileF).
    • seek используется для прокрутки fileF к позиции j.
    • Считывается максимальное значение из fileF до позиции j и записывается в fileG (переменная mx).
    • Если считанное значение больше mx, то mx обновляется этим значением.
    • seek используется для прокрутки fileF к следующей позиции.
  8. Если после прокрутки fileF до конца пятерка (т.е. j < 5 * i + 4) и следующая позиция (j + 1) находятся вне fileF, то это означает, что неполная пятерка была найдена, и действия повторяются с шага 7.
  9. Закрываются fileF и fileG.
  10. Выводится содержимое fileG.

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


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

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

8   голосов , оценка 4.125 из 5
Похожие ответы