En aquest exercici haureu de resoldre un algorisme de la pràctica, però en comptes d’usar la classe BinTree programareu l’algorisme en la classe Arbre. No es poden cridar les operacions d’Arbre, sinó que heu de programar-ho tot usant punters.
L’algorisme crea, a partir d’un arbre de sales i un conjunt de productes que es troben a l’arbre, el subarbre mínim que inclogui l’arrel, i tots els productes del conjunt.
La capçalera i especificació són les següents:
/** * @pre: El árbol (p.i.) está vacío. Los productos del set están todos * en el árbol 'a'. * * @post: El árbol (p.i.) contiene el subárbol menor de 'a' que incluye todos * los 'productos', incluyendo la raiz. */ void crear_subarbol(const Arbre& a, set<string>& productos);
(La declaració de crear_subarbol es troba al final del fitxer Arbre.hh.)
Els fitxers públics (icona del gatet) inclouen un .tar amb main.cc, Arbre.hh, Arbre-io.hh, i un Makefile. També s’inclouen els jocs de prova públics per comoditat. Fent "make" a la carpeta on es descomprimeixi el .tar es pot compilar, i amb "make test" es pot provar amb els jocs de prova (els fitxers *.inp).
El main.cc ja s’encarrega de llegir l’entrada, crear el subarbre i produir la sortida. Per lliurar, només és necessari pujar al Jutge el vostre fitxer Arbre.hh modificat.
Observacions
Tingueu present que el nom de la funció està en castellà: crear_subarbol.
Per tal de programar l’operació anterior, podríeu necessitar alguna operació privada i possiblement static.
Entrada
L’entrada és una representació textual de l’arbre de sales de la botiga, i una seqüència amb el conjunt de productes que ha seleccionat l’usuari, tal com a la pràctica. (Això ja està implementat a main.cc).
Sortida
La sortida és la representació textual del subarbre menor trobat. (Això també està implementat a main.cc).
Input
futbol
|-- tenis
| |-- alimentacion
| '-- golf
'-- fitnes
|-- piscina
'-- hipica
futbol alimentacion #
Output
futbol |-- tenis | |-- alimentacion | '-- # '-- #
Input
zapatos
|-- piscina
| |-- futbol
| | |-- tenis
| | '-- basquet
| '-- alimentacion
'-- hipica
|-- golf
'-- fitnes
basquet alimentacion golf #
Output
zapatos
|-- piscina
| |-- futbol
| | |-- #
| | '-- basquet
| '-- alimentacion
'-- hipica
|-- golf
'-- #