program n_1;
var a: array [1..30] of integer; n, m, k, l, i:integer; s: double;
begin
n:=0; m:=0; n:=0; k:=0; l:=0;
for i:=1 to 30 do begin
read(a[i]);
s:=s+a[i];
if a[i]=2 then m:=m+1
else if a[i]=3 then n:=n+1
else if a[i]=4 then k:=k+1
else if a[i]=5 then l:=l+1
end;
writeln('Средний класса: ', s/30);
writeln('Количество двоечников: ', m);
writeln('Количество троечников: ', n);
writeln('Количество хорошистов: ', k);
writeln('Количество отличников: ', l);
writeln('Успеваемость класса: ', (30-m)/3*10, '%');
end.
Сделать это можно так:
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;