Ayuda juego adivina C++


02 de Noviembre del 2015

Buen día, gracias por su atención tengo que hacer un juego en c++ de adivina el numero, trata que la computadora adivine el numero en el que estas pensando, por ejemplo si el numero que pienso es el 20, la computadora imprimirá en pantalla un numero random entre el 1 y el 100, supongamos que ese numero random es el 80 entonces el programa pregunta si el numero en que yo pensé es menor o mayor al que salio random osea el 80, entonces como 20<80 el nuevo limite de números random es del 1 al 80, despues de salir otro valor random, por ejemplo el 16 entonces 20>16 por lo tanto el nuevo limite es de 16 a 80 y así sucesivamente hasta llegar al 20

Aquí esta el código del programa que llevo, pero todavía no logro poder hacer los limites de los números random correctamente como podria hacerle,
Gracias.

 

#include
#include
#include
#include
using namespace std;
 
int main()
{
	int temp,incognita,minimoX=0,maximoX=0,op;
    cout<<"ntAdivinare tu numero"<<endl;
 
    srand(time(NULL));
    incognita=rand()%100;
 
    while(temp!=true)
    {
        cout<<"ntTu numero es "<<incognita<<endl;
        cout<<"nt1-Tu numero es menor a: "<<incognita<<"nt2-Tu numero es mayor a: "<<incognita<<"nt3-O el "<<incognita<<" es tu numero?"<<endl;
        cin>>op;
        switch(op)
        {
        	case 1:
        		minimoX=1+rand()%incognita;
        		break;
        	case 2:
        		maximoX=1+rand()%incognita+incognita;
        		break;
        	case 3:
        		temp=true;
        		break;
 
        }
        incognita=(minimoX+maximoX)/2;
        system("cls");
    }
    cout<<"ntAdivine tu numero!!!!"<<endl;
    incognita=0;minimoX=1;minimoX=100;
	return 0;
}

Cobre2Software
13 de Noviembre del 2015

Hola, el código tiene varios errores, por ejemplo:

la variable temp, inicializada como int, solo contendrá números enteros por lo que una comparacion con un true da un error. Puedes usar una variable de tipo boleana o usar 0 o 1 si prefieres usar int.

Además, utilizas un while, pero la variable de control, en este caso temp puede tomar cualquier valor ya que no se ha inicializado por lo que la mejor seria un do-while.

nt me imagino que será un salto de linea, es decir n, no nt si es eso lo que querías.

La estructura del switch es muy liosa, seria mejor si dentro del bucle

Despues de todo eso el código quedaría asi(No han salido los includes y he supuesto que serían los que ha puesto)

 

#include 
#include 
#include 
#include 

using namespace std;

int main()
{
    int incognita,minimoX=0,maximoX=0,op;
    bool temp;

    cout<<"nAdivinare tu numero"<<endl;

    srand(time(NULL));
    incognita=rand()%100;

    do{

        cout<<"nTu numero es "<<incognita<<endl;
        cout<<"n1-Tu numero es menor a: "<<incognita<<"n2-Tu numero es mayor a: "<<incognita<<"n3-O el "<<incognita<<" es tu numero?"<<endl;
        cin>>op;
        switch(op)
        {
                case 1:
                        minimoX=1+rand()%incognita;
                        break;
                case 2:
                        maximoX=1+rand()%incognita+incognita;
                        break;
                case 3:
                        temp=true;
                        break;

        }
        incognita=(minimoX+maximoX)/2;
        system("cls");
    }while(temp!=true);
    cout<<"ntAdivine tu numero!!!!"<<endl;
    incognita=0;minimoX=1;minimoX=100;
        return 0;
}


Espero que te haya servido de ayuda, si sigues teniendo dudas vuelve a escibir .

Un saludo.

   cobre2software.com