Дан файл целых чисел. записать в другой файл те элементы исходного файла, у
которых ровно три четных делителя.
есть такая программа, но она выдает неправильный ответ. найти ошибку
var f1,f2: text;
i, j, k, x: integer;
begin
assign(f1, 'file1.txt');
reset(f1);
assign(f2, 'file2.txt');
rewrite(f2);
k: =0;
while not eof(f1) do
begin
readln(f1,x);
for i: =2 to x do
if (x mod i=0) and (i mod 2=0) then inc(k);
if k=3 then writeln(f2,x);
end;
close(f1);
close(f2);
writeln('второй файл содержит числа: ');
reset(f2);
while not eof(f2) do
begin
readln(f2,x);
writeln(x);
end;
end.
Объяснение:
После строки if k=3 then Writeln(f2,x);
нужно поставить k:=0;
Var f1,f2: text;
i, k, x: integer;
Begin
Assign(f1, 'file1.txt');
reset(f1);
Assign(f2, 'file2.txt');
Rewrite(f2);
k:=0;
While not eof(f1) do
Begin
Readln(f1,x);
writeln(x);
for i:=2 to x do
If (x mod i=0) and (i mod 2=0) then inc(k);
if k=3 then Writeln(f2,x);
k:=0;
End;
Close(f1);
Close(f2);
Writeln('Второй файл содержит числа:');
Reset(f2);
While not eof(f2) do
Begin
Readln(f2,x);
Writeln(x);
End;
readln;
Close(f2);