uses crt;
const mmax=20;{чтобы вошла таблица на экран}
nmax=15;
var a:array[1..nmax,1..nmax] of integer;
m,n,i,j,ko,kd,kh,k45:byte;
su,sk:real;
begin
clrscr;
randomize;
repeat
write('Количество учеников до ',mmax,' m=');
readln(m);
until m in [1..mmax];
repeat
write('Количество предметов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите оценки учеников по всем предметам:');
for i:=1 to m do
begin
writeln('Ученик ',i);
for j:=1 to n do
begin
write(' Оценка ',j,'=');
readln(a[i,j]);
end;
end;
clrscr;
writeln('Ведомость:');
writeln('Ср. ученика':n*4+18);
writeln;
sk:=0;{сумма оценок по классу}
ko:=0;{кол. отл.}
kd:=0;{кол.двоечн.}
for i:=1 to m do
begin
write('Уч.',i:2);
su:=0;{сумма оценок каждого ученика}
for j:=1 to n do
begin
su:=su+a[i,j];{сумма по ученику}
if su=5*n then ko:=1;{есть отличник}
if a[i,j]=2 then kd:=1;{есть двоечник}
write(a[i,j]:4);
end;
sk:=sk+su;{сумма по классу}
writeln(su/n:7:2);{выводим среднее по ученику}
end;
writeln;
write('Среднее в классе:');
gotoXY(n*4+9,whereY);
writeln(sk/(m*n):0:2);{среднее по классу}
write('Нажмите Enter...');
readln;
if ko=1 then writeln('В классе еcть отличники')
else writeln('В классе нет отличников');
if kd=1 then writeln('В классе еcть двоечники')
else writeln('В классе нет двоечников');
kh:=0;{кол. хорошистов}
for i:=1 to m do
begin
k45:=0;{кол. 4+5}
for j:=1 to n do
if a[i,j] in [4,5] then k45:=k45+1;{если все 4 и 5}
if k45=n then kh:=kh+1;{хорошист}
end;
write('Качество успеваемости=',kh*100/m:0:1,'%');
readln
end.