Информатика, вопрос задал almazstrela , 2 года назад

Дан файл целых чисел. Записать в другой файл те элементы исходного файла, у
которых ровно три четных делителя.

Есть такая программа, но она выдает неправильный ответ. Помогите найти ошибку

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.

Ответы на вопрос

Ответил shavrinatv
1

Ответ:

Объяснение:

После строки  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);                                 

Приложения:

almazstrela: Выдает ошибку: Ошибка времени выполнения: Входная строка имела неверный формат.
shavrinatv: А файл с числами какой вид имеет?
almazstrela: Оказывается, ошибка была по моей вине. Сейчас исправил, но программа работает неправильно. В файл я записал числа 8 и 18, однако выводит только 18 или только 8 (в зависимости их расположения).
shavrinatv: Все работает, оба числа вывела
almazstrela: Да, все работает, я уже сам понял в чём была проблема. Когда проверял вашу программу, увидел, что в цикле написано Readln(f1,x), а надо было Read(f1,x), потому что я их в строку писал............
almazstrela: У меня есть ещё 2 задачи в профиле нерешённых, поможете?
Новые вопросы