Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc (http://foros.zackyfiles.com/forumdisplay.php?f=370)
-   -   Ejercicio C++, Juego del número secreto (http://foros.zackyfiles.com/showthread.php?t=382723)

Snake12 16/12/2005 20:11

Ejercicio C++, Juego del número secreto
 
Hola de nuevo, como siempre en aprietos, tengo otro ejercicio que hacer, el último de esta semana, y creo que tengo alguna duda sobre cómo hacerlo, pero antes el enunciado;

Cita:

Diseña un programa C++ para el juego del Numero Secreto. El objetivo del juego es adivinar un número secreto por parte del usuario en un número de intentos inferior a uno predeterminado. En cada intento fallido el programa indicará si el valor indicado es menor o mayor que el número secreto buscado.
Tengo que crear un número aleatorio de 3 cifras (creo que con 3 hay más que suficiente para entretenerse) y para ello creo que he de usar el comando ramdomize, pero no sé cómo...

Luego quiero hacer un do-while si el numero que introdzuco es diferente del que se genera, y si es el mismo (vaya suerte) pues que imprima en pantalla enhorabuena y esas cosas...

Bueno, espero vuestros consejos. Ta luego!!!

Coke 17/12/2005 04:36

saludos...

ya tengo hecho el ejercicio, pero esta vez no te lo voy a poner, de momento, para que pienses un poco....te explico por encima como lo he hecho...

otra_vez:
cout<<"Cual es el numero secreto?...entre 100 y 999 : ";
cin>>numero;
cout<<"\n"<<endl;

no he utilizado randomize()....he utilizado srand y rand

srand(??????????);
int gh = ????+(rand()%?????);

una vez generado el numero, compruebo que este comprendido entre 100 y 999, si no esta, vuelve a pedir otro numero.

si gh menor que 100 ó gh mayor que 999 entoces me voy a "otra vez:"

si esta comprendido, comienzo el bucle...por ejemplo

bool bucle = true;

do {
si numero_ingresado menor numero_generado entoces ...."el numero secreto es mayor"

si numero_ingresado mayor numero_generado entoces ....."el numero secreto es menor"

si ninguna de las dos anteriores entoces...."enhorabuena etc etc..............rompo bucle.

cin>>numero;
cout<<"\n"<<endl;

}while(bucle);


ala, a ver que se te ocurre.

Coke.

Snake12 17/12/2005 12:42

Hola Coke, muchas gracias antes de nada por tu interés en ayudarme, es de agradecer. Al final hice el jercicio antes de haber podido mirar tu explicación y utilicé un rand y srand, pero como no los he dado no sé manejarlos, simplemente busqué por ahí en google y copié un ejemplo para que generase aleatoriamente los números del 0 al 100, pero no sé como hacerlo para los que yo quiera, si me lo pudieras expliacr...:)

Bueno, te pongo el ejercicio a ver qué te parece, creo que está bien, pero es un poco "vasto" diría yo:

[CODE]int num, intentos, numer;
srand ( time(NULL) );
num = rand()% 100;

cout << "Acierte un numero secreto entre el 0 y el 100. Tiene 10 intentos. \n" << endl;
cout << "Introduce un numero: ";
cin >> numer;

if ( numer == num )
{
cout << "Ha acertado a la primera.\n" << endl;
}

intentos = 1;
while ( numer != num && intentos < 10 )
{
if ( numer > num )
{
cout << "El numero es menor." << '\n' << endl;
intentos ++;
cout << "Intentelo de nuevo: ";
cin >> numer;
}

if ( numer < num )
{
cout << "El numero es mayor." << '\n' << endl;
intentos ++;
cout << "Intentelo de nuevo: ";
cin >> numer;
}

if ( numer == num )
{
cout << "\nHa acertado en el intento " << intentos << "." << '\n' << endl;
}

if ( intentos == 10 && numer != num )
{
cout << "\nHa perdido, empiece de nuevo." << '\n' << endl;
}
}

system("Pause"); // Hacer una pausa
return 0; // Valor de retorno al S.O.
}[/CODE]

Po ala, listo. Muchas gracias por tu ayuda, de verdad. Ta luego!!!

kolmo7 17/12/2005 15:22

Algunas cosas del código que yo las haría de otro modo (sigo recordándote que muchas cosas de programación se me han olvidado... :p ):
Cita:

