Здесь нужно использовать вс типизированный файл и, соответственно, вторую файловую переменную (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;
Дважды подряд записать трехзначное число — это значит умножить его на 1001. Умножив на 1000, мы получаем исходное число с тремя нулями. Добавляем к полученному числу еще один раз исходное число. Получается число, в записи которого дважды повторяются цифры исходного числа. Последовательно разделить на 13, 11 и 7 – значит разделить число на произведение 13 * 11* 7, которое равно 1001. Получается, что мы число сначала умножаем на 1001, а после делим на 1001. Естетственно, у нас получится исходное число: (n * 1001) / (13 * 11 * 7) = (n * 1001) / 1001 = n.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку