Mètode de la classe cua que divideix una cua en dues cues X26187


Statement
 

pdf   zip   tar

thehtml

Implementa un nou mètode de la classe Queue que divideix els elements de la cua entre el paràmetre implícit i la cua que passen com a paràmetre. Els elements en posició senar estaran en el paràmetre implícit i els elements en posició parell en la cua que ens passen com a paràmetre.

D’entre els fitxers que s’adjunten en aquest exercici, trobaràs queue.old.hpp, a on hi ha una implementació de la classe genèrica Queue. En primer lloc, hauràs de fer:

cp queue.old.hpp queue.hpp

A continuació si obres el fitxer queue.hpp al final del mateix trobaràs el mètode que has d’implementar:

// Pre: Sigui [e1,e2...,en] el contingut inicial de la cua des del 
// principi fins al final i q és buida.
// Post: El contingut final del pi és [e1, e3, e5, ...] (manté els 
// elements en posicions senars) i el contingut de q és [e2, e4, ...] 
// (conté els elements en posicions parells).
void split(Queue &q);

IMPORTANT: No toquis la resta de la implementació de la classe, excepte si per algun motiu, consideres que necessites afegir algun mètode auxiliar o atribut a la part privada.

D’entre els fitxers que s’adjunten a l’exercici també hi ha program.cpp (programa principal) i Makefile per a compilar i generar l’executable. El programa principal que t’oferim ja s’encarrega de llegir les cues i fer les crides al mètode indicat. Només cal que implementis el mètode split.

Per a pujar la teva solució, has de crear el fitxer solution.tar així:

tar cf solution.tar queue.hpp

Observació 1

Hauries d’aconseguir implementar el mètode demanat a base d’intercanviar els punters de l’objecte. De fet, una solució a base d’usar push i pop potser et permetrà passar els jocs de proves, però atès que la solució ha de ser eficient en temps i espai, aquest tipus de solució serà fortament penalitzat.

Observació 2

Recorda que si crees funcions auxiliars, has d’afegir-hi les corresponents Precondició (Pre) i Postcondició (Post). En els bucles inclou l’invariant del bucle (Inv) i la funció de fita (FF). En les funcions recursives inclou la hipòtesi d’inducció (HI) i la funció de fita (FF).

Entrada

L’entrada del programa és una seqüència de cues. Per llegir les cues, s’utilitza l’operador >> que es troba definit en el fitxer queue.hpp.

Sortida

Per cada cua s’escriurà el resultat del mètode split, és a dir, les dues cues (paràmetre implícit i paràmetre). Per escriure les cues, s’ha utilitzat l’operador << que es troba definit en el fitxer queue.hpp.

Public test cases
  • Input

    10  1 2 3 4 5 6 7 8 9 10
    10  2 4 6 8 10 12 14 16 18 20
    9   -1 -2 -3 -4 -5 -6 -7 -8 -9
    3   100 1000 10000
    

    Output

    5 1 3 5 7 9
    5 2 4 6 8 10
    ---
    5 2 6 10 14 18
    5 4 8 12 16 20
    ---
    5 -1 -3 -5 -7 -9
    4 -2 -4 -6 -8
    ---
    2 100 10000
    1 1000
    ---
    
  • Input

    2  -9 -7
    1  3
    17  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    16  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    

    Output

    1 -9
    1 -7
    ---
    1 3
    0
    ---
    9 0 0 0 0 0 0 0 0 0
    8 0 0 0 0 0 0 0 0
    ---
    8 0 0 0 0 0 0 0 0
    8 0 0 0 0 0 0 0 0
    ---
    
  • Information
    Author
    Bernardino Casas
    Language
    Catalan
    Official solutions
    Make
    User solutions
    Make