Feu la funció
void llistaAcumulada (list<int>&);
tal que, donada una llista d’enters més grans o iguals que zero per referència (serà, doncs, un paràmetre d’entrada i sortida), modifiqui la llista de manera que cada posició de la llista modificada contingui la suma dels elements que hi havia a la llista fins a aquella posició abans de ser modificada.
Per exemple, si tenim la llista
L = [1, 3, 1, 2, 3] |
ha de modificar la llista de manera que quedi
L = [10, 9, 6, 5, 3] |
Si ens hi fixem, a la primera posició hi ha la suma 1 + 3 + 1 + 2 + 3, a la segona posició hi ha la suma 3 + 1 + 2 + 3, a la tercera posició hi ha la suma 1 + 2 + 3, a la quarta posició hi ha la suma 2 + 3 i a la cinquena posició hi ha la suma 3.
Molt important: la solució ha de ser recursiva, a més de raonablement eficient (potser fent alguna immersió).
Entrada
Una llista d’enters més grans o iguals que zero.
Sortida
Modifica la llista paràmetre de manera que en cada posició de la llista modificada contingui la suma dels elements que hi havia a la llista fins a aquella posició abans de ser modificada.
Observació
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar llistaAcumulada.cpp
Observeu que per compilar us donem el Makefile
,
les utilitats d’entrada/sortida de piles a utilitats.hpp
,
la capçalera del mòdul funcional llistaAcumulada.hpp
i el programa principal program.cpp
.
Input
5 1 3 1 2 3
Output
|1||3||1||2||3| |10||9||6||5||3|
Input
5 2 5 0 7 1
Output
|2||5||0||7||1| |15||13||8||8||1|