Код: Выделить всё
const
n = 4;
type
student = record
N: byte;
prizv: string;
matan: real;
prog: real;
Os: real;
alg: real;
end;
var
i: integer;
tabl: array[1..n] of student;
otv: integer;
procedure lin(m: integer);
var i: integer;
begin
for i := 1 to m do write('-'); writeln;
end;
begin
writeln('VVedi dani stydentiv');
for i := 1 to n do
begin
tabl[i].N := i;
readln(tabl[i].Prizv, tabl[i].matan, tabl[i].prog, tabl[i].OS, tabl[i].alg);
end;
Lin(69);
writeln('| | Призвіще | Matematuchnuy | Programyvannya | OS | Algebra | cer|');
writeln('| | | analis | | | i geom.| |');
Lin(69);
for i := 1 to n do
begin
write('|', tabl[i].N: 2, ' |', tabl[i].Prizv: 10, '|');
write(tabl[i].matan: 15, '|', tabl[i].prog: 16, '|', tabl[i].OS: 4, '|', tabl[i].alg: 9, '|',
((tabl[i].matan + tabl[i].prog + tabl[i].OS + tabl[i].alg) / n): 0: 2, '|');
writeln;
Lin(69);
end;
writeln;
writeln('vidcortov');
Lin(69);
for i := 1 to n do
begin
if ((tabl[i].matan + tabl[i].prog + tabl[i].OS + tabl[i].alg) / 4 >= 4) then
begin
write('|', tabl[i].N: 2, ' |', tabl[i].Prizv: 10, '|');
write(tabl[i].matan: 15, '|', tabl[i].prog: 16, '|', tabl[i].OS: 4, '|', tabl[i].alg: 9, '|', ((tabl[i].matan + tabl[i].
prog + tabl[i].OS + tabl[i].alg) / n): 0: 2, '|');
writeln;
Lin(69);
end;
end;
readln
end.
Вот мой код:
Код: Выделить всё
uses
crt;
const
n=4;
type
Tinf=string;
List=^TList;
TList=record
data:TInf;
next:List;
N:byte;
Prizv:string[20];
matan:byte;
prog:byte;
OS:byte;
alg:byte;
end;
procedure AddElem(var stek1:List;znach1:TInf);
var
tmp:List;
begin
GetMem(tmp,sizeof(TList));
tmp^.next:=stek1;
tmp^.data:=znach1;
stek1:=tmp;
end;
procedure Line(m:integer);
var i:integer;
begin
for i:=1 to m do
write('-');
writeln;
end;
procedure Print(stek1:List);
begin
if stek1=nil then {проверка на пустоту стека}
begin
writeln('Стек пуст.');
exit;
end;
while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}
begin {а это произойдёт как только он перейдёт по ссылке последнего элемента}
Write(stek1^.data, ' '); {выводить данне}
stek1:=stek1^.next {и переносить указатель вглубь по стеку}
end;
end;
var
Stk,
tmpl:List;
znach:Tinf;
ch:char;
i:integer;
tabl:array[1..n] of Tlist;
begin
Stk:=nil;
repeat
writeln('1) add elements');
writeln('2) output');
writeln('3) exit');
writeln('press key 1..3');
ch:=readkey;
case ch of
'1':begin
for i:=1 to n do
begin
writeln('enter data item' , i);
tabl[i].N := i;
readln(tabl[i].Prizv, tabl[i].matan, tabl[i].prog, tabl[i].OS, tabl[i].alg);
addelem(stk,znach);
end;
End;
'2':begin
Line(69);
writeln('| | Призвіще | Matematuchnuy | Programyvannya | OS | Algebra | cer|');
writeln('| | | analis | | | i geom.| |');
Line(69);
for i := 1 to n do
begin
write('|', tabl[i].N: 2, ' |', tabl[i].Prizv: 10, '|');
write(tabl[i].matan: 15, '|', tabl[i].prog: 16, '|', tabl[i].OS: 4, '|', tabl[i].alg: 9, '|',
((tabl[i].matan + tabl[i].prog + tabl[i].OS + tabl[i].alg) / n): 0: 2, '|');
writeln;
Line(69);
end;
writeln;
writeln('vidcortov');
Line(69);
for i := 1 to n do
begin
if ((tabl[i].matan + tabl[i].prog + tabl[i].OS + tabl[i].alg) / 4 >= 4) then
begin
write('|', tabl[i].N: 2, ' |', tabl[i].Prizv: 10, '|');
write(tabl[i].matan: 15, '|', tabl[i].prog: 16, '|', tabl[i].OS: 4, '|', tabl[i].alg: 9, '|', ((tabl[i].matan + tabl[i].
prog + tabl[i].OS + tabl[i].alg) / n): 0: 2, '|');
writeln;
Line(69);
print(stk);
end;
end;
End;
end;