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; };
Observació
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 |
Entrada
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.)
Sortida
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