var
count, min, max: integer;
str: string;
begin
min := 191;
max := 149;
readln(str);
while (str <> '!') do
begin
if (str.ToInteger in [150..190]) then
begin
if (str.ToInteger > max) then max := str.ToInteger
else if (str.ToInteger < min) then min := str.ToInteger;
count := count + 1;
end;
readln(str);
end;
writeln(count);
write(min, ' ', max);
end.
Носителем информации, представленной наскальными росписями давних предков , выступает б)камень
Ваша схема, в общем, верна. Её можно чуть упростить, убрать проверку Р.
//Pascal ABC.NET 3.1 сборка 1219
Var
n,a,b:integer;
x:array of integer;
procedure vvod(n:integer; var x:array of integer);
begin
x:=readarrinteger(n);
end;
begin
readln(n,a,b);
vvod(n,x);
var sub1:=x.Where(x -> x<a);
var sub2:=x.Where(x -> x>b);
var sub:=sub1+sub2;
n:=1;
writeln('Сумма не вошедших:',sub.Sum);
foreach var i in sub do
n:=n*i;
writeln('Произведение не вошедших:',n);
writeln('Количество не вошедших:',sub.Count);
writeln('Все элементы:',sub);
end.
Пример ввода:
5
1
5
-1
-2
4
5
6
Пример вывода:
Сумма не вошедших:3
Произведение не вошедших:12
Количество не вошедших:3
Все элементы:[-1,-2,6]