Переписать массив во вторую половину файла - Pascal ABC
Формулировка задачи:
Очень прошу помочь.
Записать на диск файл вещественных чисел. Первую половину компонент файла переписать в массив. Найти максимум массива и записать его вместо всех элементов второй половины файла. Файл и массив распечатать.
Мало того, что неправильно считает, так еще и тут выдает ошибку, мол "нельзя преобразовывать тип real к integer":
Решение задачи: «Переписать массив во вторую половину файла»
textual
Листинг программы
program z1;
var
f:file of real;
b:array[1..100] of real;
n,i,l:integer;
a,max:real;
begin
write('n=');
readln(n);
assign(f,'f.dat');
rewrite(f);
for i:=1 to n do
begin
write('a=');
readln(a);
write(f,a);
end;
close(f);
reset(f);
l:=filesize(f);
writeln('Array: ');
for i:=1 to l div 2 do
Read(f,b[i]);
max:=b[1];
for i:=1 to l do
begin
write(b[i]:8:2);
if b[i]>max then
max:=b[i];
end;
writeln;
writeln('Max: ',max:8:2);
reset(f);
for i:=l div 2+1 to l do
begin
seek(f,i-1);
write(f,max);
end;
close(f);
reset(f);
writeln('File:');
while not eof(f) do
begin
read(f,a);
write(a:8:2);
end;
readln;
close(f);
end.
Объяснение кода листинга программы
- Создается программа z1.
- Объявляются переменные: f - файл из реальных чисел, b - массив из 100 реальных чисел, n - количество чисел в массиве, i - индекс текущего элемента массива, l - размер массива, a - текущее число из массива, max - максимальное число в массиве, b[i] - i-ый элемент массива.
- Задается начальное значение max.
- Читаются данные из файла f в массив b.
- Находится максимальное число в массиве и присваивается переменной max.
- Выводится содержимое массива b.
- Записывается максимальное число в файл f.
- Сбрасывается файл f.
- Находится размер файла f.
- Выводится содержимое файла f.
- Записывается максимальное число в файл f.
- Сбрасывается файл f.
- Читаются данные из файла f до конца.
- Выводится содержимое файла f.
- Закрывается файл f.
- Программа завершается.