Ayuda!!! Ejercicio bucles c++

Iniciado por afrocardo, 17 Octubre 2015, 00:15 AM

0 Miembros y 1 Visitante están viendo este tema.

afrocardo

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;
}

ivancea96

Do-While es la mejor elección xD

Pero, va va, colócalo.

afrocardo

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;
}

ivancea96

Estás poniendo
Código (cpp) [Seleccionar]
(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.