#include #include #include #include #include #include #include using namespace std; // Clase que genera un número aleatorio para el random_shuffle // de manera que la permutación siempre sea distinta class MyRandom { public: ptrdiff_t operator() (ptrdiff_t max) { double tmp; tmp = static_cast(rand())/RAND_MAX; return static_cast(tmp * max); } }; class myString: public string { public: // getToekn extrae y retorna la porción del string desde posición cero // hasta el caracter antes del delimitador. // Hace cambiar el string que recibe el método y remueve de él // el delimitador. string getToken (string delims){ string token; token = substr(0, find(delims)); erase(0, token.size()); if (find(delims)==0) erase(0,delims.size()); return token; } }; int main(int argc, char *argv[]) { //Declaración del vector de string donde se guardaran los ítems del archivo vector < string > nombres; myString linea; int j; // Se guardan los ítems del archivo en el vector de string nombres const string delims("\n"); while(getline(cin, linea)) { string token; token=linea.getToken(delims); while (token.size()!=0){ nombres.push_back(token); token=linea.getToken(delims); } } // Semilla para que la permutación sea siempre diferente srand ( time(NULL) ); MyRandom rd; // Se aplica el algoritmo de permutación del orden de los elementos del vector random_shuffle (nombres.begin(),nombres.end(),rd); for (j=0; j