b) Создать файл начисления студентам стипендии. Студент, получивший все оценки “5” и активно участвующий в общественной работе, зачисляется на повышенную стипендию (доплата 50%), не активно участвующие – доплата 25%, студенты, получившие “4” и “5” зачисляются на обычную стипендию. Студент, получивший одну оценку “3”, но активно занимающийся общественной работой, также зачисляется на стипендию. В противном случае зачисление не производится.Индекс группы вводится с терминала.
Выполнить с использованием текстового и типизированного файла. В текстовый файл вывести данные в виде таблицы.
Вот собственно такое. Составил часть программы, проблема возникает со считыванием группы из файла, знаю что считываю неправильно, но как исправить незнаю.
Прошу помощи в исправлении подчёркнутого куска в программе:
Тоесть ввожу с клавы группу(например 1) и если в файле есть студенты из этой группы, то они выводятся в новый файл, если нет то пишет что студентов в такой группе нет.
Ниже приведён код с использованием текстового файла
Код: Выделить всё
program rgr3_2;
uses crt;
Type mytip=record
fam:string[10];
group:string[10];
socwork:string[5];
ocenki:record
oc1,oc2,oc3,oc4:string[10] ;
end;
end;
var f,t:text;
a:mytip;
g:string;
i,n:integer;
procedure sozd(n:integer);
var f:text;
A:mytip;
i:integer;
begin
assign (f,'C:\rgr.txt');
rewrite(f);
for i:=1 to n do begin
with A do
begin
write('wedite FIO:':10);
readln(fam);
repeat
write('Vibirite gruppy (1 or 2): ');
readln(group);
until (group='1') or (group='2');
write('vedite ocenki:');
writeln;
with ocenki do begin
writeln('Matemat: ');
readln(oc1);
writeln('Algoritmi: ');
readln(oc2);
writeln('Informatika: ');
readln(oc3);
writeln('Istoriya: ');
readln(oc4);
{socwork}
writeln('uchastvyet v o.r.? esli da to +, esli net to -:');
readln(socwork);
if (socwork='+') then
writeln('Nalichie Uchastiya v obshestvennoi rabote:da');
if (socwork='-') then
writeln('Nalichie Uchastiya v obshestvennoi rabote:net');
writeln;
writeln;
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='+')
then writeln(f,'Fiplata: +50% k stipendii');
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='-')
then writeln(f,'Fiplata: +25% k stipendii');
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 writeln(f, 'Fiplata: zachislen na stipendiyu');
if (oc1='3') or (oc2='3') or (oc3='3') or (oc4='3') and (socwork='+') then
writeln(f,'Fiplata: prosto stip');
writeln(f,'FIO':10,'Gryppa':10,'matem':10,'algor':10,'infor':10,'istor':10,'o.r':5);
writeln(f,fam:10,group:10,oc1:10,oc2:10,oc3:10,oc4:10,socwork:5);
writeln(f,'-----------------------------------------------------------------------');
writeln(f,'-----------------------------------------------------------------------');
end;
end;
end;
close(f);
end;
BEGIN
clrscr;
writeln('wedite kol. studentov:');
readln(n);
sozd(n);
assign(t,'c:\rgrstud.txt');
rewrite(t);
assign(f,'c:\rgr.txt');
reset(f);
writeln('Vvedite gruppu: ');
readln(g);
while not eof(f) do begin
with a do begin
readln(f,group);
readln(f,fam);
readln(f,socwork);
with ocenki do begin
readln(f,oc1);
readln(f,oc2);
readln(f,oc3);
readln(f,oc4);
if ( ((g='1') and (a.group='1')) or ((g='2') and a.group='2')) ) then
begin
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='+')
then writeln(t,'Fiplata: +50% k stipendii');
if (oc1='5') and (oc2='5') and (oc3='5') and (oc4='5') and (socwork='-')
then writeln(t,'Fiplata: +25% k stipendii');
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 writeln(t, 'Fiplata: zachislen na stipendiyu');
if (oc1='3') or (oc2='3') or (oc3='3') or (oc4='3') and (socwork='+') then
writeln(t,'Fiplata: prosto stip');
writeln(t,'FIO':10,'Gryppa':10,'matem':10,'algor':10,'infor':10,'istor':10,'o.r':5);
writeln(t,fam:10,group:10,oc1:10,oc2:10,oc3:10,oc4:10,socwork:5);
writeln(t,'-----------------------------------------------------------------------');
writeln(t,'-----------------------------------------------------------------------');
end
else
writeln('studentov net');
end;
end;
end;
close(f);
close(t);
readln;
end.