Suma dues piles X21508


Statement
 

pdf   zip   main.cc

thehtml

Implementa una funció RECURSIVA que, donades dues piles d’enters, retorna una altra pila amb la suma de les dues piles començant a sumar des del fons de la pila.

La capçalera de la funció és la següent:

// Pre: cert // Post: Retorna una pila amb el resultat de sumar els elements de p1 // i p2 començant des del fons de les piles. stack<int> suma_piles(const stack<int> &p1, const stack<int> &p2);

En cas que les dues piles tinguin el nombre d’elements diferent, el resultat de sumar un element d’una pila amb un altre d’inexistent és l’element tal qual.

Per exemple, donades les piles

p1 = [1, 0, 7, 10, 12, -1] (-1 seria el cim de la pila)
p2 = [10, 5] (5 seria el cim de la pila)

suma_piles(p1, p2) = [11, 5, 7, 10, 12, -1]

Observació Només cal enviar el procediment demanat; el programa principal serà ignorat.

Observació

La funció i subfuncions que creïs han de treballar només amb piles (la classe stack de la biblioteca STL). Heu de trobar una solució RECURSIVA i eficient del problema. En particular, no hi hauria d’haver cap bucle en cap de les funcions que implementis. Si crees funcions auxiliars, afegeix-hi les corresponents Pre i Post. En les crides recursives, inclou tant la Hipòtesi d’inducció com la funció de fita/decreixement de cada crida recursiva.

Public test cases
  • Input/Output

    suma_piles([2, 4, 4, 4, 6, 7, 10], [7, 8, 11, 6, 4, -9, 4]) → [9 12 15 10 10 -2 14]
    suma_piles([-2, 4, 6, 7, 10], [7, 8]) → [5 12 6 7 10]
    suma_piles([5, 2], [17, 28, 14, -2, 5, 19]) → [22 30 14 -2 5 19]
    suma_piles([21, 6, 15, -4, 8, 31], [1, 2, 3, 4, 5, 6, 7, 8]) → [22 8 18 0 13 37 7 8]
  • Information
    Author
    Bernardino Casas
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++