Round Robin W78388


Statement
 

pdf   zip   tar

thehtml

Un algorisme de tipus "Round Robin" (RR) és una forma justa de tractar tots els elements d’una sèrie de cues. Donades n cues qi, amb 1 ≤ in, cadascuna amb els seus elements per tractar, RR va passant per cada una d’elles, per ordre i circularment, traient i processant l’element al capdavant de cada cua.

La circularitat (d’on prové la paraula "Round") vol dir que la seqüència de cues es considera circular perquè com a successora de qn és pren q1, que tanca la seqüència de cues en un cercle. En altres paraules, un cop s’ha processat un element de qi es passa a qi+1, però després d’atendre qn, es torna a començar per q1. A més, si una cua qi està buida, s’ignora i es passa a la següent.

Al principi, l’algorisme comença atenent la primera cua, q1, i acaba quan totes les cues estan buides.

Amb aquesta informació, implementeu la funció següent:

/**
 * @brief Simula un algorisme "Round Robin" en un vector de cues
 *
 * La funció itera circularment (és a dir, considerant l'element n-1 
 * com l'inmediatament anterior al 0) el vector de cues, i va afegint 
 * els elements que treu del capdavant de cada cua en una cua resultat.
 *
 * @param  queues  Les cues d'entrada
 *
 * @returns La cua resultant d'aplicar l'algorisme "Round Robin"
 */
queue<string> round_robin(vector<queue<string>>& queues);

Entrada

L’entrada consisteix en un seguit de cassos separats per una línia amb "---", i cada cas conté una seqüència de línies de text amb la descripció d’una cua a cada línia. Cada cua és només una llista de paraules. (D’aquesta lectura se n’encarrega el programa principal.)

Sortida

La sortida és cada una de les cues resultants, una per línia, de cridar a round_robin amb cada vector de cues de l’entrada. (D’aquesta escriptura ja se n’encarrega el programa principal, també.)

Observació

Els fitxers públics (icona del gatet) contenen:

main.ccel programa principal
Makefileper compilar amb make còmodament
.vscodeper poder compilar i debuggar amb F5

Has d’implementar round_robin en un fitxer .cc nou i enviar només aquest fitxer amb la funció.

Public test cases
  • Input

    a b c
    x y z
    ---
    a b
    x y z
    1 2 3 4
    ---
    a b c d
    x 
    1 2
    p q r
    $ @
    ---

    Output

    a x b y c z
    a x 1 b y 2 z 3 4
    a x 1 p $ b 2 q @ c r d
    
  • Input

    sib gab
    iil tqe
    ---
    
    mty mat
    txr
    hhz pda ftv
    ---
    qqt
    fbw
    obp pde ehg ouj
    ---
    qqi dtk atq jle
    uyt giy qwj xtx
    pyq ynt
    ---
    fcz kcx
    
    xir ogx
    
    ---
    nqu
    qhj rho kgh
    djm vgd ruc
    ---
    

    Output

    sib iil gab tqe
    mty txr hhz mat pda ftv
    qqt fbw obp pde ehg ouj
    qqi uyt pyq dtk giy ynt atq qwj jle xtx
    fcz xir kcx ogx
    nqu qhj djm rho vgd kgh ruc
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++