Другие языки программирования и технологии

хелп по паскалю

>кол-во предметов должен задавать сам пользователь
Ну это уже попахивает связью много-ко-многим, давать такое задание на паскале - это несколько жестоко.
Единственный выход - действительно все денормализовать и засунуть в один файл, ограничив максимальное количество предметов. Могу написать только типы, которые будут нужны

const
MaxDisc=10;
type
TDiscipline=record
Name:string;
Mark:integer;
end;

TDisciplineArray=array[1..MaxDisc] of TDiscipline;

TStudentRecord=record
FirstName:string;
LastNamse:string;
Disciplines:TDisciplineArray;
end;

TStudentFile=file of TStudentRecord;

Дальше сам.
АВ
Андрей Вознюк
70 134
Лучший ответ
program Project16;

{$APPTYPE CONSOLE}

uses
SysUtils;
type
pack=record
Fam:string[40];
Nam:string[40];
otc:string[40];
oce:array[0..20] of byte;
sro:real;
end;
tf=file of pack;
var
s:string;
j,a,b,p:integer;
f:tf;
q:pack;
label na4;
begin
s:='d:\base.dat';
assign(f,s);
try
reset(f);
except
rewrite(f);
end;
na4:
writeln('add record=1, read file=2, exit=0,clear file=3');
try
readln(p);
except
p:=-1;
end;
if (p<0)or(p>3) then begin
writeln('takoj komandi net');
goto na4;
end;

if p=0 then begin close(f); exit; end;
if p=1 then begin
seek(f,filesize(f));
a:=a xor a;
write('Fam: ');
readln(q.Fam);
write('Nam: ');
readln(q.nam);
write('Otc: ');
readln(q.otc);
try
write('ocenok: ');
readln(p);
q.oce[0]:=p;
if p>0 then
begin
for j := 1 to p do
begin
write('Ocenca ',j,': ');
readln(q.oce[j]);
a:=a+q.oce[j];
end;
q.sro:=a/p;
end;
write(f,q);
writeln('zapis dobavlena');
except
writeln('zapis neverna');
writeln('zapis otmenena');
end;
readln;
goto na4;
end;
if p=2 then begin
seek(f,0);
while not eof(f) do
begin
writeln;
writeln;
read(f,q);
writeln('Fam: ',q.Fam);
writeln('Nam: ',q.nam);
writeln('Otc: ',q.otc);
writeln('ocenok: ',q.oce[0]);
p:=q.oce[0];
if p>0 then
for j := 1 to p do
writeln('Ocenca ',j,': ',q.oce[j]);
writeln('srednaa ocenca: ',q.sro);
end;

writeln('file viveden');
readln;
goto na4;
end;
if p=3 then begin
writeln('vi uvereni? vvedite "delete"');
readln(s);
if s='delete' then
begin
close(f);
rewrite(f);
writeln('file o4is4en');
end;
goto na4;
end;
end.
Valera Seregin
Valera Seregin
3 836
давай решу твою фишку за вознагрождение
Серёга Желепа
Серёга Желепа
1 677