Fes la funció següent, que fusiona dues llistes de fruites en ordre descendent:
/**
* @brief Fusiona dues llistes ordenades preservant l'ordre.
*
* @param a Llista en ordre descendent.
* @param b Llista en ordre descendent.
*
* @return Llista en ordre descendent amb els elements d'a i b.
*/
list<Fruit> fusio_ordenada(const list<Fruit>& a, const list<Fruit>& b);
Una fruita va abans que una altra quan el seu preu és major, i si el
preu és el mateix, quan el nom és lexicogràficament anterior. La
comparació entre dues fruites la implementa ja el mètode
is_greater_than que surt a continuació. La declaració
sencera de la classe Fruit és la següent:
class Fruit {
public:
Fruit(string name, int price); // Construeix una fruita
string name() const; // retorna el nom
int price() const; // retorna el preu
// Determina si una fruita té un preu major o si amb el mateix
// preu, el nom és anterior a `other`
bool is_greater_than(const Fruit& other) const;
};
Els fitxers públics (icona del gatet) contenen:
main.cc |
el programa principal, amb la entrada/sortida feta |
fruit.hh |
la classe Fruit, amb els
mètodes esmentats |
Makefile |
per compilar amb make
còmodament |
.vscode |
carpeta per compilar i debuggar amb VSCode |
La funció rep dues llistes de fruites no modificables, ordenades descendentment. (De la lectura de les llistes, que estan separades per una línia buida, ja se n’encarrega el programa principal.)
La funció retorna la llista resultant de fusionar les dues llistes preservant l’ordre original. (De l’escriptura de la llista resultant també se n’encarrega el programa principal.)
Input
nectarine 9 mango 7 fig 6 lemon 5 watermelon 5 kiwi 3 banana 2 cherry 1 orange 1 strawberry 8 raspberry 7 apple 5 quince 5 date 3 pear 3 grape 2 honeydew 1 tangerine 1
Output
nectarine 9 strawberry 8 mango 7 raspberry 7 fig 6 apple 5 lemon 5 quince 5 watermelon 5 date 3 kiwi 3 pear 3 banana 2 grape 2 cherry 1 honeydew 1 orange 1 tangerine 1