Я думаю, что второй этап является наиболее трудоемким. В нем нужно записать известные связи между исходными данными и результатами, тем самым решив задачу с помощью математических соотношений. Благодаря этому этапу мы спокойно составим алгоритм, а потом напишем код
Сначала с помощью цикла с параметром for объявим оценки 20-ти ученикам. Оценки будут случайные. После определим количество двоек, троек, четверок и пятерок, полученных за диктант.
program z_8;
var i, s2, s3, s4, s5: integer;
a: array [1..20] of integer;
begin
for i:=1 to 20 do begin
a[i] := random(2, 5);
if a[i] = 2 then s2:=s2+1;
if a[i] = 3 then s3:=s3+1;
if a[i] = 4 then s4:=s4+1;
if a[i] = 5 then s5:=s5+1;
end;
program z_8;
var i, s2, s3, s4, s5: integer;
a: array [1..20] of integer;
begin
for i:=1 to 20 do begin
a[i] := random(2, 5);
if a[i] = 2 then s2:=s2+1;
if a[i] = 3 then s3:=s3+1;
if a[i] = 4 then s4:=s4+1;
if a[i] = 5 then s5:=s5+1;
end;
writeln('Двоек: ', s2, '; Троек: ', s3, '; Четверок: ', s4, '; Пятерок: ', s5);
end