cout << "Acierte un numero secreto entre el 0 y el 100
El ejercicio pide un número de 3 cifras, luego el número debe ir de 100 a 999 (salvo que se considere que el 14 también es de tres cifras añadiendo un 0 al principio, 014, y en ese caso tendrías que generar el número desde el 0 al 999)
Cita:

if ( numer == num )
{...}
while ( numer != num && intentos < 10 )
{...}
Haces un if y luego, sin importar lo que haya sucedido en ese if, haces un while...

¿Podría colocar el if dentro del bucle? ¿Podría iniciar el bucle pidiendo el número y luego realizar las comprobaciones pertinentes?
Cita:

if ( numer > num )
{....}
if ( numer < num )
{.....}
if ( numer == num )
{....}
Esos tres if quedan muy feos... si tienes tres casos puedes usar case. O también podrías usar if... else if... else...

if ( numer > num )
...
else if ( numer < num )
...
else ( numer == num )
...
Cita:

if ( intentos == 10 && numer != num )
{
cout << "\nHa perdido, empiece de nuevo." << '\n' << endl;
}
Yo creo que este if se podría meter dentro de los if else if ... de antes. Sólo hace falta ordenar de forma conveniente las condiciones...

Coke 17/12/2005 15:25

saludos...

el rand()%100 genera un pseudo aleatorio numero entre 0 y 99, si en vez de eso pones rand()%900, genera uno entre 0 y 899...si a eso lo sumas 100, nos queda un numero entre 100 y 999....

num = 100 + rand() % 900;

bueeeeno lo quito pa que piense un poquito mas....

he quitado el codigo a peticion del amigo kolmo, para que pienses un poquito mas...:)


Coke.

Coke 17/12/2005 15:28

ya se ma ha adelantao kolmo, como siempre ....:)

bueno de todas formas hay algunas diferencias.


Coke.

kolmo7 17/12/2005 15:30

Chacho Coke, no le pongas el código hasta que no quede otro remedio porque de nada sirve el copy&paste...:)

Coke 17/12/2005 15:31

si es el suyo con unos retoques...el de el ya va bien.

Coke.

Snake12 17/12/2005 16:12

jejejeje
Muchas gracias a los dos, al final cambié la idea que fuese de 3 cifras y dejé el ejercicio para que generase un número del 0 al 100 (ahora sé que no es 100, sino 99, pero como yo no sabía utilizar rand creí que hacía hasta el 100).

Con respecto a los if, else if, else...es la falta de práctica, pero en teoría lo sé hacer...envié el jercicio anoche por mail al profesor, así que ya no hay vuelta atrás, pero para la próxima vez se hará más "curioso" o llamémosle optimizado...jejejeje

Gracias de nuevo por vuestras explicaciones y el tiempo dedicado en ayudarme, os estoy muy agradecido. GRACIAS

Ahora os pregunto una cosa; llevo con c++ un mes aproximadamente, me refiero haciendo ejercicios, etc...estos son los que hecho hasta ahora con más dificultad, y la verdad, me cuesta plasmar la idea en el compilador, es decir, transformar la solución en lenguaje informático, vamos, escribir el programa....jejejjee, y no sé si es porque me falta práctica, porque soy duro de mollera...hombre yo pienso que es porque soy programador nobel y así me consuelo, pero vosotros qué opináis...

Bueno, gracias de nuevo y ta luegoo!!!

Efirenet 17/12/2005 16:25

Hola, cuando tengas unas cuantas "horas de vuelo" más, te acabarán saliendo como churros. No te preocupes por eso, que con práctica se soluciona.

Un saludo y felices fiestas.

kolmo7 17/12/2005 20:00

Pues pienso lo mismo que Efirenet.

Lo importante es saber qué tiene que hacer el programa, donde deben ir los bucles, los diferentes casos para hacer una cosa u otra,... luego plasmarlo en un lenguaje de programación debe ser relativamente sencillo.

No se si te han enseñado a hacer diagramas con las operaciones que tiene que realizar un programa. Una vez completado en papel lo que debe hacer el programa su paso a un lenguaje de programación (ya sea C++, pascal, Java, ...) es una tarea simple (sólo necesitas conocer cómo se escriben esas sentencias o esos bucles en dicho lenguaje).


La franja horaria es GMT +2. Ahora son las 23:58.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate