II. Добавить N записей в конец внешнего файла
я так понял,что добавить необходимо в первоначальный вариант введенных данных,а не в тот файл,где находятся записи подходящие нашему условию.
Условие такого:удалить тех у кого отличные оценки и в аттестате и при вступительных экзаменах,а добавить например 2-х человек,а затем распечатать тех,кто сдал вступительные экзамены на 4 и 5(я так понял из все вообще введенных студентов,т.е изначальные+добавленные)!Заранее всем огромное спасибо!
вот мой код:
uses crt;
type abit=record
fio:string[20];
godrow:integer;
godokon:integer;
at_mat:integer;
at_rus:integer;
at_fiz:integer;
Obwaga:char;
ab_mat:integer;
ab_rus:integer;
ab_fiz:integer;
end;
var
f,f1:file of abit;
s,r1,r:abit;
ch:char;
i,k,n,m:integer;
key1,key2:boolean;
procedure Vvod;
begin
with s do
begin
writeln;
writeln('______');
writeln('Vvedite dannue o ',i,'-m abiture:');
writeln('_______');
writeln('vvedite FIO:');
readln(Fio);
writeln('Vvedite God rowd:');
readln(godrow);
writeln('Vvedite god okonch wkolu:');
readln(godokon);
writeln;
writeln('Vvedite ozenki attestata:');
writeln('matematika:');
readln(at_mat);
writeln('Russkij:');
readln(at_rus);
writeln('fizika');
readln(at_fiz);
writeln;
key1:=false;
writeln('Nuwna obwaga:[y/n]');
readln(obwaga);
if (obwaga in ['Y','y','N','n']) then key1:=true;
writeln;
writeln('Vvedite ozenki vstupit ekzov:');
writeln('matematika');
readln(ab_mat);
writeln('Russkij');
readln(ab_rus);
writeln('fizika');
readln(ab_fiz);
write(f1,r);
end;
end;
procedure udal;
var
i,j:integer;
begin
reset(f1);
for i:=1 to filesize(f1) do
with r do begin
if (at_mat<>5) and (at_rus<>5) and (at_fiz<>5) and (ab_mat<>5) and (ab_rus<>5)
and (ab_fiz<>5) then
write(f,s);
end;
end;
procedure Vivod;
begin
reset(f);
while not eof(f) do
begin
read(f,s);
with s do begin
writeln('|',fio,'|',godrow,'|',godokon,'|',at_mat,'|',at_rus,'|',at_fiz,'|',ab_mat,'|',ab_rus,'|',ab_fiz,'|',obwaga,'|');
end;
end;
close(f);
end;
Procedure sortirovka;
var
i,j,n:integer;
f:text;
begin
reset(f1);
n:=filesize(f1)-1;
for i:=0 to n do begin
for j:=0 to n-1 do begin
seek(f1,j);
read(f1,r);
read(f1,r1);
with s do begin
if r.at_fiz>r1.at_fiz then
begin
seek(f1,j);
write(f1,r1);
write(f1,r);
end;
end;
end;
end;
close(f1)
end;
procedure dobav;
var
j,i,k:integer;
c:char;
l:boolean;
begin
reset(f1);
writeln('Dobavit tovar?,Esli da,to nawmite Y,esli net to lubuju knopko');
readln©;
i:=0;
while c='y' do
begin
i:=i+1;
with r1 do
begin
writeln('vvedite FIO:');
readln(Fio);
writeln('Vvedite God rowd:');
readln(godrow);
writeln('Vvedite god okonch wkolu:');
readln(godokon);
writeln;
writeln('Vvedite ozenki attestata:');
writeln('matematika:');
readln(at_mat);
writeln('Russkij:');
readln(at_rus);
writeln('fizika');
readln(at_fiz);
writeln;
key1:=false;
writeln('Nuwna obwaga:[y/n]');
readln(obwaga);
if (obwaga in ['Y','y','N','n']) then key1:=true;
writeln;
writeln('Vvedite ozenki vstupit ekzov:');
writeln('matematika');
readln(ab_mat);
writeln('Russkij');
readln(ab_rus);
writeln('fizika');
readln(ab_fiz);
end;
k:=0;
reset(f1);
l:=false;
while (not eof(f1)) do
begin
read(f1,r);
k:=k+1;
if r.at_fiz=r1.at_fiz then
begin
seek(f1,k-1);
for j:=(k-1) to filesize(f)-2 do
begin
seek(f1,j+1);
read(f1,r);
seek(f1,j);
write(f1,r);
end;
seek(f1,filesize(f1)-1);
truncate(f1);
write(f1,r1);
l:=true;
end;
end;
if l=false then
begin
seek(f1,filesize(f1));
write(f1,r1);
end;
writeln('Dobavit tovar?Ecli da,to nawmite Y,esli net to lubuju knopku');
readln©;
end;
clrscr;
close(f1);
end;
procedure Vivod2;
begin
reset(f1);
while not eof(f1) do
begin
read(f1,r);
with r do begin
writeln('|',fio,'|',godrow,'|',godokon,'|',at_mat,'|',at_rus,'|',at_fiz,'|',ab_mat,'|',ab_rus,'|',ab_fiz,'|',obwaga,'|');
end;
end;
close(f1);
end;
begin
clrscr;
assign(f1,'zad8.dat');
rewrite(f1);
writeln('Programmu vupolnyal student 1-ogo kursa Zimin Egor');
writeln('_____________________________________________________');
writeln(' ');
writeln('vvedite kol tovarov-');
readln(n);
for i:=1 to n do
begin
vvod;
end;
close(f1);
assign(f,'zad8.dat');
rewrite(f);
udal;
vivod;
dobav;
vivod2;
readln;
end.