Как найти сумму всех положительных чисел массива

Обходите массив. На каждой итерации проверяете текущий итерируемый элемент: больше ли он нуля, либо же меньше. Складываете в результат только те, что больше нуля:

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

SHirsch's user avatar

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

Uriel's user avatar

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

Jordan McQueen's user avatar

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

Лучший ответ Сообщение было отмечено Сттас как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//найти позиции первого и последнего положительных элементов
for (int i = 0; i < itemsCount; i++)
{
if (Mas[i] > 0)
{
if (!foundFirstelement)
{
firstId = lastId = i;
foundFirstelement = true;
}
else
{
lastId = i;
}

Дальше сам



1



Legend072

24 / 24 / 22

Регистрация: 22.02.2015

Сообщений: 125

02.02.2016, 14:14

3

Лучший ответ Сообщение было отмечено Сттас как решение

Решение

Сттас,

C#
1
2
3
4
5
6
7
8
9
10
11
12
            Random R = new Random();
            int[] m = new int[5];
            int sum = 0;
            Console.WriteLine("Исходный массив:");
            for(int i=0; i<m.Length;i++)
            {
                m[i] = R.Next(-10, 11);
                Console.Write(" " + m[i]);
                if (m[i] > 0)
                    sum += m[i];
            }
            Console.WriteLine("nСумма положительных: " + sum);



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

Лучший ответ Сообщение было отмечено Сттас как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Linq;
 
internal sealed class Program {
  static void Main() {
    Random r = new Random();
    Int32[] arr = Enumerable.Range(0, 10).Select(i => r.Next(-100, 100)).ToArray();
    Console.Write("Элементы массива: ");
    foreach (Int32 a in arr) Console.Write("{0} ", a);
    Console.WriteLine(
      "nСумма положительных элементов: {0}",
      arr.Where(i => i > 0).Sum()
    );
  }
}



1



Psilon

Master of Orion

Эксперт .NET

6094 / 4950 / 905

Регистрация: 10.07.2011

Сообщений: 14,522

Записей в блоге: 5

02.02.2016, 17:20

7

C#
1
2
3
4
5
6
7
8
9
10
11
using System;
using System.Linq;
 
class Program
{
    static void Main()
    {
        var source = Enumerable.Range(-100, 200);
        Console.WriteLine(source.Sum(x => x > 0 ? x : 0));
    }
}



0



Ankoo

2 / 2 / 3

Регистрация: 20.03.2015

Сообщений: 112

02.02.2016, 17:48

8

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array = new int[10];
            int[] count = new int[10];
            Random r = new Random();
            int summ = 0;
            for (int i = 0; i < array.Length; i++)
            {  array[i] = r.Next(-100,100);  }
            Console.WriteLine("Вывод массива");
            for (int i = 0; i < array.Length; i++)  
            {                                       
                Console.Write("  " + array[i]);     
            }                                       
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] > 0) { count [i] = array[i]; };
            }
            Console.WriteLine();
            Console.WriteLine("Вывод массива положителиных элементов");
            for (int i = 0; i < count.Length; i++)  
            {                                                   
                Console.Write("  "+ count[i]);      
            }
            Console.WriteLine();
            for (int i = 0; i < count.Length; i++)
            {
                summ = summ + count[i];
            }
            Console.WriteLine("Сумма положительных элементов массива {0}", summ);
            Console.ReadKey();
        }
        
 
    }
}



1



0 / 0 / 0

Регистрация: 20.01.2016

Сообщений: 26

02.02.2016, 19:07

 [ТС]

9

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace massiv13
{
class Program
{

static void Main(string[] args)
{
Console.WriteLine(«Введите размер массива»);
int n = Convert.ToInt32(Console.ReadLine());
int[] array = new int[n];
int numOfNegativ = 0;
List<int> arrayNew = new List<int>();
Console.WriteLine(«Введите числа массива»);
for (int i = 0; i < n; i++)
{
array[i] = Convert.ToInt32(Console.ReadLine());
if (numOfNegativ < n)
{
if (array[i] < 0)
{
numOfNegativ++;
}
else { arrayNew.Add(array[i]); }
}
else { arrayNew.Add(array[i]); }

}
Console.WriteLine(«Отсортирорванный массив целых чисел:»);
foreach (int item in arrayNew) { Console.Write(item + » «); }
Console.ReadKey();
}
}
}



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)

Функция сложения всех положительных чисел в массиве - JavaScript

Функция сложения всех положительных чисел в массиве — JavaScript

В результате получаем сумму всех положительных чисел массива, равную 10.

Как работает функция сложения всех положительных чисел массива?

На конкретном массиве мы разберём логику работы функции. Пусть у нас будет массив для эксперимента:

var massiv = [-10, -5, -5, 0, 5, 5, 20]

Мы будем «чейнить»(цепочничать) — это значит, что мы напишем всю логику на существующих методах языка JavaScript и каждый отдельный блок будет прерываться точкой — .

На первом этапе нам нужно получить только те элементы массива, которые больше нуля. С этой задачей идеально справляется метод filter(). Он бегает по массиву и проверяет условие на каждом элементе. Если условие «трушное» (true), тогда этот элемент попадает в новый массив, если условие «фолсное» (false), тогда не попадает. Условие такое — значение элемента оригинального массива больше нуля.

Эта проверка(фильтрация) выглядит так:

massiv.filter(i => i > 0)

Что получится?

Отфильтровали положительные числа из массива - JavaScript

Отфильтровали положительные числа из массива — JavaScript

Мы успешно отфильтровали положительные числа из оригинального массива. То есть нам вернулся новый массив:

[5, 5, 20]

Теперь по этому массиву нам надо пробежаться по каждому элементу и наполнить «аккумулятор» значениями суммирования. С этой задачей идеально справляется метод map().

Первый параметр для map() будет изменять значение аккумулятора и возвращать его в новый массив. То есть на каждом шаге метода мы будем получать текущее значение в элементе оригинального массива, прибавлять его к аккумулятору и возвращать в новый массив. При таком подходе каждый текущий элемент нового массива будет являться суммой всех пройденных элементов оригинального массива.

Второй параметр для map() будет сам объект аккумулятор — это наш x, с присвоенным значением 0. Он объявлен «до» анонимной функции, а значит будет перезаписываться новыми значениями.

В качестве объекта аккумулятора мы будем использовать переменную x=0

[5, 5, 20].map(i => x += i, x=0)

Что получится?

Сделали массив из сумм элементов оригинального - JavaScript

Сделали массив из сумм элементов оригинального — JavaScript

Каждая итерация наращивала «суммную» массу и «откладывала» её в элементы нового массива. Это значит, что в этом массиве нам плевать на все элементы кроме последнего, потому что значение последнего элемента — это и есть сумма всех значений элементов оригинального массива. Это то, что нам нужно. Остаётся только дотянуться до последнего элемента. Как это сделать?

Проще всего перевернуть текущий массив и обратиться к его первому элементу — к индексу ноль.

[5, 10, 30].reverse()[0]
30

Что получится?

Перевернули массив - JavaScript

Перевернули массив — JavaScript

Вот и всё! Готово.

Собственный метод для объектов-прототипов 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

Информационные ссылки

JavaScript | Как сложить все числа в массиве?

JavaScript | Как сложить все отрицательные числа в массиве?

Стандарт ECMAScript — Раздел «23.1.3 Properties of the Array Prototype Object» — https://tc39.es/ecma262/#sec-properties-of-the-array-prototype-object

Понравилась статья? Поделить с друзьями:
  • Как в инстаграме найти все комментарии человека
  • Не открывается папка загрузки windows 10 как исправить
  • Соус слишком жидкий как исправить
  • Как найти сумму оборота оборотных средств
  • Как найти золото по артикулу