Afegir mètodes += i -= als iteradors de la classe llista

Modifiqueu la classe List per tal d’afegir els operadors += i -= a la subclasse iterador. Aquests mètodes reben un enter, i desplacen l’iterador cap endavant i cap enrere, respectivament, tantes posicions com indica aquest enter. Noteu que, si l’enter és negatiu, += mourà l’iterador cap enrere, i -= mourà l’iterador cap endavant. S’assumeix que els paràmetres no fan que l’iterador se surti del rang de la llista.

D’entre els fitxers que s’adjunten en aquest exercici, trobareu list.old.hpp, a on hi ha una implementació de la classe genèrica List. En primer lloc, haureu de fer:

cp list.old.hpp list.hpp

A continuació, haureu de buscar dins list.hpp les següents línies:

// Pre: x és un enter tal que, si desplacem l'iterador implícit x unitats cap endavant
//      (que implicarà moure'l -x unitats cap enrere si x és negatiu), no se surt de rang.
// Post: l'iterador implícit s'ha mogut x unitats cap endavant (cosa que haurà implicat
//       moure'l -x unitats cap enrere en el cas que x sigui negatiu, o no moure'l si x és 0).
// Descomenteu les següents dues linies i implementeu el mètode:
// void operator+=(int x) {
// }

// Pre: x és un enter tal que, si desplacem l'iterador implícit x unitats cap enrere
//      (que implicarà moure'l -x unitats cap endavant si x és negatiu), no se surt de rang.
// Post: l'iterador implícit s'ha mogut x unitats cap enrere (cosa que haurà implicat
//       moure'l -x unitats cap endavant en el cas que x sigui negatiu, o no moure'l si x és 0).
// Descomenteu les següents dues linies i implementeu el mètode:
// void operator-=(int x) {
// }

Descomenteu les quatre linies que s’indiquen i implementeu els mètodes. No toqueu la resta de la implementació de la classe, excepte si, per algun motiu, considereu que necessiteu afegir algun mètode auxiliar a la part privada.

D’entre els fitxers que s’adjunten a l’exercici també hi ha program.cpp (programa principal) i Makefile per a compilar. Per a pujar la vostra solució, heu de crear el fitxer solution.tar així:

tar cf solution.tar list.hpp

Entrada

La entrada del programa és una seqüència d’instruccions del següent tipus que s’aniran aplicant sobre una llista que se suposa inicialment buida i un iterador que se suposa situat inicialment al principi (i final) d’aquesta llista:

push_front s (s és un string)
push_back s (s és un string)
pop_front 
pop_back
it+= x (x és un enter)
it-= x (x és un enter)
*it

Se suposa que la seqüència d’entrada serà correcta (sense pop_front ni pop_back sobre llista buida, ni it tenint it situat al end de la llista). Tampoc hi haurà pop_front just quan l’iterador estigui apuntant al primer element de la llista, ni hi haurà pop_back just quan l’iterador estigui apuntant a l’últim element de la llista (tingueu en compte que l’últim element de la llista no és el end de la llista). A més a més, els paràmetres x són tals que l’iterador no se surt de rang.

El programa principal que us oferim ja s’encarrega de llegir aquestes entrades i fer les crides als corresponents mètodes de la classe list. Només cal que implementeu els mètodes abans esmentats.

Sortida

Per a cada instrucció it, s’escriurà el contingut apuntat per l’iterador. El programa que us oferim ja fa això. Només cal que implementeu el mètode abans esmentat.

Informació del problema

Autoria: PRO1

Generació: 2026-01-25T21:19:32.015Z

© Jutge.org, 2006–2026.
https://jutge.org