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

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

4 min read Алгоритмы Обновлено 06 Jan 2026
Сумма элементов массива — 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. Пройти по всем элементам массива и прибавить каждый из них к sum.
  3. Вернуть или вывести sum.

Сложность: время O(n), память O(1) при использовании одного счётчика (кроме случаев, когда используется дополнительная структура).

C++: реализация на базовом уровне

Ниже пример на C++. В коде локализованы текстовые сообщения для вывода.

// C++ программа для подсчёта суммы элементов массива
#include 
using namespace std;

// Функция возвращает сумму элементов массива
int findSum(int arr[], int size)
{
    int sum = 0;
    for (int i = 0; i < size; i++)
    {
        sum += arr[i];
    }
    return sum;
}

// Функция печатает элементы массива
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 << "Массив 1:" << endl;
    printArray(arr1, size1);
    cout << "Сумма элементов массива: " << findSum(arr1, size1) << endl;

    int arr2[] = {34, 56, 10, -2, 5, 99};
    int size2 = sizeof(arr2) / sizeof(arr2[0]);
    cout << "Массив 2:" << endl;
    printArray(arr2, size2);
    cout << "Сумма элементов массива: " << findSum(arr2, size2) << endl;

    int arr3[] = {-1, 50, -56, 43, 53, 356, -324};
    int size3 = sizeof(arr3) / sizeof(arr3[0]);
    cout << "Массив 3:" << endl;
    printArray(arr3, size3);
    cout << "Сумма элементов массива: " << findSum(arr3, size3) << endl;

    return 0;
}

Вывод этой программы:

Массив 1:
1 2 3 4 5
Сумма элементов массива: 15
Массив 2:
34 56 10 -2 5 99
Сумма элементов массива: 202
Массив 3:
-1 50 -56 43 53 356 -324
Сумма элементов массива: 121

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

Библиотечная функция accumulate упрощает задачу.

// C++ программа с использованием STL для подсчёта суммы
#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 << "Массив 1:" << endl;
    printArray(arr1, size1);
    cout << "Сумма элементов массива: " << accumulate(arr1, arr1 + size1, 0) << endl;

    int arr2[] = {34, 56, 10, -2, 5, 99};
    int size2 = sizeof(arr2) / sizeof(arr2[0]);
    cout << "Массив 2:" << endl;
    printArray(arr2, size2);
    cout << "Сумма элементов массива: " << accumulate(arr2, arr2 + size2, 0) << endl;

    int arr3[] = {-1, 50, -56, 43, 53, 356, -324};
    int size3 = sizeof(arr3) / sizeof(arr3[0]);
    cout << "Массив 3:" << endl;
    printArray(arr3, size3);
    cout << "Сумма элементов массива: " << accumulate(arr3, arr3 + size3, 0) << endl;

    return 0;
}

Вывод тот же, но код короче и менее подвержен ошибкам при суммировании стандартных типов.

Python: базовый подход и встроенная функция

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

# Python программа для подсчёта суммы элементов массива

# Функция возвращает сумму элементов
def findSum(arr):
    sum = 0
    for element in arr:
        sum += element
    return sum

# Функция печатает элементы массива
def printArray(arr):
    for i in range(len(arr)):
        print(arr[i], end=' ')
    print()

# Примеры
arr1 = [1, 2, 3, 4, 5]
print("Массив 1:")
printArray(arr1)
print("Сумма элементов массива:", findSum(arr1))

arr2 = [34, 56, 10, -2, 5, 99]
print("Массив 2:")
printArray(arr2)
print("Сумма элементов массива:", findSum(arr2))

arr3 = [-1, 50, -56, 43, 53, 356, -324]
print("Массив 3:")
printArray(arr3)
print("Сумма элементов массива:", findSum(arr3))

И более компактно с sum():

arr1 = [1, 2, 3, 4, 5]
print("Массив 1:")
print(*arr1)
print("Сумма элементов массива:", sum(arr1))

Python автоматически поддерживает большие целые числа, поэтому риск переполнения для целых чисел отсутствует.

