Школы

Объясните в программе Паскаль, откуда взялись строки.

Есть программа:
const n=20;
var a:array[1..n] of integer;
i,k2,k3,k4,k5:integer;
begin
randomize;
writeln;
k2:=0; k3:=0; k4:=0; k5:=0;
for i:=1 to n do
begin
a[i]:=2+random(4);
write(a[i]:2);
if a[i]=2 then k2:=k2+1
else if a[i]=3 then k3:=k3+1
else if a[i]=4 then k4:=k4+1
else k5:=k5+1;
end;
writeln;
write('2=',k2,' 3=',k3,' 4=',k4,' 5=',k5);
end.
Что значит a[i]:=2+random(4);
write(a[i]:2);? Откуда взялась двойка в первой строке, почему рандом прибавляют, а в скобках четверка? И почему мы выводи а, равняющееся двум, а не два плюс рандом?
Почему, когда мы выводим каждую переменную, то прибавляем единицу: then k3:=k3+1 ?
Свеrчo_Ok :))
Свеrчo_Ok :))
163
1. Что значит a[i]:=2+random(4);
Функция random(q) выдает случайное целое число от нуля и выше.
random(4) выдает 0, 1, 2 или 3.
2+random(4) - это, соответственно, 2, 3, 4 или 5.

Чтобы числа каждый раз были новые, перед этим вызывается функция randomize.

2. write(a[i]:2) - выводим число a[i], выделяя под него два знакоместа на экране.
Если a[i] однозначное (скажем, 8), то выводится "_8", где "_" - пробел.
Если a[i] двузначное или еще больше, то оно выводится как обычно.

Такой способ вывода позволяет выравнивать числа, чтобы они шли в столбик.
_4
_8
16
32

3. then k3:=k3+1 - мне кажется, программа заполняет массив и считает, сколько в нем двоек, троек, четверок и пятерок. Для каждого найденного числа увеличивается один из четырех счетчиков: k2 - счетчик двоек, k3 - счетчик троек и так далее.

4. И почему мы в начале пишем, что n - константа, которая равна 20?
Это имеет смысл, потому что число 20 как размер массива используется в нескольких местах.
Мы объявляем массив размером 20 и запускаем цикл от 1 до 20.
Если ты захочешь сделать массив размером 1000, то нужно будет заменить оба числа 20 на 1000.
А здесь не нужно: у нас есть константа, меняем ее в одном месте. Очень удобно.
ВБ
Венера Бикулова
69 448
Лучший ответ
Свеrчo_Ok :)) Спасибо огромное! А эта же программа подходит для решения задачи: В классе 20 учеников писали диктант по русскому языку. Напишите программу, напишите программу подсчитывающую кол-во двоек, троек, четверок и пятёрок, полученных за диктант?