Escribe la siguiente función, que fusiona dos listas de frutas en orden descendente. Las listas pueden contener frutas con nombres repetidos, posiblemente con precios diferentes.
/**
* @brief Fusiona dos listas ordenadas preservando el orden.
*
* @param a Lista en orden descendente (puede contener nombres repetidos).
* @param b Lista en orden descendente (puede contener nombres repetidos).
*
* @return Lista en orden descendente con los elementos de a y b.
*/
list<Fruit> fusio_ordenada(const list<Fruit>& a, const list<Fruit>& b);
Una fruta va antes que otra cuando su precio es mayor, y si el precio
es el mismo, cuando el nombre es lexicográficamente anterior. La
comparación entre dos frutas la implementa ya el método
is_greater_than que aparece a continuación. La declaración
completa de la clase Fruit es la siguiente:
class Fruit {
public:
Fruit(string name, int price); // Construye una fruta
string name() const; // devuelve el nombre
int price() const; // devuelve el precio
// Determina si una fruta tiene un precio mayor o si con el mismo
// precio, el nombre es anterior a `other`
bool is_greater_than(const Fruit& other) const;
};
Debes implementar la función fusio_ordenada en el
fichero fusio.cc, compilar (está preparado para poder
compilar y depurar con VSCode), y finalmente enviar únicamente
el fichero fusio.cc.
Los ficheros públicos (icono del gatito) contienen:
main.cc |
el programa principal, con la entrada/salida hecha |
fruit.hh |
la clase Fruit, con los
métodos mencionados |
Makefile |
para compilar con make
cómodamente |
.vscode |
carpeta para compilar y depurar con VSCode |
La función recibe dos listas de frutas no modificables, ordenadas descendentemente. Las listas pueden contener frutas con nombres repetidos, posiblemente con precios diferentes. (De la lectura de las listas, que están separadas por una línea vacía, ya se encarga el programa principal.)
La función devuelve la lista resultante de fusionar las dos listas preservando el orden original. (De la escritura de la lista resultante también se encarga 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