Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: afrocardo en 17 Octubre 2015, 00:15 am



Título: Ayuda!!! Ejercicio bucles c++
Publicado por: afrocardo en 17 Octubre 2015, 00:15 am
Buenas,Tengo que realizar este ejercicio.Lo he hecho con un if,Pero en el ejercicio necesito adivinar el numero;tantas veces ,hasta adivinar dicho numero.

Creo que debería usar un bucle do while¿Qué os parece?

Este es el codigo:

//Construir un programa que simule el siguiente juego entre los jugadores A (advino) y P (pensador):
//P piensa un número comprendido entre 1 y N ,
//y A trata de adivinarlo, mediante tanteos sucesivos, hasta dar con él. Por cada tanteo de A, P
//da una respuesta orientativa de entre las siguientes:
//Fallaste. El número pensado es menor que el tuyo.
//Fallaste. Mi número es mayor.
//Acertaste al fin.
//Mejoras:
//Debe acertar en el número de jugadas que se introduzca por teclado.
//Se debe ejecutar tantas veces como quiera el usuario.
#include <iostream>
using namespace std;

int main() {
   int numeromaximo,numero,numeroaadivinar;
   cout<<"Entre 1 y que, quieres el numero?"<<endl;
   cin>>numeromaximo;
   cout<<"Introduce el numero que el jugador P(pensador)debe adivinar"<<endl;
   cin>>numeroaadivinar;
   cout << "Jugador P(pensador),piensa y di un numero ENTRE 1 Y"<<" "<<numeromaximo<<" para que jugador A (adivino)  lo adivine:" << endl;
   cin>>numero;
   if(numero>=1 || numero<=numeromaximo){
      cout<<"Correcto.Has dicho un numero entre 1 y "<<" "<<numeromaximo<<endl;
      if(numero==numeroaadivinar){
         cout<<"Has adivinado el numero.Es el numero:"<<" "<<numeroaadivinar<<endl;

      }
      else{
         cout<<"pero has introducido un numero fallido"<<endl;
      }
   }
   return 0;
}


Título: Re: Ayuda!!! Ejercicio bucles c++
Publicado por: ivancea96 en 17 Octubre 2015, 13:27 pm
Do-While es la mejor elección xD

Pero, va va, colócalo.


Título: Re: Ayuda!!! Ejercicio bucles c++
Publicado por: afrocardo en 18 Octubre 2015, 18:46 pm
Lo he hecho con while porque la profesora me dijo que había que hacerlo con while,y luego me dijo que el numero que debo adivinar debe generarse aleatoriamente en pantalla y tiene que ser un numero aleatorio de 1 hasta N(por ejemplo de 1 hasta 10).Mi problema es que cuando porngo el numero adivinado, no me muestra el mensaje de correcto, sino que dice que meta otro numero.

código probado en el software Eclipse Indigo C++

código:

//Construir un programa que simule el siguiente juego entre los jugadores A (advino) y P (pensador):
//P piensa un número comprendido entre 1 y N ,
//y A trata de adivinarlo, mediante tanteos sucesivos, hasta dar con él. Por cada tanteo de A, P
//da una respuesta orientativa de entre las siguientes:
//Fallaste. El número pensado es menor que el tuyo.
//Fallaste. Mi número es mayor.
//Acertaste al fin.
//Mejoras:
//Debe acertar en el número de jugadas que se introduzca por teclado.
//Se debe ejecutar tantas veces como quiera el usuario.
#include <iostream>
using namespace std;
#define NUMMAX 11
#define NUMMIN 1

int main() {
   int numero,numeroaadivinar,numeromaximo,numeroaleatorio;
   srand(time(NULL));
   numeroaleatorio=rand();
   cout<<"El numero aleatorio es:"<<(numeroaleatorio=1+rand()%(NUMMAX-1))<<endl;

   while((rand()%NUMMAX)!=numero){
      cout<<"Introduce un numero entre 1 y 10"<<endl;
            cin>>numero;
            if((numeroaleatorio<numero){
                     cout<<"Fallaste.El numero pensado es menor que el tuyo"<<endl;
                  }
            if((numeroaleatorio>numero){
               cout<<"Fallaste.Mi numero es mayor que el tuyo"<<endl;
            }


   }

   cout<<"Correcto.Has adivinado el numero"<<endl;

   return 0;
}


Título: Re: Ayuda!!! Ejercicio bucles c++
Publicado por: ivancea96 en 18 Octubre 2015, 19:42 pm
Estás poniendo
Código
  1. (rand()%NUMMAX)
En vez de numeroAleatorio. Cada vez que pones eso, se genera un numero nuevo.

Y a todo esto, al hacer while y no do-while, la primera comprobación del while comprueba con "numero", al que no le has dado un valor por defecto. Pon numero=-1 (o cualquier otro número posible fuera del rango) para evitar fallos.