Вот условия:
Составить программу назначения степендиии студентам по результатам сессии
используя следующие правила.
1) Если все оценки 5 назначается повышенная степендия
2) Если все оценки 4 и 5 назначается обычная степендия
3) Еслиоцени 3 стипендия не назначается
В результате работы программы должен быть напечатат список с оценкой
и средним баллом каждого студента
Во втором списке фамилии (назначенные на повышенную и обычную стипендию)
program stude;
uses crt;
type
student=record
kod:byte;
fam:string[20];
im:string[10];
ot:string[15];
gr:string[6];
kurs:byte;
m:array[1..5] of byte;
end;
var
m:array[1..5] of byte;
ysp:integer;
i:byte;
fstud:file of student;
rab:student;
flag:boolean;
fio:string[25];
key:0..4;
procedure vvod; {Ввод данных с клавиатуры}
begin
clrscr;
with rab do
begin
write('Фамилия: ');
readln(fam);
if fam='9999' then exit;
write('Имя: ');
readln(im);
write('Отчество: ');
readln(ot);
write('Группа: ');
readln(gr);
write('Курс: ');
readln(kurs);
write('Успеваемость: ');
readln(m[1],m[2],m[3],m[4],m[5]);
kod:=i;
end {with}
end; {vvod}
procedure vivod; {Ввывод на экран}
begin
with rab do
begin
fio:=fam+' '+im[1]+' '+ot[1]+' ';
write(kod:4,fio:18);
writeln(gr:8,kurs:8,m[1]:8,m[2]:2,m[3]:2,m[4]:2,m[5]:2);
end
end;
procedure form; {формировать массив}
begin
rewrite(fstud);
i:=1;
vvod;
while rab.fam<>'9999' do
begin
write(fstud,rab);
i:=i+1;
vvod
end;
close(fstud)
end;
procedure print; {Печать}
begin
reset(fstud);
writeln('-----------------------------------------------------------------------------------');
writeln('I № I Фио I Группа I Курс I Успеваемость I Степендия I Ср. бал');
writeln('-----------------------------------------------------------------------------------');
while not eof (fstud) do
begin
read(fstud,rab);
vivod
end ;
writeln('-----------------------------------------------------------------------------------');
readkey;
close(fstud)
end;
procedure print2; {Печать}
begin
reset(fstud);
writeln('------------------------------------------------------------');
writeln('I Повышенная степендия I Обычная степендия ');
writeln('------------------------------------------------------------');
while not eof (fstud) do
begin
read(fstud,rab);
with rab do
if (m[1]=2)or(m[2]=2)or(m[3]=2)or(m[4]=2)or(m[5]=2)then vivod;
end ;
writeln('------------------------------------------------------------');
readkey;
close(fstud)
end;
begin
flag:=false;
assign(fstud,'Студенты');
repeat
clrscr;
writeln('Выберите пункт меню');
writeln;
writeln('1-Формировать массив');
writeln('2-Печать всего массива');
writeln('3-Печать на повышен. и обычн. степендию');
writeln('0-выход');
readln(key);
case key of
1:form;
2:print;
3:print2;
0:flag:=true
end;
until flag;
end.