Implementa l’acció genèrica:
template <typename T>
void apply_rotations(list<T>& data, const list<int>& rotations);
que aplica, en ordre, cada rotació de la llista
rotations sobre la llista data:
: rotació a la dreta de posicions (els últims elements passen al davant).
: rotació a l’esquerra de posicions (els primers elements passen al final).
: no fa res.
data inicial: [3, a, 7, b, 2, x]
rotations: [2, -1, 4, -6, 3]
Rotació +2 -> [2, x, 3, a, 7, b] (2 últims al davant)
Rotació -1 -> [x, 3, a, 7, b, 2] (1 primer al final)
Rotació +4 -> [a, 7, b, 2, x, 3] (4 últims al davant)
Rotació -6 -> [a, 7, b, 2, x, 3] (|-6|%6 = 0, no canvia)
Rotació +3 -> [2, x, 3, a, 7, b] (3 últims al davant)
Les funcions i accions que creïs han de treballar només amb
llistes (la classe list de la biblioteca STL) o arrays
dinàmics. Has de trobar una solució ITERATIVA i
eficient del problema.
Cal aplicar cada rotació de manera individual. No es permet acumular les rotacions en una sola operació.
Tota funció/acció que creïs ha de tenir la corresponent Precondició (Pre) i Postcondició (Post).
En els bucles inclou l’invariant del bucle i la funció de fita.
IMPORTANT: Només cal enviar el procediment demanat; el programa principal serà ignorat.
Autoria: Bernardino Casas
Generació: 2026-06-10T13:19:49.203Z
© Jutge.org, 2006–2026.
https://jutge.org