Var
a: array [1..4] of real;
begin
readln(a[1], a[2], a[3]);
a[4] := (a[1] + a[2] + a[3]) / 2;
writeln(sqrt(a[4] * (a[4] - a[1]) * (a[4] - a[2]) * (a[4] - a[3])));
<span>end.</span>
Смотря что Вы называете циклом. По установившейся терминологии любой цикл состоит из заголовка цикла (по строению которого циклы часто и именуют) и тела цикла. В языке паскаль в заголовке цикла с предусловием стоит ключевое слово while и ключевое слово цикла с параметром for стоять уже не может. Но в теле цикла, которое может иметь любое содержимое, цикл for, конечно же, может встречаться.
А вот язык Алгол, на базе которого Н.Вирт сконструировал свой Паскаль, мог в заголовке цикла содержать очень много всего и, в том числе, смесь while с for:
for x:=p0 step h1 until q-1, q+1 step h2 until t, t+0.17 step h3 while cos(x/2)<0.85 do ...
Но Н.Вирт решил, что такой цикл неэффективен и... оставил от него жалкие ошметки. Возможно, компилятору "стало проще жить", но зато программисты в Паскале лишились возможности не только писать в цикле вещественные значения, но и вынуждены менять целочисленные только на 1 или -1.
Для кодирования одного из 16 предметов требуется log(2)16 = 4 бита.
Например, 0000 - математика, 0001 - русский язык и т.д.
Для кодирования всего расписания - 7*6*4 = 168 бит.
Раз в обоих заданиях известно количество элементов в массиве, то имеет смысл использовать цикл for.
Задание №1
const n=20;
var
a:array[1..n] of integer;
i,s:integer;
begin
s:=0;
for i:=1 to n do begin
a[i]:=random(1001);
if a[i] mod 10 = 4 then s:=s+1;
end;
writeln(s);
end.
<span>Задание №2
const n=20;
var
a:array[1..n] of integer;
i,max,nmax:integer;
begin
max:=0;
for i:=1 to n do begin
a[i]:=random(1001);
if a[i] >max then begin
nmax:=i;
max:=a[i];
end;
write(a[i]:5);
end;
writeln;
writeln(nmax,' ',a[nmax]);
end.
</span>