10
Объяснение:
Смотри вложение. Клетки: [B], [S] робот пройдёт более 2-х раз -> эти клетки не подойдут под условие. Почему? Потому что каждый цикл робот смещается на 3 клетки влево – через [B], в каждом цикле, робот уже проходит 2 раза, а в следующем цикле он делает это ещё раз, тем самым проваливая условие для данной клетки; [S] – аналогично, поскольку робот, в каждом цикле, пересечёт данную клетку, выходя из клетки [F] в клетку [G].
Для простоты, приведу список клеток из 2 цикла:
[G] станет [S];
[A] станет [B];
[C] станет [D];
[B] станет [E];
[S] станет [F].
Во втором цикле [G] левее на 3 клетки, а её позицию из 1 цикла, теперь, занимает клетка [S].
Нетрудно понять, что ровно 2 раза робот пройдёт только по клетке [C] – [C] станет [D] и больше не будет пройдена роботом.
Остальные клетки робот пройдёт более или менее 2 раз.
handsfree = false;
var
a: array[1..100] of real;
i, n: integer;
sum_pos, sum_neg: real;
k_pos, k_neg: integer;
begin
{ввод массива}
if handsfree then
n := random(20) + 5
else begin
write('n = ');
readln(n);
end;
writeln('Данные массива:');
for i := 1 to n do
begin
if handsfree then begin
a[i] := random(100) - 50;
write(a[i], ' ');
end
else readln(a[i]);
end;
writeln();
{подсчет}
sum_pos := 0;
k_pos := 0;
sum_neg := 0;
k_neg := 0;
for i := 1 to n do
begin
if a[i] > 0 then
begin
sum_pos := sum_pos + a[i];
k_pos := k_pos + 1;
end;
if a[i] < 0 then
begin
sum_neg := sum_neg + a[i];
k_neg := k_neg + 1;
end;
end;
writeln('average (positives) = ', sum_pos / k_pos);
writeln('average (negatives) = ', sum_neg / k_neg);
end.