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

Массив — это коллекция элементов, расположенных в смежных ячейках памяти. Это одна из самых часто используемых структур данных в программировании. В этой статье вы научитесь вычислять сумму всех элементов массива на 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
Подход
Классический пошаговый алгоритм:
- Завести переменную sum и инициализировать её нулём.
- Пройти по всем элементам массива циклом.
- Прибавлять каждый элемент к sum.
- Вернуть или вывести значение 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: 121C++ с использованием 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,2,3,4,5] результат 15.
- Для массива с отрицательными числами корректная сумма (например, пример 2 → 202).
- Пустой массив возвращает 0 (если это ожидаемое поведение).
- Поведение при null/undefined задокументировано и обработано.
Тестовые случаи
- Обычный набор положительных чисел.
- Набор с отрицательными числами.
- Пустой массив.
- Массив с очень большими значениями (проверка переполнения).
- Массив с нулевыми и/или недопустимыми значениями.
Быстрый SOP для внедрения в проект
- Выберите тип данных, учитывая ожидаемый диапазон значений.
- Реализуйте суммирование через однопроходный цикл (или встроенную функцию).
- Добавьте обработку специальных значений (null/undefined/NaN).
- Напишите юнит-тесты по критериям приёмки.
- При работе с большими объёмами данных протестируйте на переполнение и производительность.
Важно: документируйте ожидаемое поведение для пустых и нечисловых значений.
Итог
Суммирование элементов массива — базовая задача с линейной сложностью. Для большинства практических задач достаточно простого прохода по массиву или встроенных функций (sum, accumulate, reduce). Основные риски — переполнение и нечисловые элементы; их нужно обрабатывать заранее.
Похожие материалы
Call of Duty: WWII — ошибки и исправления
Назначение со‑хоста в Zoom
Как использовать rsync для резервного копирования в Linux
Браузер по умолчанию в iOS 14 — как сменить
mpksldrv.sys — как исправить повторные перезагрузки