Гид по технологиям

Как найти сумму всех элементов массива

3 min read Алгоритмы Обновлено 03 Dec 2025
Сумма элементов массива в C++, Python и JavaScript
Сумма элементов массива в C++, Python и JavaScript

Иллюстрация: суммирование всех элементов массива

Массив — это коллекция элементов, расположенных в смежных ячейках памяти. Это одна из самых часто используемых структур данных в программировании. В этой статье вы научитесь вычислять сумму всех элементов массива на C++, Python и JavaScript, поймёте сложность алгоритма и получите готовые шаблоны кода.

Постановка задачи

Дан массив чисел. Нужно вычислить и вывести сумму всех элементов этого массива.

Пример 1: arr = [1, 2, 3, 4, 5]

Сумма = 1 + 2 + 3 + 4 + 5 = 15

Вывод: 15

Пример 2: arr = [34, 56, 10, -2, 5, 99]

Сумма = 34 + 56 + 10 + (-2) + 5 + 99 = 202

Вывод: 202

Подход

Классический пошаговый алгоритм:

  1. Завести переменную sum и инициализировать её нулём.
  2. Пройти по всем элементам массива циклом.
  3. Прибавлять каждый элемент к sum.
  4. Вернуть или вывести значение sum.

Временная сложность: O(n) — требуется один проход по массиву. Память: O(1) — дополнительно используется только одна переменная суммирования.

Важно: при работе с целыми числами учитывайте возможность переполнения (overflow) — используйте типы с большим диапазоном (например, long long в C++ или bigint/BigInt в JavaScript при необходимости) или плавающую точку для большого суммирования дробных чисел.

Программа на C++

Ниже — реализация стандартного подхода на C++.

// C++ program to find the sum of elements in an array
#include 
using namespace std;

// Function to return the sum of elements in an array
int findSum(int arr[], int size)
{
    int sum = 0;
    for (int i = 0; i < size; i++)
    {
        sum += arr[i];
    }
    return sum;
}

// Function to print the elements of the array
void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}

// Пример использования
int main()
{
    int arr1[] = {1, 2, 3, 4, 5};
    int size1 = sizeof(arr1) / sizeof(arr1[0]);
    cout << "Array 1:" << endl;
    printArray(arr1, size1);
    cout << "Sum of elements of the array: " << findSum(arr1, size1) << endl;

    int arr2[] = {34, 56, 10, -2, 5, 99};
    int size2 = sizeof(arr2) / sizeof(arr2[0]);
    cout << "Array 2:" << endl;
    printArray(arr2, size2);
    cout << "Sum of elements of the array: " << findSum(arr2, size2) << endl;

    int arr3[] = {-1, 50, -56, 43, 53, 356, -324};
    int size3 = sizeof(arr3) / sizeof(arr3[0]);
    cout << "Array 3:" << endl;
    printArray(arr3, size3);
    cout << "Sum of elements of the array: " << findSum(arr3, size3) << endl;

    return 0;
}

Вывод программы:

Array 1:
1 2 3 4 5
Sum of elements of the array: 15
Array 2:
34 56 10 -2 5 99
Sum of elements of the array: 202
Array 3:
-1 50 -56 43 53 356 -324
Sum of elements of the array: 121

C++ с использованием STL (accumulate)

Стандартная библиотека C++ предоставляет удобную функцию accumulate из , которая выполняет суммирование за один вызов.

// C++ program using STL to find the sum of elements in an array
#include 
using namespace std;

void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
        cout << arr[i] << " ";
    cout << endl;
}

int main()
{
    int arr1[] = {1, 2, 3, 4, 5};
    int size1 = sizeof(arr1) / sizeof(arr1[0]);
    cout << "Array 1:" << endl;
    printArray(arr1, size1);
    cout << "Sum of elements of the array: " << accumulate(arr1, arr1 + size1, 0) << endl;

    int arr2[] = {34, 56, 10, -2, 5, 99};
    int size2 = sizeof(arr2) / sizeof(arr2[0]);
    cout << "Array 2:" << endl;
    printArray(arr2, size2);
    cout << "Sum of elements of the array: " << accumulate(arr2, arr2 + size2, 0) << endl;

    int arr3[] = {-1, 50, -56, 43, 53, 356, -324};
    int size3 = sizeof(arr3) / sizeof(arr3[0]);
    cout << "Array 3:" << endl;
    printArray(arr3, size3);
    cout << "Sum of elements of the array: " << accumulate(arr3, arr3 + size3, 0) << endl;

    return 0;
}

Вывод тот же, но код компактнее.

Программа на Python

Прямой подход с циклом и вариант с встроенной функцией sum().

# Python program to find the sum of elements in an array

# Function to return the sum of elements in an array
def findSum(arr):
    total = 0
    for element in arr:
        total += element
    return total

# Function to print the elements of the array
def printArray(arr):
    for i in range(len(arr)):
        print(arr[i], end=' ')
    print()

# Driver Code
arr1 = [1, 2, 3, 4, 5]
print("Array 1:")
printArray(arr1)
print("Sum of elements of the array:", findSum(arr1))

arr2 = [34, 56, 10, -2, 5, 99]
print("Array 2:")
printArray(arr2)
print("Sum of elements of the array:", findSum(arr2))

arr3 = [-1, 50, -56, 43, 53, 356, -324]
print("Array 3:")
printArray(arr3)
print("Sum of elements of the array:", findSum(arr3))

Вывод:

Array 1:
1 2 3 4 5
Sum of elements of the array: 15
Array 2:
34 56 10 -2 5 99
Sum of elements of the array: 202
Array 3:
-1 50 -56 43 53 356 -324
Sum of elements of the array: 121

Альтернатива — встроенная функция sum():

arr = [1, 2, 3, 4, 5]
print(sum(arr))  # 15

Программа на JavaScript

Прямой подход с циклом:

// JavaScript program to find the sum of elements in an array

function findSum(arr) {
    let sum = 0;
    for (let i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    return sum;
}

function printArray(arr) {
    console.log(arr.join(' '));
}

const arr1 = [1, 2, 3, 4, 5];
console.log('Array 1:');
printArray(arr1);
console.log('Sum of elements of the array: ' + findSum(arr1));

const arr2 = [34, 56, 10, -2, 5, 99];
console.log('Array 2:');
printArray(arr2);
console.log('Sum of elements of the array: ' + findSum(arr2));

const arr3 = [-1, 50, -56, 43, 53, 356, -324];
console.log('Array 3:');
printArray(arr3);
console.log('Sum of elements of the array: ' + findSum(arr3));

Или через reduce():

const arr = [1, 2, 3, 4, 5];
const sum = arr.reduce((a, b) => a + b, 0);
console.log(sum); // 15

Когда простой подход не сработает

  • Переполнение: при суммировании большого количества больших целых чисел результат может выйти за пределы типа. Решение: использовать 64-битные типы, BigInt или плавающую точку, в зависимости от задачи.
  • Нулевые и неопределённые значения: если массив содержит null/None/undefined, нужно определить поведение — пропускать или трактовать как 0.
  • Большие данные: при суммировании очень больших наборов (стриминг) имеет смысл аккумулировать результаты по блокам и, при необходимости, использовать параллельную обработку.

Факт-бокс

  • Временная сложность: O(n)
  • Память: O(1) доп. память
  • Поддерживаемые типы: целые, дробные; учтите переполнение

Краткая шпаргалка (однострочники)

  • Python: sum(arr)
  • C++: std::accumulate(arr, arr + n, 0)
  • JavaScript: arr.reduce((a,b)=>a+b, 0)

Критерии приёмки

  1. Для массива [1,2,3,4,5] результат 15.
  2. Для массива с отрицательными числами корректная сумма (например, пример 2 → 202).
  3. Пустой массив возвращает 0 (если это ожидаемое поведение).
  4. Поведение при null/undefined задокументировано и обработано.

Тестовые случаи

  • Обычный набор положительных чисел.
  • Набор с отрицательными числами.
  • Пустой массив.
  • Массив с очень большими значениями (проверка переполнения).
  • Массив с нулевыми и/или недопустимыми значениями.

Быстрый SOP для внедрения в проект

  1. Выберите тип данных, учитывая ожидаемый диапазон значений.
  2. Реализуйте суммирование через однопроходный цикл (или встроенную функцию).
  3. Добавьте обработку специальных значений (null/undefined/NaN).
  4. Напишите юнит-тесты по критериям приёмки.
  5. При работе с большими объёмами данных протестируйте на переполнение и производительность.

Важно: документируйте ожидаемое поведение для пустых и нечисловых значений.

Итог

Суммирование элементов массива — базовая задача с линейной сложностью. Для большинства практических задач достаточно простого прохода по массиву или встроенных функций (sum, accumulate, reduce). Основные риски — переполнение и нечисловые элементы; их нужно обрабатывать заранее.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Call of Duty: WWII — ошибки и исправления
Игры

Call of Duty: WWII — ошибки и исправления

Назначение со‑хоста в Zoom
Руководство

Назначение со‑хоста в Zoom

Как использовать rsync для резервного копирования в Linux
Linux

Как использовать rsync для резервного копирования в Linux

Браузер по умолчанию в iOS 14 — как сменить
Мобильные

Браузер по умолчанию в iOS 14 — как сменить

mpksldrv.sys — как исправить повторные перезагрузки
Windows

mpksldrv.sys — как исправить повторные перезагрузки

Windows Media Center в Windows 10 — можно ли установить?
Windows

Windows Media Center в Windows 10 — можно ли установить?