Jump to content

Problema con C++


Ptuk

Recommended Posts

Tengo que hacer un programa donde se tiene que dar un numero random

entre 1 y 21...21 veces

mi problema no es por este lado , sino en como preguntar siempre si desea sacar otro numero

 

me explico como se deberia ver el programa:

 

Desea sacar un numero? si:1 no:2

//obviamente 1

x //sale un numero x entre 1 y 21 , y ya no peude salir mas

Desea sacar un numero? si :1 no:2

y // sale un numero y entre 1 y 21 que no sea x

 

hasta que no queden números

osea son 21 repeticiones

 

mi problema pasa como dije antes en preguntar cada vez que sale 1 numero y que ese numero ya no pueda salir.

Link to comment
Share on other sites

podrias hacer un array asi

 

int estado[21] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

 

 

y cuando tires un numero al azar

 

n = numero al azar.

if(estado[n] == 1){

estado[n] = 0;

}

 

edito:

 

ahora claro esto es para un numero determinado de numeros y bien finito, ya que si te fijas hay que escribir el arreglo estado por lo que te recomiendo hacer es

 

int numberosAlAzar = 21; //aqui pones cuantos numeros

int estado[numerosAlAzar];

 

for(int i=0;i<numerosAlAzar;i++){

estado = 1;

}

 

 

despues de iniciar eso ya tendrias tu arreglo estado lleno de unos y listo para ser tratados :D

Edited by cañangasñangas
Link to comment
Share on other sites

 

Claro, esa es la base de lo que queria hacer pero no se me ocurre

como interrumpir

gracias !!

podrias hacer un array asi

 

int estado[21] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

 

 

y cuando tires un numero al azar

 

n = numero al azar.

if(estado[n] == 1){

estado[n] = 0;

}

 

edito:

 

ahora claro esto es para un numero determinado de numeros y bien finito, ya que si te fijas hay que escribir el arreglo estado por lo que te recomiendo hacer es

 

int numberosAlAzar = 21; //aqui pones cuantos numeros

int estado[numerosAlAzar];

 

for(int i=0;i<numerosAlAzar;i++){

estado = 1;

}

 

 

despues de iniciar eso ya tendrias tu arreglo estado lleno de unos y listo para ser tratados :D

Intentaré ver que tal si me sirve

a simple vista con el arreglo de 21 unos podría funcionar

pero aun quedo volando ya que según entiendo al final eso me dará los 21 numeros al azar sin repetirse de una

y no por pasos que es lo que necesito...o me equivoco ? :otnot:

Esto es una parte pequeña del trabajo que tengo q hacer pero lo que mas me enreda :rolf:

 

Edited by Ptuk
Link to comment
Share on other sites

Eso es simplemente interrumpir el bucle en caso de que no se quiera sacar más números o continuarlo en caso contrario...

Imagina que tienes una función:

int alAzar();

Te entrega un número de 1 a 21 "al azar", entonces, usando la idea de cañangasñangas:

// No se ha sacado ningun numero

int estado[21] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};

for(int i=0;i<21;i++){

// se preguntan 21 veces si se desea sacar un numero

printf("desea sacar un numero?");

int resp;

scanf("%d", &resp);

// si no dice que si se interrumpe el loop

if( resp != 1 ){

break;

}

// se obtiene uno al azar

numero = alAzar();

// mientras el numero sacado no sea uno que ya ha sido sacado

while( estado[numero] != 0 ){

// se saca otro

numero = alAzar();

}

// el numero sacado ya no se puede utilizar

estado[numero] = 0;

}

Edited by Holic
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...