elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [SOLUCIONADO] Generar nombre aleatorio.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] Generar nombre aleatorio.  (Leído 9,757 veces)
Yugget

Desconectado Desconectado

Mensajes: 50



Ver Perfil
[SOLUCIONADO] Generar nombre aleatorio.
« 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
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.    string num;
  10.    cout << "Introduce un numero: " << endl;
  11.    cin >> num;
  12.  
  13.    char *a[] = { "tijeras", "piedra", "papel" };
  14.  
  15.    if(num == "tijeras")
  16.    {
  17.        cout << "tijeritas" << endl;
  18.    }
  19.    else if(num == "piedra")
  20.    {
  21.        cout << "piedrita" << endl;
  22.    }
  23.    else if(num == "papel")
  24.    {
  25.        cout << "papelin" << endl;
  26.    }  
  27.    else
  28.    {
  29.        cout << "No es correcto." << endl;
  30.    }
  31.  
  32.    cout << rand(a) << endl;
  33.  
  34.    getch();
  35.    return 0;
  36. }

Como se abran dado cuenta es un juego de piedra papel o tijeras... jeje

Muchas gracias y disculpen las molestias.

Un cordial saludo.


« Última modificación: 8 Marzo 2014, 19:34 pm por TomasinSG » En línea

xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Generar nombre aleatorio.
« Respuesta #1 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


En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
Yugget

Desconectado Desconectado

Mensajes: 50



Ver Perfil
Re: Generar nombre aleatorio.
« Respuesta #2 en: 8 Marzo 2014, 14:19 pm »

Hola, muy buenas.
Gracias por tu respuesta...

Estoy probando con esto:

   
Código
  1. int t1;
  2.  
  3.    t1 = rand() % 10 + 1;
  4.  
  5.    cout << t1 << endl;

Pero solo se muestra el numero 2...

Saludos.
En línea

xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: Generar nombre aleatorio.
« Respuesta #3 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
  1. /* initialize random seed: */
  2. srand (time(NULL));
  3.  
  4. /* generate secret number between 1 and 10: */
  5. iSecret = rand() % 10 + 1;
« Última modificación: 8 Marzo 2014, 14:26 pm por xaps » En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Generar nombre aleatorio.
« Respuesta #4 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
  1. srand();

Normalmente, la semilla se le pone según la hora.

Código
  1. #include <ctime>
  2.  
  3. int main(){
  4.    srand(time(0));
  5. }
En línea

Yugget

Desconectado Desconectado

Mensajes: 50



Ver Perfil
Re: Generar nombre aleatorio.
« Respuesta #5 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
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.    string num;
  11.    string texto;
  12.    string texto1;
  13.    string texto2;
  14.    int t1;
  15.  
  16.    cout << "Introduce un numero: " << endl;
  17.    cin >> num;
  18.  
  19.    if(num == "tijeras")
  20.    {
  21.        cout << "tijeritas" << endl;
  22.    }
  23.    else if(num == "piedra")
  24.    {
  25.        cout << "piedrita" << endl;
  26.    }
  27.    else if(num == "papel")
  28.    {
  29.        cout << "papelin" << endl;
  30.    }  
  31.    else
  32.    {
  33.        cout << "No es correcto." << endl;
  34.    }
  35.  
  36.    texto = "tijeras";
  37.    texto1 = "piedra";
  38.    texto2 = "papel";
  39.    srand(time(0));
  40.    t1 = rand() % texto + texto1;
  41.  
  42.    getch();
  43.    return 0;
  44. }

Un cordial saludo.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Generar nombre aleatorio.
« Respuesta #6 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...
  • 1: Pones 3 IF-ELSE para cada valor
  • 2: Mejor que la anterior: Haces un SWITCH, con 3 CASE
  • 3: Guardas las string en un array (string arr[3];) y luego haces arr[num_aleatorio];
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Generar nombre aleatorio.
« Respuesta #7 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...
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Yugget

Desconectado Desconectado

Mensajes: 50



Ver Perfil
Re: Generar nombre aleatorio.
« Respuesta #8 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
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.    string num;
  11.    int t1;
  12.    int resultado;
  13.    srand(time(0));
  14.    resultado = rand() % 3 + 1;
  15.  
  16.    cout << "Introduzca piedra, papel o tijeras: " << endl;
  17.    cin >> num;
  18.  
  19.    switch(resultado)
  20.    {
  21.        case 1:
  22.             cout << "Tijeras" << endl;
  23.             break;
  24.        case 2:
  25.             cout << "Piedra" << endl;
  26.             break;
  27.        case 3:
  28.             cout << "Papel" << endl;
  29.             break;
  30.             default:
  31.             cout << "Ha ocurrido un error..." << endl;
  32.    }
  33.  
  34.    if(num == "tijeras")
  35.    {
  36.        cout << resultado << endl;
  37.    }
  38.    else if(num == "piedra")
  39.    {
  40.        cout << resultado << endl;
  41.    }
  42.    else if(num == "papel")
  43.    {
  44.        cout << resultado << endl;
  45.    }  
  46.    else
  47.    {
  48.        cout << "No es correcto." << endl;
  49.    }
  50.  
  51.    getch();
  52.    return 0;
  53. }

Aquí una imagen del problema:



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.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Generar nombre aleatorio.
« Respuesta #9 en: 8 Marzo 2014, 16:16 pm »

Código:
[quote author=TomasinSG link=topic=410167.msg1925421#msg1925421 date=1394290846]
    if(num == "tijeras")
    {
        cout << resultado << endl;
    }
    else if(num == "piedra")
    {
        cout << resultado << endl;
    }
    else if(num == "papel")
    {
        cout << resultado << endl;
    }
}
[/quote]
Haces cout de "resultado" jiji
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Leer texto base y generar otro aleatorio {JAVA}
Java
drachmatizando 0 3,135 Último mensaje 16 Septiembre 2010, 19:24 pm
por drachmatizando
Duda como generar un link aleatorio...!!
PHP
TrashAmbishion 2 4,593 Último mensaje 1 Julio 2013, 03:22 am
por #!drvy
Generar un mapa aleatorio 2D con puntos « 1 2 »
Programación C/C++
erest0r 11 5,560 Último mensaje 12 Marzo 2014, 23:41 pm
por ivancea96
desglose del un método generar numero aleatorio sin que se repita JAVA
Java
elm0n0 5 3,447 Último mensaje 30 Abril 2015, 01:00 am
por elm0n0
[Resuelto] como generar un código aleatorio con tiempo de duración?
PHP
pancho1061 1 2,101 Último mensaje 26 Marzo 2018, 02:15 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines