Дан файл 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.
Объяснение кода листинга программы
- Объявление переменных:
f, g: text;
- задают файлы f и gn, i, a, max: integer;
- определяют целочисленные переменные n, i, a, maxs: string;
- определяет строковую переменную s
- Создание и запись значений в файл f: a. Вводится имя исходного файла b. Присваивается файлу f имя, полученное от пользователя c. Файл f открывается для записи d. Генерируется случайное число n e. Выполняется цикл от 0 до n для записи целых чисел в файл f в несколько групп (по 5 элементов)
- Печать содержимого файла f: a. Выводится содержимое исходного файла f.txt
- Создание и запись максимальных значений в файл g: a. Запрашивается имя файла, который будет содержать наибольшие элементы из групп по 5 элементов b. Файлу g присваивается имя, полученное от пользователя c. Файл g открывается для записи d. Файл f открывается для чтения e. Выполняется цикл, в котором считываются значения из файла f и записываются наибольшие значения (из групп по 5 элементов) в файл g
- Печать содержимого файла g: a. Выводится содержимое файла g.txt
- Завершение работы с файлами: a. Закрывается файл f b. Закрывается файл g
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д