Обходите массив. На каждой итерации проверяете текущий итерируемый элемент: больше ли он нуля, либо же меньше. Складываете в результат только те, что больше нуля:
let array = [-2, 4, -10, 8];
let result = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] > 0) {
result += array[i];
}
}
console.log(result);
let array = [-2, 4, -10, 8];
let summ = array.reduce((a,v)=>v>0?a+v:a, 0);
Более понятный вариант для начинающего
const array = [1, 2, 4, -15, 20, -5, -7] // массив
let value = 0 // сюда записываем результат
array.forEach((element) => value += element > 0 ? element : 0) // перебор массива array + условие (что нужно прибавить к value)
let array = [-2, 4, -10, 8];
let count = 0;
for (let i = 0; i < array.length; i++) {
if (!String(array[i]).startsWith("-")) {
count += array[i]
}
}
console.log(count) // 12
Информационный блок
Рекламный блок
Использование циклов. Сумма положительных элементов массива
Σ Сумма элементов массива. 🔁 Циклы for, while, repeat. Пять примеров решения задачи на языке Паскаль. В некоторых вариантах используется синтаксис для PascalABC.NET
Σ Сумма случайных чисел. 🔁 Циклы for, while. Три задачи на нахождение суммы случайно сгенерированных элементов. Для каждой задачи приведено два варианта — классический синтаксис (Turbo/Borland Pascal) и PascalABC.NET
🔀 Обмен двух чисел в массиве. Тема «Циклы и массивы». Два варианта решения задачи.
Σ Вычисление суммы цифр числа. Пять вариантов решения задачи, в том числе одно по рекомендациям PascalABC.NET (качество кода 149%).
Циклы for, while, repeat. Шесть примеров решения задачи на языке Паскаль. Варианты для Turbo/Borland/FreePascal и PascalABC.NET
Цикл for. Найти сумму положительных элементов вещественного массива
Задание:
Ввести с клавиатуры массив из 10 вещественных чисел.
Найти сумму положительных элементов массива.
Program Summa10;
Var
i : Integer;
Summa : Real;
A : array [1..10] of Real;
begin
writeln(‘Введите 10 вещественных чисел ‘);
for i := 1 to 10 do readln(A[i]);
Summa := 0;
for i := 1 to 10 do
if (A[i] > 0) then Summa := Summa + A[i];
writeln(‘Сумма = ‘, Summa);
end.
Цикл for. Найти сумму положительных элементов массива
Задание:
Ввести с клавиатуры массив из 10 вещественных чисел.
Найти сумму положительных элементов массива.
Вариант для PascalABC.NET
begin
var A : array [1..10] of Real;
var Summa := 0.0;
write(‘Введите 10 вещественных чисел ‘);
for var i := 1 to 10 do begin // Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
A[i] := ReadlnReal;
if (A[i] > 0) then Summa := Summa + A[i];
end;
writeln(‘Сумма = ‘, Summa);
end.
Цикл while. Найти сумму положительных элементов массива
Задание:
Ввести с клавиатуры массив из 10 вещественных чисел.
Найти сумму положительных элементов массива.
Program CalcSum;
Var
i : Integer;
Summa : Real;
A : array [1..10] of Real;
begin
writeln(‘Введите 10 вещественных чисел ‘);
i := 1;
while i <= 10 do begin
readln(A[i]);
i := i + 1;
end;
Summa := 0;
i := 1;
while i <= 10 do begin
if (A[i] > 0) then Summa := Summa + A[i];
i := i + 1;
end;
writeln(‘Сумма = ‘, Summa);
end.
Цикл while. Вычислить сумму положительных элементов массива
Задание:
Ввести с клавиатуры массив из 10 вещественных чисел.
Найти сумму положительных элементов массива.
var
i: Integer;
Summa: Real;
A: array [1..10] of Real;
begin
write(‘Введите 10 вещественных чисел ‘);
i := 1;
Summa := 0;
while i <= 10 do
begin
readln(A[i]);
if (A[i] > 0) then Summa := Summa + A[i];
i := i + 1;
end;
writeln(‘Сумма = ‘, Summa);
end.
Цикл while. Сумма положительных элементов массива. Вариант для PascalABC.NET
Задание:
Ввести с клавиатуры массив из 10 вещественных чисел.
Найти сумму положительных элементов массива.
begin
Var
A : array of Real := New real[10]; // Динамический массив. Индексы в массиве начинаются с 0
Var
i : Integer := 1;
Var
Summa : Real := 0;
writeln(‘Введите 10 вещественных чисел ‘);
while i <= 10 do begin
A[i-1] := ReadReal;
if (A[i-1] > 0) then Summa += A[i-1];
i += 1;
end;
Println(‘Сумма = ‘, Summa);
end.
Цикл repeat. Сумма положительных элементов массива
Задание:
Ввести с клавиатуры массив из 10 вещественных чисел.
Найти сумму положительных элементов массива.
Вариант для PascalABC.NET
Var
i : Integer = 1;
Summa : Real = 0;
A : array [1..10] of Real;
begin
writeln(‘Введите 10 вещественных чисел ‘);
repeat
A[i] := ReadReal(‘Введите число ‘);
if (A[i] > 0) then Summa += A[i];
i += 1;
until i > 10;
Println(‘Сумма = ‘, Summa);
end.
Σ Сумма элементов массива. 🔁 Циклы for, while, repeat. Пять примеров решения задачи на языке Паскаль. В некоторых вариантах используется синтаксис для PascalABC.NET
Σ Сумма случайных чисел. 🔁 Циклы for, while. Три задачи на нахождение суммы случайно сгенерированных элементов. Для каждой задачи приведено два варианта — классический синтаксис (Turbo/Borland Pascal) и PascalABC.NET
🔀 Обмен двух чисел в массиве. Тема «Циклы и массивы». Два варианта решения задачи.
Σ Вычисление суммы цифр числа. Пять вариантов решения задачи, в том числе одно по рекомендациям PascalABC.NET (качество кода 149%).
Рекламный блок
Информационный блок
i need to write a function that takes an array of numbers and finds the maximum sum of all the numbers. In other words, I need to find the sum of just the positive numbers. I wrote this, I’m getting «list is out of range»
thoughts?
def maximum_sub(A):
x = 0
i = 0
for i in A:
while A[i] > 0:
x+=A[i]
i+=1
return x
asked Oct 27, 2016 at 23:21
3
Use super functions and list comprehension instead:
>>> a = [1, 2, 3, -4, 5, -3, 7, 8, 9, 6, 4, -7]
>>> sum(x for x in a if x > 0)
45
[x for x in a if x > 0]
will create an array made of the positive values in a
.
sum(...)
will return the sum of the elements in that array.
answered Oct 27, 2016 at 23:24
UrielUriel
15.4k6 gold badges24 silver badges46 bronze badges
6
There are better approaches with sums and comprehensions, but I’ll assume you’re writing a function as an exercise in algorithms.
You don’t need the while loop. Use an if to check if it is positive, and add it to the sum. Otherwise, don’t do anything. The for loop will automatically iterate over the values for you.
def maximum_sum(A):
x = 0
for i in A:
if i > 0:
x += i
return x
A few words of advice: name things expressively. Here’s some names I might use:
def maximum_sum(arr):
max_sum = 0
for num in arr:
if num > 0:
max_sum += num
return max_sum
answered Oct 27, 2016 at 23:31
1
0 / 0 / 0 Регистрация: 20.01.2016 Сообщений: 26 |
|
1 |
|
Найти сумму всех положительных элементов массива02.02.2016, 14:01. Показов 14615. Ответов 10
написать на программе на c# найти сумму всех положительных элементов массива результат вывести на экран.
0 |
Евгений Ратник 1 / 1 / 1 Регистрация: 04.01.2016 Сообщений: 44 |
||||
02.02.2016, 14:11 |
2 |
|||
Решение
Дальше сам
1 |
Legend072 24 / 24 / 22 Регистрация: 22.02.2015 Сообщений: 125 |
||||
02.02.2016, 14:14 |
3 |
|||
РешениеСттас,
1 |
0 / 0 / 0 Регистрация: 20.01.2016 Сообщений: 26 |
|
02.02.2016, 15:15 [ТС] |
4 |
спасибо Добавлено через 15 минут Добавлено через 27 минут
0 |
24 / 24 / 22 Регистрация: 22.02.2015 Сообщений: 125 |
|
02.02.2016, 15:35 |
5 |
Сттас, выложите код, который у вас не работает.
1 |
greg zakharov Покинул форум 5637 / 1422 / 350 Регистрация: 07.05.2015 Сообщений: 2,788 |
||||
02.02.2016, 16:39 |
6 |
|||
Решение
1 |
Psilon Master of Orion 6094 / 4950 / 905 Регистрация: 10.07.2011 Сообщений: 14,522 Записей в блоге: 5 |
||||
02.02.2016, 17:20 |
7 |
|||
0 |
Ankoo 2 / 2 / 3 Регистрация: 20.03.2015 Сообщений: 112 |
||||
02.02.2016, 17:48 |
8 |
|||
1 |
0 / 0 / 0 Регистрация: 20.01.2016 Сообщений: 26 |
|
02.02.2016, 19:07 [ТС] |
9 |
using System; namespace massiv13 static void Main(string[] args) }
0 |
24 / 24 / 22 Регистрация: 22.02.2015 Сообщений: 125 |
|
02.02.2016, 21:12 |
10 |
Сттас, каким образом этот код относится к задаче? Вы тут что-то сортируете, а сами просите найти сумму всех положительных в теме. Вам нужно отсортировать массив или все таки найти сумму положительных?
0 |
0 / 0 / 0 Регистрация: 20.01.2016 Сообщений: 26 |
|
03.02.2016, 08:36 [ТС] |
11 |
найти сумму
0 |
Функция сложения всех положительных чисел в массиве
function sumPlus (arr) { return arr.filter(i => i > 0).map(i => x += i, x=0).reverse()[0] }
Пример работы функции:
var massiv = [-5, -3, -2 , 0, 2, 3, 5] sumPlus (massiv)
В результате получаем сумму всех положительных чисел массива, равную 10.
Как работает функция сложения всех положительных чисел массива?
На конкретном массиве мы разберём логику работы функции. Пусть у нас будет массив для эксперимента:
var massiv = [-10, -5, -5, 0, 5, 5, 20]
Мы будем «чейнить»(цепочничать) — это значит, что мы напишем всю логику на существующих методах языка JavaScript и каждый отдельный блок будет прерываться точкой — .
На первом этапе нам нужно получить только те элементы массива, которые больше нуля. С этой задачей идеально справляется метод filter(). Он бегает по массиву и проверяет условие на каждом элементе. Если условие «трушное» (true), тогда этот элемент попадает в новый массив, если условие «фолсное» (false), тогда не попадает. Условие такое — значение элемента оригинального массива больше нуля.
Эта проверка(фильтрация) выглядит так:
massiv.filter(i => i > 0)
Что получится?
Мы успешно отфильтровали положительные числа из оригинального массива. То есть нам вернулся новый массив:
[5, 5, 20]
Теперь по этому массиву нам надо пробежаться по каждому элементу и наполнить «аккумулятор» значениями суммирования. С этой задачей идеально справляется метод map().
Первый параметр для map() будет изменять значение аккумулятора и возвращать его в новый массив. То есть на каждом шаге метода мы будем получать текущее значение в элементе оригинального массива, прибавлять его к аккумулятору и возвращать в новый массив. При таком подходе каждый текущий элемент нового массива будет являться суммой всех пройденных элементов оригинального массива.
Второй параметр для map() будет сам объект аккумулятор — это наш x, с присвоенным значением 0. Он объявлен «до» анонимной функции, а значит будет перезаписываться новыми значениями.
В качестве объекта аккумулятора мы будем использовать переменную x=0.
[5, 5, 20].map(i => x += i, x=0)
Что получится?
Каждая итерация наращивала «суммную» массу и «откладывала» её в элементы нового массива. Это значит, что в этом массиве нам плевать на все элементы кроме последнего, потому что значение последнего элемента — это и есть сумма всех значений элементов оригинального массива. Это то, что нам нужно. Остаётся только дотянуться до последнего элемента. Как это сделать?
Проще всего перевернуть текущий массив и обратиться к его первому элементу — к индексу ноль.
[5, 10, 30].reverse()[0] 30
Что получится?
Вот и всё! Готово.
Собственный метод для объектов-прототипов Array
Array.prototype.sumPlus = function() { return this.filter(i=>i>0).map(i=>x+=i,x=0).reverse()[0] }
Пример работы метода:
[-5, -3, -2 , 0, 2, 3, 5].sumPlus()
10
Информационные ссылки
JavaScript | Как сложить все числа в массиве?
JavaScript | Как сложить все отрицательные числа в массиве?
Стандарт ECMAScript — Раздел «23.1.3 Properties of the Array Prototype Object» — https://tc39.es/ecma262/#sec-properties-of-the-array-prototype-object