Dev - C++ - Ayuda juego adivina en C++

   
Vista:

Ayuda juego adivina en C++

Publicado por Gustavo planta2233@gmail.com (2 intervenciones) el 02/11/2015 06:14:52
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, depures 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
 
int main()
{
	int temp,incognita,minimoX=0,maximoX=0,op;
    cout<<"\n\tAdivinare tu numero"<<endl;
 
    srand(time(NULL));
    incognita=rand()%100;
 
    while(temp!=true)
    {
        cout<<"\n\tTu numero es "<<incognita<<endl;
        cout<<"\n\t1-Tu numero es menor a: "<<incognita<<"\n\t2-Tu numero es mayor a: "<<incognita<<"\n\t3-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<<"\n\tAdivine tu numero!!!!"<<endl;
    incognita=0;minimoX=1;minimoX=100;
	return 0;
}

Gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda juego adivina en C++

Publicado por aguml (311 intervenciones) el 02/11/2015 13:33:11
El problema es porque minimo y maximo no los tienes inicializados correctamente, o sea, si el mínimo es 1 y el máximo es 100 minimo=1 y maximo=100.
Si por ejemplo piensas en el 20 y el programa dice 80 entonces haces maximo=incognita-1 y si dice 10 pues minimo=incognita+1. Mínimo y máximo son los valores a usar con rand.
O sea que en el switch realmente harías valor=rand ()%(máximo -minimo+1)+mínimo o algo así. Eso sería tanto en case 1 como en case 2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda juego adivina en C++

Publicado por Gustavo (2 intervenciones) el 02/11/2015 23:23:05
Gracias, en verdad me as ayudado mucho ha resolver el problema, ahora las mayorías de las veces si adivina el numero pero en ocasiones se crashea el programa debido a los limites, que crees que pueda ser?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
while(temp!=true)
    {
        cout<<"\n\tTu numero es "<<incognita<<endl;
        cout<<"\n\t1-Tu numero es menor a: "<<incognita<<"\n\t2-Tu numero es mayor a: "<<incognita<<"\n\t3-O el "<<incognita<<" es tu numero?"<<endl;
        cin>>op;
        switch(op)
        {
        	case 1:
        		maximo=incognita-1;
        		incognita=rand ()%(maximo -minimo+1)+minimo;
        		contador++;
        		break;
        	case 2:
        		minimo=incognita+1;
        		incognita=rand ()%(maximo -minimo+1)+minimo;
        		contador++;
        		break;
        	case 3:
        		temp=true;
        		break;
 
        }

gracias me has ayudado mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar