Implementeu un nou mètode de la classe Queue que rebi un element com a paràmetre i modifiqui tots els elements de la cua a base de multiplicar-los per aquest paràmetre. Òbviament, aquest mètode només serà útil quan instanciem la classe Queue amb un tipus per al qual estigui definida la operació producte.
D’entre els fitxers que s’adjunten en aquest exercici, trobareu
queue.old.hpp, a on hi ha una implementació de
la classe genèrica Queue. En primer lloc,
haureu de fer:
cp queue.old.hpp queue.hpp
A continuació, haureu de buscar dins
queue.hpp la part:
// Pre:
// Post: Tots els elements de la cua implícita han estat multiplicats per 'value'.
// Descomenteu les següents dues linies i implementeu la funció:
// void operator*=(T value) {
// }
Haureu de descomentar les dues línies que s’indiquen i implementar aquest mètode. 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 queue.hpp
La entrada del programa és una seqüència d’instruccions del següent tipus que s’aniran aplicant sobre una cua de doubles que se suposa inicialment buida:
push x (x és un double)
pop
front
size
*= x (x és un double)
Se suposa que la seqüència d’entrada serà correcta (sense pop ni front sobre cua buida).
El programa principal que us oferim ja s’encarrega de llegir aquestes entrades i fer les crides als corresponents mètodes de la classe cua. Només cal que implementeu el mètode abans esmentat.
Per a cada instrucció front, s’escriurà el
front actual de la cua. Per a cada instrucció
size, s’escriurà la mida de la cua. El
programa que us oferim ja fa això. Només cal que implementeu el mètode
abans esmentat.
Input
push 2 push 1.5 push 1.2 size front *= 2 front pop front push -5 push 0 *= 1.5 front pop front size pop front pop front pop size
Output
3 2 4 3 4.5 3.6 3 -7.5 0 0
Input
push 8.6 front size *= 3.6 *= 0.6 push 19.872 front size *= 0.2 push 1.1664 front size push 2.5488 front size push 1.1232 front size pop front size push 3.1104 front size pop front size push 2.9376 front size push 1.2528 front size push 1.296 front size push 0.9936 front size push 1.512 front size *= 8.3 push 20.7965 front size *= 0.8 *= 0.7 push 8.43333 front size *= 0.4 *= 4 pop front size *= 0.9 pop front size push 20.24 front size *= 0.7 push 16.192 front size pop front size *= 0.3 push 5.82912 front size *= 2.6 *= 0.5 push 2.8417 front size
Output
8.6 1 18.576 2 3.7152 3 3.7152 4 3.7152 5 3.9744 4 3.9744 5 1.1664 4 1.1664 5 1.1664 6 1.1664 7 1.1664 8 1.1664 9 9.68112 10 5.42143 11 18.9549 10 7.51771 9 7.51771 10 5.2624 11 14.5728 10 4.37184 11 5.68339 12