Дан файл f, компоненты которого являются целыми числами. Записать в файл g наибольшее значение первых пяти - Pascal

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

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

Помогите с задачей. Нужно доработать этот код. Получается нужно чтобы f, g были текстовыми документами, которые можно отдельно открыть в папке куда они сохраняются. А в данном случае при попытке открыть файл через блокнот отображается непонятные символы.Заранее спасибо. Дан файл f, компоненты которого являются целыми числами. Записать в файл g наибольшее значение первых пяти компонент файла f, затем - следующих пяти компонент и т.д. Если в последней группе окажется менее пяти компонент, то последняя компонента файла g должна быть равна наибольшей из компонент файла f, образующих последнюю (неполную) группу.
var
  f, g : file of integer;
  n, i, j, k : byte;
  a, max : integer;
  s, s1 : string;
begin
  write('Введите имя исходного файла : ');
  readln(s1);
  assign(f,'s1.txt');
  rewrite(f); 
  randomize;
  n := random(20);
  for i := 1 to n do
    write(f,(random(10)));
  writeln('Содержимое исходного файла ',s1,' :');
  reset(f);
  while not eof(f) do 
    begin
      read(f,a);
      write(a:4);
    end;
  writeln;
  write('Имя файла g, содержащего наибольшие элементы из групп по 5 элементов : ');
  readln(s);
  assign(g,'s.txt');
  rewrite(g);
  j := 1;
  for i := 1 to filesize(f) div 5 do
    begin
      seek(f,j-1);
      read(f,a);
      max := a;
      for k := 2 to 5 do
        begin
          seek(f,k-1+j-1); 
          read(f,a);
          if a>max then max := a;
        end;
      write(g,max);
      inc(j,5);
    end;
    if filesize(f) mod 5 <> 0 then begin
  seek(f,5*i);
  read(f,a);
  max := a;
  for k := 2 to filesize(f)-5*i do
    begin
      seek(f,5*i-1+k);
      read(f,a);
      if a>max then max := a;
    end;
  write(g, max);
  end;
  writeln('Содержимое файла ',s,' :');
  reset(g);
  while not eof(g) do
    begin
      read(g,a);
      write(a:4);
    end;
  readln;
  close(f);
  close(g);
end.

Решение задачи: «Дан файл f, компоненты которого являются целыми числами. Записать в файл g наибольшее значение первых пяти»

textual
Листинг программы
var f, g: text;
    n, i, a, max: integer;
    s: string;
begin
  randomize;
  write('Введите имя исходного файла: ');
  readln(s);
  assign(f, s + '.txt');
  rewrite(f);
  n := random(200);
  for i := 0 to n do
    begin
      if (i > 0) and (i mod 5 = 0) then writeln(f);
      write(f, -99 + random(199):4)
    end;
  reset(f);
  writeln('Содержимое исходного файла ', s, '.txt: ');
  while not seekeof(f) do
    begin
      read(f, a);
      write(a:4)
    end;
  writeln;
  write('Имя файла, содержащего наибольшие элементы из групп по 5 элементов : ');
  readln(s);
  assign(g, s + '.txt');
  rewrite(g);
  reset(f);
  i := 0;
  while not seekeof(f) do
    begin
      read(f, a);
      if (i = 0) or (max < a) then max := a;
      if i = 4 then writeln(g, max);
      i := (i + 1) mod 5
    end;
  if i > 0 then writeln(g, max);
  writeln('Содержимое файла ', s, '.txt: ');
  reset(g);
  while not seekeof(g) do
    begin
      read(g, a);
      write(a:4)
    end;
  readln;
  close(f);
  close(g)
end.

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

  1. Объявление переменных:
    • f, g: text; - задают файлы f и g
    • n, i, a, max: integer; - определяют целочисленные переменные n, i, a, max
    • s: string; - определяет строковую переменную s
  2. Создание и запись значений в файл f: a. Вводится имя исходного файла b. Присваивается файлу f имя, полученное от пользователя c. Файл f открывается для записи d. Генерируется случайное число n e. Выполняется цикл от 0 до n для записи целых чисел в файл f в несколько групп (по 5 элементов)
  3. Печать содержимого файла f: a. Выводится содержимое исходного файла f.txt
  4. Создание и запись максимальных значений в файл g: a. Запрашивается имя файла, который будет содержать наибольшие элементы из групп по 5 элементов b. Файлу g присваивается имя, полученное от пользователя c. Файл g открывается для записи d. Файл f открывается для чтения e. Выполняется цикл, в котором считываются значения из файла f и записываются наибольшие значения (из групп по 5 элементов) в файл g
  5. Печать содержимого файла g: a. Выводится содержимое файла g.txt
  6. Завершение работы с файлами: a. Закрывается файл f b. Закрывается файл g

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

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