Ptuk Posted September 9, 2013 Report Share Posted September 9, 2013 Tengo que hacer un programa donde se tiene que dar un numero randomentre 1 y 21...21 vecesmi 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 1x //sale un numero x entre 1 y 21 , y ya no peude salir mas Desea sacar un numero? si :1 no:2y // 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 More sharing options...
MrSeba Posted September 9, 2013 Report Share Posted September 9, 2013 No se si te sirva :tonto: http://codigoc.org/627-numeros-aleatorios-sin-repetir-en-c Link to comment Share on other sites More sharing options...
cañangasñangas Posted September 9, 2013 Report Share Posted September 9, 2013 (edited) 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 numerosint 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 September 9, 2013 by cañangasñangas Link to comment Share on other sites More sharing options...
Ptuk Posted September 9, 2013 Author Report Share Posted September 9, 2013 (edited) No se si te sirva :tonto: http://codigoc.org/627-numeros-aleatorios-sin-repetir-en-c Claro, esa es la base de lo que queria hacer pero no se me ocurrecomo interrumpirgracias !!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 numerosint 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 :DIntentaré ver que tal si me sirvea simple vista con el arreglo de 21 unos podría funcionarpero aun quedo volando ya que según entiendo al final eso me dará los 21 numeros al azar sin repetirse de unay no por pasos que es lo que necesito...o me equivoco ? Esto es una parte pequeña del trabajo que tengo q hacer pero lo que mas me enreda :rolf: Edited September 9, 2013 by Ptuk Link to comment Share on other sites More sharing options...
Holic Posted September 13, 2013 Report Share Posted September 13, 2013 (edited) 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 numeroint 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 numeroprintf("desea sacar un numero?");int resp;scanf("%d", &resp);// si no dice que si se interrumpe el loopif( resp != 1 ){break;}// se obtiene uno al azarnumero = alAzar();// mientras el numero sacado no sea uno que ya ha sido sacadowhile( estado[numero] != 0 ){// se saca otronumero = alAzar();}// el numero sacado ya no se puede utilizarestado[numero] = 0;} Edited September 13, 2013 by Holic Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now