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

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

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
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство