Título: [SOLUCIONADO] Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 13:59 pm Hola, muy buenas.
Estoy recién aprendiendo c++, y tengo un problema con un mini-juego por así llamarlo. El problema es que no sé cómo hacer que se genere un nombre aleatorio. Por ejemplo tengo: Tomás,Antonio,Juan y quiero que cada vez que inicie el programa se muestre uno de esos nombres aleatoriamente... estoy probando con rand() pero no me da resultado y estaba buscando información pero no logro encontrarlo... y si ustedes me pudieran echar una mano lo agradecería. El código: Código
Como se abran dado cuenta es un juego de piedra papel o tijeras... jeje Muchas gracias y disculpen las molestias. Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: xaps en 8 Marzo 2014, 14:02 pm Documentación de rand():
http://www.cplusplus.com/reference/cstdlib/rand/ A veces para saber como funciona algo es tan fácil como buscarlo. Saludos Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 14:19 pm Hola, muy buenas.
Gracias por tu respuesta... Estoy probando con esto: Código
Pero solo se muestra el numero 2... Saludos. Título: Re: Generar nombre aleatorio. Publicado por: xaps en 8 Marzo 2014, 14:24 pm Tienes que inicializar una semilla para que te genere números aleatorios con srand() (http://www.cplusplus.com/reference/cstdlib/srand/).
Código cogido directamente de la página web que te he pasado: Código
Título: Re: Generar nombre aleatorio. Publicado por: ivancea96 en 8 Marzo 2014, 14:25 pm Rand genera un número pseudoaleatorio. Tienes que establecerle en cada programa, una semilla de la cual, sacará los números.
El comando es: Código
Normalmente, la semilla se le pone según la hora. Código
Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 14:43 pm Muchas gracias, y disculpen mi ignorancia ha sido culpa mía no poner eso... pensé que no hacía falta...
Ahora ya todo va bien pero... ahora quiero que me lo elija entre tres variables: Código
Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: ivancea96 en 8 Marzo 2014, 15:20 pm Tienes varias opciones. Te propongo 3:
En primer lugar, generas el número aleatorio entre 0 y 2. Luego...
Título: Re: Generar nombre aleatorio. Publicado por: amchacon en 8 Marzo 2014, 15:41 pm Por cierto, el srand solo hay que realizarlo UNA VEZ. Lo digo por si después haces un bucle y haces srand todo el rato...
Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 16:00 pm Hola, muy buenas.
Gracias a todos por vuestra colaboración, ya está funcionando correctamente ahora solo tengo un problema... y es que se me muestra un número... que será el del case. ivancea seguí más o menos tus instrucciones.... Código: Código
Aquí una imagen del problema: (http://i.imgur.com/wHK2OMZ.png) He introducido: tijeras y me da de resultado: piedra < perfecto pero como pueden observar me sale abajo el número 2, si es otro resultado me sale otro número... según haciendo referencia al case opino. amchacon, gracias lo tendré en cuenta. Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: ivancea96 en 8 Marzo 2014, 16:16 pm Código: [quote author=TomasinSG link=topic=410167.msg1925421#msg1925421 date=1394290846] Haces cout de "resultado" jiji Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 16:20 pm Hola, muy buenas.
¿Entonces cómo puedo imprimirlo?. Por que he intentado cambiar la variable: Código
abajo del switch... pero me lanza al default... Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: ivancea96 en 8 Marzo 2014, 16:31 pm Qué quieres imprimir? Quién ganó?
Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 16:34 pm Hola muy buenas,
Osea yo ingreaso: tijeras, papel o piedra... y luego se genera un resultado que es: piedra, papel, o tijeras... Eso es.. se muestra correctamente pero se muestra el número incognico del case... Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: xaps en 8 Marzo 2014, 17:38 pm No entiendes lo que hace tu código. Te he añadido un par de líneas de ayuda para que averigües dónde está tu fallo, aunque ya te lo hayan dicho...
Código
Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 17:51 pm Hola, muy buenas.
Por mi parte no le veo ningún fallo, funciona todo correctamente solo que se muestra el número del case... seguramente por que muestro la variable resultado en un cout como me han dicho: Código: Haces cout de "resultado" jiji Pero entonces cómo podría imprimirlo... estoy probando cambiando de estructura y demás pero sigue igual. ¿Podrían darme alguna otra pista por favor?. Gracias y disculpe las molestias. Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: xaps en 8 Marzo 2014, 18:13 pm Imprimir el que? Explícate mejor, no soy el primero en preguntártelo ya...
Título: Re: Generar nombre aleatorio. Publicado por: ivancea96 en 8 Marzo 2014, 18:24 pm Dejemos las cosas claras:
Código
Esa línea escribe el número del case, si "num" es una entrada válida (piedra, papel o tijera). Sinó, muestra el otro mensaje. Esos if son absurdos. ¿Qué pretendías que hicieran? Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 18:37 pm Hola, muy buenas.
He echo esos if, para determinar los caracteres que han introducido en la variable num, osea que si en la variable escribo tijeras y es igual al texto del if se ejecute una sentencia, osea el resultado elejido al azar por el pc. Y si lo escrito no es ninguno de esos if lo tomará como nulo. Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: ivancea96 en 8 Marzo 2014, 18:53 pm Esque el resultado, es un numero del 1 al 3.
Quizás prefieras hacer 3 "IF" dentro de cada IF, para poner "Empate", "Derrota", "Victoria". Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 18:57 pm Hola muy buenas,
Eso también es verdad, de echo lo voy a probar... Pero me gustaría antes saber una cosa a poder ser, ¿No hay alguna forma de poder hacer un case con letras?. Osea en vez de ser así: case 1 sea case HOLA Un cordial saludo. Título: Re: Generar nombre aleatorio. Publicado por: Yugget en 8 Marzo 2014, 19:34 pm Hola, muy buenas.
Muchas gracias, por vuestra ayuda. Ya está todo solucionado, he echo lo de los if y ya todo me funciona correctamente. Muchas gracias por vuestra ayuda. Un cordial saludo. Título: Re: [SOLUCIONADO] Generar nombre aleatorio. Publicado por: Yoel Alejandro en 10 Marzo 2014, 01:11 am Hola a todos. Creo que al programilla le falta la parte donde decide quién ganó (o quizá yo no la vi, sorry). Como un switch() anidado con las nueve posibilidades sería muy tedioso es más cómodo definir una matriz de 3x3, donde la opción 1 representa tijera, 2 la piedra, 3 el papel. En la posición (i,j) de la matriz se pone:
Así por ejemplo, para el caso de la tijera, como empata consigo misma, pierde ante piedra y gana ante papel, la primera fila de la matriz debe ser {0, -1, 1}. El programa inspecciona el elemento de la matriz, y ahí sabe si usted ganó, perdió o empató. En la primera parte del programa el usuario elige tijera, piedra o papel pulsando '1', '2' ó '3' (más cómodo que escribir el nombre completo), y este valor entero se deposita en la variable human_op. Luego, elige la máquina al azar usando rand() y srand(), y su valor se deposita en machine_op. Como ya se explicó, el valor de A[human_op - 1][machine_op - 1] dará la respuesta. Al final, te pregunta si quieres jugar de nuevo y así sucesivamente. Confieso que yo mismo me puse a jugar contra la máquina y casi me envicio, jajaja >:D. Un detalle, la función clear_screen() está codificada para Windows y para Linux. En Windows debes dejar la línea system("cls") y comentariar system("clear"), mientras en Linux se hace al revés. La versión que pongo aquí está para Windows: Código
Título: Re: [SOLUCIONADO] Generar nombre aleatorio. Publicado por: leosansan en 10 Marzo 2014, 04:46 am * Te faltó el return de main. * Es más propio de C++ usar <ctime> en lugar de <time.h> ...pijo que es uno. * Hecho de menos unos contadores de las partidas ganadas, empatadas y perdidas. Por lo demás, lo has bordado con la matriz. ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: [SOLUCIONADO] Generar nombre aleatorio. Publicado por: BlackM4ster en 10 Marzo 2014, 09:17 am Cuando he leído el título, pensaba que hablabas sobre algo así:
http://zonaisc.com/web/?q=node/16 Título: Re: [SOLUCIONADO] Generar nombre aleatorio. Publicado por: Yoel Alejandro en 11 Marzo 2014, 02:13 am Leo, ¿En serio se me olvidó el return de main()? Jaja, pero que burdo, sorry :-[ !!!
Pero de veras que el programa está divertido, provoca fajarse a jugar contra la máquina, jaja. Bueno, con las modificaciones que propones (contador de ganadas, perdidas y empatadas), quedaría: Código
|