Llista Acumulada. X32502


Statement
 

pdf   zip   tar

html

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.

Public test cases
  • 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|
    
  • Information
    Author
    PRO1-Vilanova
    Language
    Catalan
    Official solutions
    Make
    User solutions
    Make