Сумма элементов массива в C и C++
В этом уроке вы сложите все значения массива с помощью цикла и переменной-накопителя.
Введение
Переменная-накопитель (accumulator) собирает результат по ходу цикла. Чтобы сложить массив, она начинается с 0 и по очереди получает каждый элемент.
Главное
- Включите предупреждения компилятора (compiler warnings) и исправьте их все.
- Хорошо понимайте тип и время жизни (lifetime) каждого значения.
- Всегда проверяйте входные данные и границы индексов массивов.
Как это работает
Нажимайте Шаг, чтобы выполнять цикл по одному действию. Смотрите, как проверяется условие, выполняется тело и строка за строкой растёт таблица трассировки.
Примеры кода на C и C++
#include <stdio.h>
int main(void) {
int values[] = {2, 4, 6, 8, 10}; int total = 0;
// sizeof determines the local array length.
for (size_t i = 0; i < sizeof values / sizeof values[0]; ++i) total += values[i];
printf("sum=%d\n", total);
}
sum=30
#include <iostream>
#include <numeric>
#include <vector>
int main() {
std::vector values{2, 4, 6, 8, 10};
// accumulate folds the range into one total.
std::cout << "sum=" << std::accumulate(values.begin(), values.end(), 0) << '\n';
}
sum=30
Сравнение C и C++
Переменная total инициализируется нулём, затем цикл прибавляет к total каждый элемент ровно один раз. Выражение sizeof values / sizeof values[0] вычисляет число элементов массива, поэтому цикл останется верным, даже если вы добавите или удалите элементы. Результат sum=30.
C использует небольшие процедурные функции и открыто показывает, как данные представлены в памяти.
C++ по-прежнему позволяет работать на низком уровне, но добавляет библиотечные типы и более безопасные абстракции.
Упражнения для практики
Запустите обе версии, а затем измените код, чтобы увидеть разницу в безопасности, которую даёт каждый язык.
- Проверьте неверный ввод и граничные значения.
- Скомпилируйте с флагами -Wall -Wextra -Wpedantic, чтобы включить больше предупреждений.
- Вынесите общие объявления в заголовочный файл, а реализацию в отдельный файл.
Попрактикуйтесь на задаче
Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.
Все задачи