JavaScript: цикл и reduce

Ниже показан обычный цикл и вариант с reduce(). Также локализованы сообщения для вывода в браузере.

// JavaScript: подсчёт суммы через цикл
function findSum(arr) {
    let sum = 0;
    for (let i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    return sum;
}

function printArray(arr) {
    for (let i = 0; i < arr.length; i++) {
        document.write(arr[i] + " ");
    }
    document.write("
"); } const arr1 = [1, 2, 3, 4, 5]; document.write("Массив 1:
"); printArray(arr1); document.write("Сумма элементов массива: " + findSum(arr1) + "
");

С использованием reduce():

const arr1 = [1, 2, 3, 4, 5];
document.write("Массив 1:
"); printArray(arr1); var sum1 = arr1.reduce(function(a, b) { return a + b; }, 0); document.write("Сумма элементов массива: " + sum1 + "
");

reduce удобен в функциональном стиле и хорошо читается, но в нём стоит заботиться о корректном начальном значении (0) и типах элементов.

Когда этот подход не подходит

  • Очень длинные массивы и риск переполнения при использовании 32-битных типов. Решение: использовать шире типы (long long в C++) или bigint в других языках.
  • Ситуации с плавающей точкой, где нужна высокая точность суммирования (аккумуляция ошибок). Решение: алгоритмы компенсации ошибок (Kahan summation).
  • Параллельная обработка больших наборов данных: простой последовательный проход не использует многопоточность. Решение: суммирование по чанкам с редукцией.

Альтернативные подходы и оптимизации

  • Использовать встроенные функции (accumulate, sum, reduce) для краткости и меньшего числа ошибок.
  • Для потоковых данных — поддерживать текущую сумму и обновлять её при приходе новых элементов.
  • Для сокращения погрешностей при сумме чисел с плавающей точкой применяйте Kahan или pairwise summation.
  • Для параллельного суммирования разбивайте массив на сегменты и суммируйте в потоках, затем объединяйте результаты.

Факто-бокс

  • Временная сложность: O(n).
  • Память: O(1) для накопителя (если не считать входной массив).
  • Python int: произвольной длины (нет переполнения).
  • C++ int: зависит от реализации (обычно 32 бита). Для больших сумм используйте long long.

Шпаргалка (Cheat sheet)

  • Базовый цикл: инициализация sum = 0 → for each x → sum += x.
  • C++ STL: #include → accumulate(begin, end, 0).
  • Python: sum(arr).
  • JS: arr.reduce((a, b) => a + b, 0).
  • Для float-данных: используйте Kahan, если важна точность.

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

  • Функция возвращает корректную сумму для положительных и отрицательных чисел.
  • Для пустого массива возвращается 0.
  • Нет неконтролируемого переполнения (или используется документированное поведение для языка).

Роль-based чеклист

  • Для студента: написать тесты на пустой массив, все отрицательные, смешанные значения.
  • Для интервьюера: попросить сложность алгоритма и вариант с библиотекой.
  • Для инженера в проде: учитывать переполнение, точность плавающей точки и возможность параллельной обработки.

Краткое резюме

Подсчёт суммы элементов массива — базовая задача. Её решают простым проходом и накоплением. Для практики полезно знать встроенные функции языка, ограничения типов и алгоритмы повышения точности для плавающей арифметики.

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

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

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

Пересылка почты Outlook ↔ Gmail: полное руководство
Почта

Пересылка почты Outlook ↔ Gmail: полное руководство

Как узнать, что пора менять батарейку AirTag
Гаджеты

Как узнать, что пора менять батарейку AirTag

Как удалить устройства из Google Home
Умный дом

Как удалить устройства из Google Home

Вернуть «Open command window here» в Windows 11
Windows

Вернуть «Open command window here» в Windows 11

Подключение Bluetooth-наушников к Wear OS
Гаджеты

Подключение Bluetooth-наушников к Wear OS

Запустить успешную страницу на Patreon
Монетизация

Запустить успешную страницу на Patreon