Вычислительная циклическая программа

Задача: Во дворце 40 залов. Известны длина, ширина и высота каждого зала. Вычислить площадь пола и объем каждого зала.

Сначала напишем фрагмент для одного зала:

ReadLn (dlina, shirina, visota);

S:=dlina*shirina; {Площадь пола}

V:=S*visota; {Объем}

WriteLn(S,’ ‘,V)

Для решения задачи этот фрагмент нужно выполнить 40 раз, для чего вполне естественно использовать оператор for:

VAR i, dlina, shirina, visota, S, V: Integer;
BEGIN

for i:=1 to 40 do begin

ReadLn (dlina, shirina, visota);

S:=dlina*shirina;

V:=S*visota;

WriteLn(S,’ ‘,V)

end {for}
END.

Обратите внимание, что здесь мы несколько модифицировали описанный нами в 5.4 ступенчатый стиль, а именно записали end не под соответствующим ему begin, а под соответствующим ему for. Эта практика также распространена, так как экономит место по вертикали. Мне она нравится больше, поэтому я буду ее придерживаться. Чтобы не спутаться, откуда взялся end, пишем рядом комментарий {for}.

Теперь создадим более дружественный интерфейс, для чего, кроме всего прочего, дадим возможность пользователю самому задавать число залов во дворце:

VAR i, dlina, shirina, visota, N, S, V : Integer;
BEGIN

WriteLn(’Введите число залов‘);

ReadLn (N); {N - число залов}

for i:=1 to N do begin

WriteLn(’Введите длину,ширину и высоту зала‘);

ReadLn (dlina, shirina, visota);

S:=dlina*shirina;

V:=S*visota;

WriteLn(‘Площадь пола=’,S,’ Объем зала=‘,V)

end
END.

Здесь курсивом я обозначил новые по сравнению с предыдущей программой элементы.

Пусть во дворце три зала размерами 20*15*4, 30*20*5 и 10*5*3. В этом случае мы вводим N=3 и оператор for выполняет цикл три раза. На каждом выполнении цикла компьютер останавливается на операторе ReadLn (dlina, shirina, visota), мы вводим числа и получаем результаты:

Площадь пола=300 Объем зала=1200

Площадь пола=600 Объем зала=3000

Площадь пола=50 Объем зала=150

Задание 43: Даны стороны N кубиков. Вычислить объем каждого.