проблема с чтением из файла

Ответить
salwator
Сообщения: 4
Зарегистрирован: 17 дек 2010, 00:11

текстовый файл
исправьте пожалуйста(желательно сегодня,буду рад кого не затруднит)
выдаёт ошибку в процедуре vivod, в этой строчке
writeln(f,'FIO':20,'kod_grup':10,'matem':10,'algor ':10,'infor':10,'istor':10,'o.r':5);


Program tex;
uses crt;
Type student=record
FIO:string[20];
kod_grup:string[10];
socwork:string[5];
stipendiy:string[30];
ocenki:record
oc1,oc2,oc3,oc4:string[10];
end;
end;
Var f:text;a:student;g:string;i,n:integer;
Procedure sozd(n:integer);
Var f:text;a:student;i:integer;
Begin
assign(f,'список.txt');
rewrite(f);
For i:=1 to n do begin
with A do
begin
write('‚введите FIO:':20);
readln(FIO);
write('‚введите оценки:');
writeln;
with ocenki do begin
writeln('Matemat:');
readln(oc1);
writeln('Algoritmi:');
readln(oc2);
writeln('Informatika:');
readln(oc3);
writeln('Istoriya:');
readln(oc4);
writeln('“участие в о.р.?усли да то +,если нет то -:');
readln(socwork);
if (socwork='+') then
writeln('наличие участия в общественной работе:да ');
if (socwork='-') then
writeln('наличие участия в общественной работе:нет');
writeln;
writeln;
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='+')
then stipendiy:='+50% к степендии' else
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='-')
then stipendiy:='+25% к степендии' else
if ((oc1='4') xor (oc1='5')) and ((oc2='4') xor (oc2='5')) and ((oc3='4') xor
(oc3='5')) and ((oc4='4') xor (oc4='5'))
then stipendiy:='зачислен на степендию' else
if ((oc1='3') or (oc2='3') or (oc3='3') or (oc4='3')) and (socwork='+') then
stipendiy:='зачислен на степендию' else
if ((oc1='3') or (oc2='3') or (oc3='3') or (oc4='3')) and (socwork='-') then
stipendiy:='не зачислен на стипендию';
writeln(f,'FIO':20,'kod_grup':10,'matem':10,'algor ':10,'infor':10,'istor':10,'o.r':5);
writeln(f,FIO:20,kod_grup:10,oc1:10,oc2:10,oc3:10, oc4:10,socwork:5);
writeln(f,'------------------------------------------------------------------------');
writeln(f,'------------------------------------------------------------------------');
end;
writeln('stipendiy:',stipendiy);
end;
end;
close(f);
end;
Procedure vivod;
Begin
reset(f);
while not eof(f) do begin
{ read(f,n); }
with a do begin
read(f,kod_grup);
read(f,FIO);
read(f,socwork);
with ocenki do begin
read(f,oc1);
read(f,oc2);
read(f,oc3);
read(f,oc4);
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='+')
then stipendiy:='+50% к степендии' else
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='-')
then stipendiy:='+25% степендии' else
if ((oc1='4') xor (oc1='5')) and ((oc2='4') xor (oc2='5')) and ((oc3='4') xor
(oc3='5')) and ((oc4='4') xor (oc4='5'))
then stipendiy:='зачислен на степендию' else
if ((oc1='3') or (oc2='3') or (oc3='3') or (oc4='3')) and (socwork='+') then
stipendiy:='зачислен на степендию' else
if ((oc1='3') or (oc2='3') or (oc3='3') or (oc4='3')) and (socwork='-') then
stipendiy:='не зачислен на степендию';
writeln(f,'FIO':20,'kod_grup':10,'matem':10,'algor ':10,'infor':10,'istor':10,'o.r':5);
writeln(f,FIO:20,kod_grup:10,oc1:10,oc2:10,oc3:10, oc4:10,socwork:5);
writeln(f,'------------------------------------------------------------------------');
writeln(f,'------------------------------------------------------------------------');
end;
writeln('stipendiy:',stipendiy);
end;
end;
close(f);
end;
Begin
clrscr;
writeln('‚введите kod_grup:');
readln(g);
writeln('‚введите количество студентов:');
readln(n);
sozd(n);
assign(f,'список.txt');
vivod;
readkey;
end
Ответить