String aleatorio y sin repeticiones

Iniciado por Calvin11, 22 Octubre 2016, 19:54 PM

0 Miembros y 1 Visitante están viendo este tema.

Calvin11

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 (cpp) [Seleccionar]
struct pregunta{
    char pregunta[100];
    char opciones[5][40];
    int correcta;
};
void jugar(){
    pregunta A[21];
    FILE *pa;
    int n=0;
    if((pa=fopen("ciencia.dat","rb"))==NULL){
         cout<<"Error al abrir el archivo";
         return;
    }
    char jugador[40];
    int lvl=0,vida=1,rand_preg=0,rand_cat=0,respuesta=0;
    fflush(stdin);
    cout<<"\nNombre del participante: ";gets(jugador);
    while(vida!=0){
         srand (time(NULL));
         rand_cat = rand() % 5;
         srand (time(NULL));
         if(rand_cat==1){
              rand_preg=rand() % 20;
              cout<<"\nPregunta:"<<A[rand_preg].pregunta;
              cout<<"\nOpcion 1:"<<A[rand_preg].opciones[0];
              cout<<"\nOpcion 2:"<<A[rand_preg].opciones[1];
              cout<<"\nOpcion 3:"<<A[rand_preg].opciones[2];
              cout<<"\nOpcion 4:"<<A[rand_preg].opciones[3];
              cout<<"\nRESPUESTAAAAA:";cin>>respuesta;
              if(respuesta==A[rand_preg].correcta){
                   lvl++;
              }
              else{
                   cout<<"\nPerdiste";
                   vida=0;
              }
        }
    }fclose(pa);
}

Desde ya muchas gracias. ;D