Другие языки программирования и технологии
СРОЧНО ПАСКАЛЬ задан одномерный массив с (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('Больше отрицательных');
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('Больше отрицательных');
neg = getCountNegative(arr);
pos = getCoubntPositive(arr);
if (neg>pos) System.print ("больше отрицательных") else System.print ("больше положительных") ;
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 - если их кол-во равно. Кст. это более устойчивый алгоритм, чем считать кол-во положительных и отрицательных отдельно.
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 - если их кол-во равно. Кст. это более устойчивый алгоритм, чем считать кол-во положительных и отрицательных отдельно.
Надо просмотреть массив и посчитать кол-во положительных и отрицательных. А потом сравнить
Максим Кудрявцев
как их можно посчитать?
Похожие вопросы
- Написать в С++. Задан одномерный массив А из 10 чисел.
- Паскаль, домашка, одномерный массив и функции, ХЭЛП!
- Задан числовой массив A[1:m, 1:n]. Составить программу...
- составьте программу ввода элементов массива а 1 10
- Заполнить случайным образом одномерный массив из n элементов и обменять местами последний и максимальный (в паскале)
- вставить число Х песле последнего положительного элемента в массиве В из 10 чисел ?на паскале... на паскале...
- Пусть задан целочисленный массив из 30 элементов.
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Можно-ли использовать сортировку слиянием на массиве, состоящем из 10-ти элементов.
- Сформировать одномерный массив на языке программирования Паскаль