2012-02-09 5 views
0

Я использую Visual C++ 2010 Express Edition. Я объявил целочисленный массив, способный удерживать 50 элементов. В зависимости от количества записей, которые пользователь вводит, каждая из этих записей будет храниться как отдельный элемент в массиве. Я хочу добавить все эти неизвестные элементы и напечатать ответ на консоль. Можно ли это сделать и как?Массивы в C++ - Добавление элементов массива

+4

Как в стороне, почему вы используете массив фиксированного размера, а не вектор ? – Pete

+0

Это домашнее задание? Или просто учиться? Если вам не нужно хранить данные для чего-то другого (или это относится к проблеме с домашними заданиями), вам может не понадобиться массив. – crashmstr

+0

Это как обучение, так и домашнее задание/проект. –

ответ

6

Вы ищете std::accumulate() из заголовка <numeric>:

std::cout << std::accumulate(std::begin(arr), std::end(arr), 0); 

Если пользователь дает меньше 50 элементов, то необходимо учитывать, что:

std::cout << std::accumulate(std::begin(arr), arr + element_count, 0); 
+0

Хороший ответ, если все 50 элементов действительны. Как насчет 'std :: accumulate (arr, arr + numberOfEntriesTheUserGives, 0);' –

+0

@ Хорошая точка. Обновлено. – wilhelmtell

+0

Большое спасибо wilhelmtell. –

0

Может быть, слишком просто, но что о настройке всех элементов на 0 (ноль) в начале, а затем добавить все элементы в цикл и, наконец, распечатать результат сложения?

+0

Благодарим Kamil_H за ваш ответ. Был бы признателен, если бы вы любезно уточнили? –

+0

Хммм. Возможно, что-то вроде этого: 'int myItems [50];' 'memset (myItems, 0, 50 * sizeof (int));' // здесь пользователь вставляет элементы в массив int result = 0; для (int i = 0; i <50; i ++) result + = myItems [i]; cout << результат; ' –

+0

Мне нужно научиться форматировать код в быстрый ответ :) –

Смежные вопросы