Ошибка времени выполнения: "Файл не открыт" - PascalABC.NET (127033)
Формулировка задачи:
Помогите пожалуйста исправить ошибку,возможно не замечаю очевидного, пишет
Ошибка времени выполнения: Файл не открыт Спасибо
Решение задачи: «Ошибка времени выполнения: "Файл не открыт"»
textual
Листинг программы
var f,g:file of integer;
n,a: integer;
begin
randomize;
repeat
write('Количество компонент в файле F от 10 до 50 n=');
readln(n);
until n in [10..50];
assign(f,'fileF');
rewrite(f);//открыли для записи
for var i := 1 to n do
begin
a:=1+random(30);
write(f,a);
end;
reset(f);//открыли для чтения
assign(g,'fileG');
rewrite(g);//открыли второй файл для записи
writeln('Содержание исходного файла');
while not eof(f) do
begin
read(f,a);
if frac(sqrt(a))=0 then write(g,a);
write(a:4)
end;
writeln;
close(f);
reset(g);
if filesize(g)=0 then write('Нет полных квадратов')
else
begin
writeln('Содержание файла полных квадратов');
while not eof(g) do
begin
read(g,a);
write(a:4);
end;
end;
close(g);
end.
Объяснение кода листинга программы
- Объявлены переменные: f, g (тип file of integer), n, a (тип integer).
- Задается начальное значение для генератора случайных чисел.
- В цикле повторяется запрос на ввод количества компонентов в файле F от 10 до 50.
- Файл F открывается для записи.
- В цикле от 1 до n происходит генерация случайного числа от 1 до 30 и запись его в файл F.
- Файл F открывается для чтения.
- Файл G открывается для записи.
- Выводится содержимое исходного файла F.
- В цикле происходит чтение из файла F и проверка на полное квадратное число (если остаток от деления на квадратный корень из числа равен 0). При этом число записывается в файл G.
- Выводится содержимое файла G.
- Файл F закрывается.
- Проверяется размер файла G. Если он равен 0, выводится сообщение
Нет полных квадратов. - Иначе, выводится содержимое файла G.
- Файл G закрывается.