Un algorisme de tipus "Round Robin" (RR) és una forma justa de tractar tots els elements d’una sèrie de cues. Donades cues , amb , 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 és pren , que tanca la seqüència de cues en un cercle. En altres paraules, un cop s’ha processat un element de es passa a , però després d’atendre , es torna a començar per . A més, si una cua està buida, s’ignora i es passa a la següent.
Al principi, l’algorisme comença atenent la primera cua, , 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);
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.)
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é.)
Els fitxers públics (icona del gatet) contenen:
main.cc |
el programa principal |
Makefile |
per compilar amb make
còmodament |
.vscode |
per 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ó.
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