Això és el test de la classe Dispositiu, que correspon a
la pràctica Simulació d’un SO. Aquesta classe
implementa una dispositiu d’entrada i sortida que actuarà com una
cua, és a dir, el primer a entrar serà el primer a
sortir. A més, tindrà un identificador i una capacitat màxima, que es
definiran quan instanciem un objecte Dispositiu. Sobre
aquest objecte podrem aplicar 3 operacions:
D << x, on x és in
int i D és un Dispositiu. Aquesta
operació afegeix x al dispositiu si el dispositiu no està
ple. Si està ple, no fa res (mireu el fitxer
program.cpp).
D >> x, on x és in
int i D és un Dispositiu. Aquesta
operació treu un element del dispositiu i el posa a la variable
x si el dispositiu no està buit. Si està buit, no fa res
(de fet, no hauríem de permetre aquesta operació, mireu el fitxer
program.cpp).
D.buit(). Avalua a true si i només si
el dispositiu D està buit.
Us passem el programa principal, que cridarà a una instància de la classe, i que cridarà els seus mètodes. Cal que:
Completeu l’especificació de la classe al fitxer
dispositiu.hpp.
Implementeu la classe Dispositiu al fitxer
dispositiu.cpp.
Fixeu-vos que l’enunciat d’aquest exercici ja ofereix uns fitxers que
haureu d’utilitzar per a compilar:
Makefile, program.cpp, apart de les versions
*.old dels altres fitxers que heu d’acabar
d’implementar.
Quan pugeu la vostra solució al jutge, només cal que pugeu un tar construït així:
tar cf solution.tar dispositiu.cpp dispositiu.hpp
L’entrada és un nombre indeterminat de línies que poden ser:
PUSH val. Afegeix el valor val al
dispositiu, si no està ple. Si ho està, treu
DISPOSITIU PLE.
POP. Treu un valor del dispositiu. Si està buit,
treu DISPOSITIU BUIT.
WRITE. Escriu tots els valors del
dispositiu.
EMPTY. Escriu cert (fals)
si el dispositiu està buit (no està buit).
Input
EMPTY PUSH 10 PUSH 20 PUSH 30 WRITE EMPTY POP POP POP EMPTY PUSH 50 PUSH 60 WRITE EMPTY POP POP WRITE EMPTY PUSH -1000 WRITE
Output
cert DISPOSITIU_ID: 0 : 10 20 30 fals 10 20 30 cert DISPOSITIU_ID: 0 : 50 60 fals 50 60 DISPOSITIU_ID: 0 : cert DISPOSITIU_ID: 0 : -1000
Input
EMPTY PUSH 10 PUSH 20 PUSH 30 PUSH 40 PUSH 10 PUSH 20 PUSH 30 PUSH 40 WRITE EMPTY POP POP POP EMPTY POP PUSH 50 PUSH 60 WRITE EMPTY POP POP POP POP POP WRITE EMPTY PUSH -1000 WRITE
Output
cert DISPOSITIU PLE DISPOSITIU PLE DISPOSITIU PLE DISPOSITIU_ID: 0 : 10 20 30 40 10 fals 10 20 30 fals 40 DISPOSITIU_ID: 0 : 10 50 60 fals 10 50 60 DISPOSITIU BUIT DISPOSITIU BUIT DISPOSITIU_ID: 0 : cert DISPOSITIU_ID: 0 : -1000
Input
EMPTY PUSH 1 PUSH 2 PUSH 3 PUSH 4 PUSH 5 PUSH 6 PUSH 7 PUSH 8 WRITE EMPTY POP POP POP POP POP POP POP POP POP EMPTY WRITE PUSH -1000 WRITE
Output
cert DISPOSITIU PLE DISPOSITIU PLE DISPOSITIU PLE DISPOSITIU_ID: 0 : 1 2 3 4 5 fals 1 2 3 4 5 DISPOSITIU BUIT DISPOSITIU BUIT DISPOSITIU BUIT DISPOSITIU BUIT cert DISPOSITIU_ID: 0 : DISPOSITIU_ID: 0 : -1000