Per resoldre aquest problema heu de completar el codi que trobareu al final de l’enunciat. Hi heu de reemplaçar cada ??? per una o més línies de codi. No canvieu res més. Descarregueu-vos de la web del problema el fitxer code.cc amb el codi a completar (cliqueu el botó “.CPP” corresponent), editeu-lo i envieu-lo al jutge.
Una agència de viatges manté un catàleg de creuers per als seus clients. De cada creuer, només guarda un codi que indica per on anirà el vaixell, quina durada té el viatge, i quin n’és el preu. Com que l’agència és molt modesta, no manté informació de més d’un creuer de cada durada. Els codis i els preus sí que poden estar repetits.
El programa de l’agència permet fer cinc operacions diferents:
n: Escriu el nombre de creuers emmagatzemats
precedit de “num:”.
u
:
Actualitza la informació dels creuers. S’apunta que hi ha disponible un
creuer amb codi
,
de durada
,
i amb preu
.
Si ja hi havia un creuer d’aquesta durada, n’actualitza la
informació.
q
:
Consulta el preu del creuer que té durada
.
Si no n’hi ha cap, escriu -1.
p: Mostra un llistat de tots els creuers
disponibles, ordenat per durada. Escriu una línia per creuer, amb codi,
durada i preu en aquest ordre. Abans escriu una línia amb 10 guions, i
després una línia amb 10 asteriscs.
s: Consulta la informació completa del creuer amb la
segona durada més curta. Si no hi ha tal creuer, escriu
“no”.
L’entrada consisteix en diverses operacions segons s’ha indicat anteriorment. Els codis són paraules amb lletres minúscules. Les durades i els preus són enters entre 1 i .
Per a cada operació (excepte les d’actualització), escriviu la informació demanada.
#include <iostream>
#include <map>
using namespace std;
struct Info {
string code;
int price;
};
int main() {
map<int, Info> M;
char c;
while (cin >> c) {
if (c == 'n') {
???
}
else if (c == 'u') {
string code;
int length, price;
cin >> code >> length >> price;
???
}
else if (c == 'q') {
int length;
cin >> length;
???
}
else if (c == 'p') {
cout << string(10, '-') << endl;
???
cout << string(10, '*') << endl;
}
else { // c == 's'
???
}
}
}
Input
n u greece 20 2500 p s u majorca 14 3000 p n s q 10 q 14 u minorca 14 4000 q 14 u valencia 10 2500 s
Output
num: 0 ---------- greece 20 2500 ********** no ---------- majorca 14 3000 greece 20 2500 ********** num: 2 greece 20 2500 -1 3000 4000 minorca 14 4000