rotacion.cpp
// $Id$
/*
COMIENZO DE DESCRIPCION
Escribir una funci\'on {\tt void rotacion (queue <int> &C)},
la cual saca una cierta cantidad de enteros del frente de la
cola {\tt C} y los vuelve a insertar en fin de la misma, de
tal manera que quede en el frente de cola un n\'umero par.
Por ejemplo, si C = [1, 3, 5, 2, 4] entonces, despu\'es de
{\tt rotacion (C) }, debe quedar C = [2, 4, 1, 3, 5].
Ejercicio tomado en el 1er parcial, 16/04/02.
keywords: cola
FIN DE DESCRIPCION
*/
// -----------------------------------------------------------------
#include "./util.h"
using namespace std;
// -----------------------------------------------------------------
void rotacion (queue <int> & C) {
int x ;
while ( !C.empty() ) {
x = C.front () ;
if ( !(x % 2) ) return ;
C.pop ();
C.push (x);
} // end while
}
// -----------------------------------------------------------------
int main () {
queue<int> C ;
int puso_par, j, x ;
double z = 0.1 ;
int n = 3 ;
for (int i = 0 ; i < n ; i++) {
puso_par = 0 ;
j = 0 ;
while (true) {
x = 2 * irand (20) ;
if ( drand () > z ) x = x + 1 ;
C.push (x);
if ( j++ > 20 && puso_par ) break;
if ( !(x % 2) ) puso_par = 1;
} // end while
cout << endl ;
cout << "antes de rotar ";
printq (C);
rotacion (C);
cout << endl ;
cout << "despues de rotar ";
printq (C) ;
} // end i
cout << endl ;
return 0 ;
}
// -----------------------------------------------------------------
Generated by GNU Enscript 1.6.6.