2013-10-30 2 views
-2

У меня есть небольшой вопрос. Как сделать, чтобы суммировать все числа в списке пакетов? Например: List 1 является:Добавление значений в список

0.03326 
0.02712 
0.02178 
0.01918 
0.01751 
0.01671 
0.01602 
0.0156 
0.01549 
0.01543 
0.01568 
0.01625 
0.01658 
0.01732 
0.0178 
0.01827 
0.01855 
0.01895 
0.01949 
0.02017 
0.0211 
0.02213 
0.0236 
0.02753 
0.04504 
0.09489 
0.10131 
0.11255 

Я хочу суммировать все цифры.

+0

[ 'станд :: аккумулируют '] (http://en.cppreference.com/w/cpp/algorithm/accumulate) – BoBTFish

+1

Как они хранятся? – deepmax

+0

Укажите, введите тип данных данных, возможно, попробуйте написать код, который должен выполнить вашу задачу. Начните решать свою проблему самостоятельно, мы поможем. –

ответ

4

std::accumulate. Он вернет арифметическую сумму всех элементов в списке.

double sum = std::accumulate(std::begin(list), std::end(list), 0.0); 
+0

Большое спасибо за предложения. Я нашел более простой метод при попытке и ошибке. double result = sum (myList()); Info << "sum is:" << результат << endl; –

+0

@choformarius С помощью этого метода вам не нужно определять свою собственную функцию 'sum'. – Kunal

+0

Я бы не стал рассматривать эту функцию проще, чем использовать функцию, предоставляемую стандартной библиотекой специально для этой цели. Также сделайте себе одолжение и прекратите использовать ['using namespace std;'] (http://stackoverflow.com/q/1452721/1171191) и ['std :: endl'] (http://kuhllib.com/2012/01/14/стоп-чрезмерное использование-оф-stdendl /). – BoBTFish

0

Предполагая, что вы используете std::list,

double total = 0; 
for (std::list<double>::const_iterator iterator = list1.begin(), end = list1.end(); iterator != end; ++iterator) { 
    total += *iterator; 
} 
return total; 
0

Сделайте то же самое, как следующее:

double sum=0; 
for (std::list<double>::iterator it=mylist.begin(); it != mylist.end(); ++it){ 
    sum+=*it; 
} 

Надеется, что это может помочь вам :)

+1

Мне интересно, почему кто-то дает downvote на мой ответ, есть ли что-то не так в моем ответе, пожалуйста, прокомментируйте, тогда я хочу учиться, а не зарабатывать очки :) –

+0

Я думаю, что кто-то дал вам нисходящее направление, вероятно, потому, что числа в списке OP имеют тип 'double', тогда как вы объявляете' int sum' – Kunal

+0

О, глупый me :) –

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