Fusió de llistes ordenades S19387


Statement
 

pdf   zip   tar

thehtml

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.ccel programa principal, amb la entrada/sortida feta
fruit.hhla classe Fruit, amb els mètodes esmentats
Makefileper compilar amb make còmodament
.vscodecarpeta 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.)

Public test cases
  • 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
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++