Utilizando el método accumulate pero no se puede mostrar siempre el primer elemento como 0.
Estoy intentando escribir un programa que devuelva una lista cuyo n-ésimo elemento es la suma de los primeros valores n de la lista transferida.
list<int> summe(list<int> liste) {
list<int> neueListe;
list<int>::iterator itr;
itr = liste.begin();
int sum = 0;
int n = 0;
cout << "Lista con sumas: " << endl;
cout << "{ " << endl;
for (itr = liste.begin(); itr != liste.end(); itr++) {
sum = accumulate(liste.begin(), itr, 0);
neueListe.push_back(sum);
cout << sum << endl;
n++;
}
cout << " }";
return neueListe;
}
int main() {
//Tarea 2.2 Parte 2
list<int> l = { 1,2,3,4,5 };
Algo a;
a.summe(l);
}
La salida es: 0,1,3,6,10
Creo que el problema es que el primer bucle es accumulate(liste.begin(), liste.begin(), 0); que siempre debería ser 0. Sin embargo, no tengo idea de cómo obtener el primer elemento (aunque es solo un elemento, por lo que no es necesario acumular).
Quiero la siguiente salida: 1,3,6,10,15.
davy.ai
Puede modificar el código de la siguiente manera:
Esto dará como resultado: 1,3,6,10,15.