program z1;
var i,n,s:integer;
a : array [1..100] of integer;
begin
write ('Введите количество элементов n < 100: ');
readln(n);
write ('Массив: ');
for i:= 1 to n do
begin
a[i]:=random (21)-10;
write(a[i]:5)
end;
writeln;
s:=0;
for i:= 1 to n do
if a[i]<0 then s:=s+a[i];
writeln ('s = ',s)
end.
Объяснение:
Ошибки
1) нет названия программы и ; после неё
2) в описании массива 3 точки (надо 2)
3) нет кавычек для ввода текста в первом write
4) нет ; после readln (n)
5) нет : при присваивании i в цикле for i = 1
6) нет форматированного вывода или добавленного разделителя в write(a[i])
7) нет ; после первого end
8) нет ; после s:=0
9) нет кавычек для ввода текста в writeln (s = ,s)
10) нет точки после последнего end
Условие
for i:= 1 to n do (перебираем весь массив)
if a[i]<0 then s:=s+a[i]; (если элемент меньше 0, то увеличиваем переменную s (сумму) на него)
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 раз.