Задача на ссылки.
Составить список группы, содержащей 15 человек. Указать для каждого студента оценки, полученные на последних экзаменах. Разработать программу, позволяющую вводить данные о студентах, заносить эту инфу в файл dan.dat.
Включить в список инфу, относящуюся к студентам, у которых больше одной 2. Добавить в конец списка студентов, имеющих хотябы 1 двойку. Удалить из начала списка 2 студентов.
Вот сдесь я пытался чтото делать, но ничего не выходить Выручайте...
program ddddddddd;
uses crt;
type point=^stud;
stud=record
fam:string[25];
mat:integer;
rus:integer;
istor:integer;
him:integer;
fiz:integer;
next:point;
end;
point1=^stud1;
stud1=record
fam:string[25];
mat:integer;
rus:integer;
istor:integer;
him:integer;
fiz:integer;
next:point;
end;
point2=^stud2;
stud2=record
fam:string[25];
mat:integer;
rus:integer;
istor:integer;
him:integer;
fiz:integer;
next:point;
end;
point3=^stud3;
stud3=record
fam:string[25];
mat:integer;
rus:integer;
istor:integer;
him:integer;
fiz:integer;
next:point;
end;
var
f: text;
n,n1,n3,i:integer;
d,tmp,p,t:point;
d1,tmp1,p1,t1:point;
d2,tmp2,p2,t2:point;
d3,tmp3,p3,t3:point;
k:integer;
begin
clrscr;
t:=nil;
t1:=nil;
assign(f,'den.dat'); rewrite(f);
writeln('Vvedite kolichestvo studentov[15..]');readln (n);
for i:=1 to n do begin
new(tmp);
write ('Fam=> ');readln(tmp^.fam); writeln(f,tmp^.fam);
write ('Mat=> ');readln(tmp^.mat);writeln(f,tmp^.mat) ;
write ('Rus=> ');readln(tmp^.rus);writeln(f,tmp^.rus) ;
write ('Istor=> ');readln(tmp^.istor);writeln(f,tmp^.istor) ;
write ('Him=> ');readln(tmp^.him); writeln(f,tmp^.him) ;
write ('Fiz=> ');readln(tmp^.fiz);writeln(f,tmp^.fiz) ;
tmp^.next:=t;
t:=tmp;
end;
close(f);
clrscr;
while (t<>nil) do begin
writeln(t^.fam,' ', t^.mat,' ', t^.rus,' ', t^.istor,' ', t^.him ,' ',t^.fiz);
t:=t^.next;
end;
{Formirovanie new}
t:=tmp;
n1:=1;
for i:=1 to n do begin
k:=0;
if (t^.mat=2) then k:=k+1;
if (t^.rus=2) then k:=k+1;
if (t^.istor=2) then k:=k+1;
if (t^.him=2) then k:=k+1;
if (t^.fiz=2) then k:=k+1;
if (k>1) then begin
new (tmp1);
tmp1^.fam:=tmp^.fam;
tmp1^.mat:=tmp^.mat;
tmp1^.rus:=tmp^.rus;
tmp1^.istor:=tmp^.istor;
tmp1^.him:=tmp^.him;
tmp1^.fiz:=tmp^.fiz;
tmp1^.next:=t1;
t1:=tmp1;
n1:=n1+1;
end;
end;
{Dobavlenie}
for i:=1 to n do begin
k:=0;
if (t^.mat=2) then k:=k+1;
if (t^.rus=2) then k:=k+1;
if (t^.istor=2) then k:=k+1;
if (t^.him=2) then k:=k+1;
if (t^.fiz=2) then k:=k+1;
if (k>0) then begin
new (tmp1);
tmp1^.fam:=tmp^.fam;
tmp1^.mat:=tmp^.mat;
tmp1^.rus:=tmp^.rus;
tmp1^.istor:=tmp^.istor;
tmp1^.him:=tmp^.him;
tmp1^.fiz:=tmp^.fiz;
tmp1^.next:=Nil;
t1:=tmp1;
n1:=n1+1;
end;
end;
{ud-e zad-go el-ta}
t1:=tmp1;
n3:=1;
for i:=1 to n1 do begin
if (i<=2) then begin
new (tmp2);
tmp2^.fam:=tmp1^.fam;
tmp2^.mat:=tmp1^.mat;
tmp2^.rus:=tmp1^.rus;
tmp2^.istor:=tmp1^.istor;
tmp2^.him:=tmp1^.him;
tmp2^.fiz:=tmp1^.fiz;
tmp2^.next:=t2;
t2:=tmp2;
end;
if (i>2) then begin
new (tmp3);
tmp3^.fam:=tmp1^.fam;
tmp3^.mat:=tmp1^.mat;
tmp3^.rus:=tmp1^.rus;
tmp3^.istor:=tmp1^.istor;
tmp3^.him:=tmp1^.him;
tmp3^.fiz:=tmp1^.fiz;
tmp3^.next:=t3;
t3:=tmp3;
n3:=n3+1;
end;
end;
readkey;
clrscr;
for i:=1 to 2 do begin
writeln(t2^.fam,' ', t2^.mat,' ', t2^.rus,' ', t2^.istor,' ', t2^.him ,' ',t2^.fiz);
t2:=t2^.next;
end;
readkey;
clrscr;
writeln;
for i:=1 to n3 do begin
writeln(t3^.fam,' ', t3^.mat,' ', t3^.rus,' ', t3^.istor,' ', t3^.him ,' ',t3^.fiz);
t3:=t3^.next;
end;
readkey;
end.