Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Calvin11 en 22 Octubre 2016, 19:54 pm



Título: String aleatorio y sin repeticiones
Publicado por: Calvin11 en 22 Octubre 2016, 19:54 pm
Hola, soy nuevo en este foro, espero que puedan ayudarme.
Mi pregunta es cómo hacer para generar cadenas de caracteres de manera aleatoria pero sin que se repita.
La cuestión es que estoy haciendo un juego de trivia pero cuando ingreso el jugador y le hago las pregunta, siempre y cuando responda bien, sigue respondiendo pero a veces vuelve a repetir la pregunta anterior.
Aquí les dejo un pedazo de código con el struct para que vean que es lo que les quiero decir:
Código
  1. struct pregunta{
  2.     char pregunta[100];
  3.     char opciones[5][40];
  4.     int correcta;
  5. };
  6. void jugar(){
  7.     pregunta A[21];
  8.     FILE *pa;
  9.     int n=0;
  10.     if((pa=fopen("ciencia.dat","rb"))==NULL){
  11.          cout<<"Error al abrir el archivo";
  12.          return;
  13.     }
  14.     char jugador[40];
  15.     int lvl=0,vida=1,rand_preg=0,rand_cat=0,respuesta=0;
  16.     fflush(stdin);
  17.     cout<<"\nNombre del participante: ";gets(jugador);
  18.     while(vida!=0){
  19.          srand (time(NULL));
  20.          rand_cat = rand() % 5;
  21.          srand (time(NULL));
  22.          if(rand_cat==1){
  23.               rand_preg=rand() % 20;
  24.               cout<<"\nPregunta:"<<A[rand_preg].pregunta;
  25.               cout<<"\nOpcion 1:"<<A[rand_preg].opciones[0];
  26.               cout<<"\nOpcion 2:"<<A[rand_preg].opciones[1];
  27.               cout<<"\nOpcion 3:"<<A[rand_preg].opciones[2];
  28.               cout<<"\nOpcion 4:"<<A[rand_preg].opciones[3];
  29.               cout<<"\nRESPUESTAAAAA:";cin>>respuesta;
  30.               if(respuesta==A[rand_preg].correcta){
  31.                    lvl++;
  32.               }
  33.               else{
  34.                    cout<<"\nPerdiste";
  35.                    vida=0;
  36.               }
  37.         }
  38.     }fclose(pa);
  39. }
Desde ya muchas gracias. ;D