program z1;
var a: array [1..15] of real;
i, k, b: integer;
proizv: real;
begin
proizv:= 1;
a[1]:= 0.01;
a[2]:= -3;
a[3]:= 0;
a[4]:= 1.25;
a[5]:= -371;
a[6]:= 0.5;
a[7]:= -0.1;
a[8]:= 1.2;
a[9]:= -5;
a[10]:= -172.3;
a[11]:= 19783;
a[12]:= -2.7;
a[13]:= 43.51;
a[14]:= 0;
a[15]:= -0.02;
b:= -3;
k:= 0;
for i:=1 to 15 do
begin
if (a[i] <> 0) and (a[i] > b) then
begin
proizv:= proizv * a[i];
k:= k+1;
end;
end;
writeln('Количество чисел, подходящих условию: ', k);
writeln('Произведение чисел, подходящих условию: ', proizv);
end.
Объяснение:
На фото нарисована блок-схема, она немного криво сфоткана, надеюсь разберёшься. Если есть вопросы - задавай :)

Объяснение:
1)У тебя спрашивают b=1? У тебя дано b=3, значит b!=1. Если нет, то переходим к следующим указаниям: с=с-b=4-3=1, b=b+c=3+1(Потому что в предыдущем шаге мы дали новое значение для c, вернее произвели математическую операцию с ним. Возвращаемся(Слева линия) снова к логическому условию. Я честно говоря ХЗ, что они тут имели ввиду, но после того, что я описал c=1,но если мы продолжим проверку b=1, то c начнет принимать отрицательные значения. Цикл вышел, как мне кажется.
Теперь мне лень расписывать - держи фото/скрины
Не знаю, что у тебя за язык программирования, но я сделал тоже самое на Python, вроде результат отличатся не должен.
