Здесь нужно использовать вс типизированный файл и, соответственно, вторую файловую переменную (fr2). Сделать это можно так: while not eof(fr) and (kol=0) do begin read(fr, Marshrut); if (Marshrut.NK.N <> '11') then write(fr2,Marshrut) else begin inc(kol); y:=Marshrut; end; end; if not eof(fr) then begin read(fr, Marshrut); write(fr2,Marshrut); end; if (kol=1) then write(fr2,y); Дальше нужно просто переписать оставшиеся записи из первого файла во второй. Затем оба файла закрыть, первый файл удалить, а второй переименовать (т.е. назвать его так, как назывался первый файл).
Попробуйте ещё вот такой вариант: (здесь k1 и k2 - целые, а y - типа ) if (Marshrut.NK.N = '11') then begin writeln('... '); inc(kol); y:=Marshrut; k1:=FilePos(fr)-1; k2:=FilePos(fr); if not eof(fr) then begin read(fr, Marshrut); seek (fr, k1); write(fr, Marshrut); seek (fr, k2); write (fr, y); end;
Начнем с того, что мах десятичное 4-хзначное число это 9999. мах сумма будет 9*4=36 мах произ-ие 9*9*9*9=6561 невозрастание это убывание или равенство
Число 63 разделим его на 2 числа, т.к. вычисляются 2 числа. Получаем 6 и 3. 6 и 3 - убывание 1) Предположим, что 6-произведение, а 3-сумма, тогда 6=2*3*1*1 (4 числа, т.к. по условию у нас 4-хзначное число), но тогда 3=2+3+1+1. Значит неправильное предположение. 2) 3-произведение, а 6-сумма, тогда 3=3*1*1*1, а 6=3+1+1+1. Все сходится. Вывод: число 63 нам подходит.
Число 89. числа 8 и 9. возрастание. Вывод: не подходит
Число 98 9 и 8. убывание 1) Начнем с того, что 9-произведение, а 8- сумма 9=3*3*1*1, 8=3+3+1+1 Вывод: подходит
Число 200. 20 и 0. И никак иначе. Т.к. чисел 2 и 00 быть не может. убывание 1) 0-логично, что это пр-ие, т.к. суммой быть не может, значит 20-сумма 20=9+9+2+0 Вывод: подходит
Число 291. числа 29 и 1, т.к. только так у нас будет убывание. 1) 1 суммой быть не может. 29-сумма, однако если 1-пр-ие, то только 1=1*1*1*1, но 29≠1+1+1+1 Вывод: не подходит
Число 1311 только 13 и 11 ни 13 ни 11 не могут быть пр-ием, т.к. умножаться и складываться могут только числа от 0 до 9 Вывод: не подходит
Число 656136. Видно, что мы можем поделить его на 6561 и 36. убывание. Оба числа-максимумы, значит Вывод: подходят
Число 756423. Одно из чисел не может быть больше 36, а также порядок невозрастания должен соблюдаться. Значит 7564 и 23. Одно из чисел все равно не входит в мах, значит Вывод: не подходит
Сделать это можно так:
while not eof(fr) and (kol=0) do
begin
read(fr, Marshrut);
if (Marshrut.NK.N <> '11')
then write(fr2,Marshrut)
else begin inc(kol); y:=Marshrut; end;
end;
if not eof(fr) then
begin
read(fr, Marshrut);
write(fr2,Marshrut);
end;
if (kol=1) then write(fr2,y);
Дальше нужно просто переписать оставшиеся записи из первого файла во второй. Затем оба файла закрыть, первый файл удалить, а второй переименовать (т.е. назвать его так, как назывался первый файл).
Попробуйте ещё вот такой вариант:
(здесь k1 и k2 - целые, а y - типа )
if (Marshrut.NK.N = '11') then
begin
writeln('... ');
inc(kol);
y:=Marshrut;
k1:=FilePos(fr)-1;
k2:=FilePos(fr);
if not eof(fr) then
begin
read(fr, Marshrut);
seek (fr, k1);
write(fr, Marshrut);
seek (fr, k2);
write (fr, y);
end;
end;