Другие языки программирования и технологии

СРОЧНО ПАСКАЛЬ задан одномерный массив с (1..10), дать ответ: каких элементов больше: положительных или отрицательных

задан одномерный массив с (1..10), дать ответ: каких элементов больше: положительных или отрицательных
Примерно так:
sc:=0;
sn:=0;
for i:=1 to 10 do
begin
if a[i]>0 then sc:=sc+1;
if a[i]<0 then sn:=sn+1;
end;
if sc>sn then writeln('Больше положительных') else writeln('Больше отрицательных');
ВЁ
Визунчик Ёпт))
83 844
Лучший ответ
neg = getCountNegative(arr);
pos = getCoubntPositive(arr);
if (neg>pos) System.print ("больше отрицательных") else System.print ("больше положительных") ;
{Pascal ABC.NET}
begin
var a: array of integer = (10, -1, 2, -1, 5, -2, 3);
var count:integer = a.Aggregate(0, (sum,item) -> sum + Sign(item));
WriteLn(count > 0? 'Positive' : count < 0? 'Negative' : 'Equal');
end.

Или так:
const res:array of string = ('Negative', 'Equal', 'Positive');
begin
var a: array of integer = (10, -1, 10, -2, 2, 2);
var count:integer = a.Aggregate(0, (sum,item) -> sum + Sign(item));
WriteLn(res[Sign(count)+1]);
end.

P.S: Скрин прислать уже не могу (ограничения), но поверьте оно работает =)
Aggregate вызовет "аккумулирование" данных по массиву по заданному "правилу" и вернет их в count.
Правило:
Sign - вернет знак числа (-1 для отрицательного, 0 для 0 и 1 для положительного) => за каждый шаг будет увеличивать на 1 счетчик, если текущий элемент положительный или уменьшать на 1, если отрицательный. Соотв. если в результате вычислений окажется, что счетчик < 0, значит отрицательных было больше, если > 0 - значит положительных больше, 0 - если их кол-во равно. Кст. это более устойчивый алгоритм, чем считать кол-во положительных и отрицательных отдельно.
Надо просмотреть массив и посчитать кол-во положительных и отрицательных. А потом сравнить
Максим Кудрявцев как их можно посчитать?