/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

adivinar un numero que el usuario piense

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
huguidora



Registrado: 24 Ago 2007
Mensajes: 4
Ubicación: Paraguay

MensajePublicado: 29/08/2007 10:16 am
Título: adivinar un numero que el usuario piense

Hola amigos , alguien podria ayudarme con un algoritmo que calcule el numero que el usuario piense , con cierta ayuda del mismo , ya que el programa le dira (mediante la funcion rand()) un numero aleatorio entre 0 y 99 hasta llegar al pensado
El problema que tengo es solo con la salida del programa
Ojala puedan ayudarme
hasta pronto
Volver arriba
_Martin_



Registrado: 03 Ago 2006
Mensajes: 209

MensajePublicado: 29/08/2007 3:34 pm
Título:

Podrias postear el codigo? De otra forma es dificil saber cual es el problema

Saludos
Volver arriba
DCelso



Registrado: 28 Abr 2004
Mensajes: 112

MensajePublicado: 30/08/2007 3:14 pm
Título:

He hecho este ejemplillo para jugar contra la máquina a averigua el número, a ver si es lo que buscas.
Saludos.
Código:

#include <string>
#include <iostream.h>

int main()
{
        srand ( time(NULL) );
        int numero_pensado= rand() %100;
        int salir=0;
        int numero_dicho=0;
        int intentos=0;
        cout <<"Adivina el número que he pensado:";
        while (!salir) {
                cin >> numero_dicho;
                if (numero_pensado==numero_dicho) {
                        cout << "Enorabuena, has acertado en "<<intentos<<" intentos"<<endl;
                        salir=1;
                } else {
                        intentos++;
                        cout<< endl<<"El número que he pensado es ";
                        if (numero_pensado>numero_dicho) {
                                cout<<"mayor";
                        } else {
                                cout<<"menor";
                        }
                        cout<< " que " <<numero_dicho<<endl;
                }
        }
        salir=0;
        cout <<"Voy a adivinar el número que has pensado:"<<endl;
        numero_dicho = rand()%100;
        std::string respuesta;
        intentos=0;
        int cota_inferior=0;
        int cota_superior=100;
        while (!salir) {
                cout <<"Es igual, menor o mayor al número " <<numero_dicho<<"?(i=igual,m=menor,M=mayor)"<<endl;
                cin >> respuesta;
                if (respuesta=="i"||respuesta=="I") {
                        cout << "bien, he acertado en "<<intentos<<" intentos"<<endl;
                        salir=1;
                } else if (respuesta=="m") {
                        cota_superior=numero_dicho;
                        intentos++;
                        numero_dicho-=(cota_superior-cota_inferior)/2;
                } else if (respuesta=="M") {
                        cota_inferior=numero_dicho;
                        numero_dicho+=(cota_superior-cota_inferior)/2;
                        intentos++;
                } else {
                        cout << "me repites si es igual, menor o mayor a "<<numero_dicho<<endl;
                }
        }
        return 0;
}
Volver arriba
spesmod



Registrado: 23 Ago 2007
Mensajes: 33

MensajePublicado: 03/09/2007 6:21 am
Título:

hola espero no llegar tarde, da la casualidad que hace unos meses (casi un año) yo hice un programaita que adivina el numero que piensas, y es que me entro la curiosidad por que cuando niño me hicieron ese jueguito de las tarjetas, lo conoces¿? bueno se trata de escojer un numero del 1 al 100, y te dan 7 tarjetas con una cantidad determinada de numeros (del 1 al 100). entonces te preguntan tu numero esta en esta tarjeta¿? y si respondes "si" entonces el que te esta haciendo las preguntas tiene que memorizar el PRIMER numero de quella tarjeta que dijiste "si aca esta mi numero", y asi tiene hacer con todas las 7 tarjetas, luego tiene que sumar mentalmente los "PRIMEROS NUMEROS" de las que dijiste "si" y esa suma es el numero que pensaste, curioso no¿?

pero bueno este programa lo hace tambien como una persona (talez mejor) el unico inconveniente es que debes responderle (igual que con una persona) dichas respuestas se dan con 1 para "si" y 0 para "no", y si te equivocas al responder el numero no va ser el que pensaste; pero ese ya no es problema del programa, sino un error humano.
bueno basta de barullo aqui esta el codigo:

Código:

#include <stdio.h>
#include <conio.h>

#define LIMITE   100
#define POSX   13
#define POSY   13

int adivina(int a);

main()
{
int respuesta, resultado=0, ntab=1, inicial=1;

textattr(64+7);
clrscr();
printf("hola este es un programa, que adivina el pensamiento...");
getch();
printf("\n...piensa en un numero del 1 al 100...");
getch();

while(ntab<=7)
   {
   clrscr();
   printf("...escribe \"1\" si tu numero est  en la sgt. tabla\n");
   printf("¢ \"0\" si no est . Es indispensable no equivocarse...\n");
   adivina(inicial);
   printf("\n\n\t...responde:");
   scanf("%i", &respuesta);
   if(respuesta==1)
      resultado=resultado+inicial;
   inicial=inicial*2;
   ntab++;
   }
clrscr();
printf("...listo... tu numero es...");
getch();
printf("\t\tel %i...... ASOMBRADO???", resultado);
getch();

return 0;
}

//////FUNCION ADIVINA/////
int adivina(int a)
{
int j, py=POSY, largot=0, serie;

gotoxy(POSX,py);
serie=a;
while(serie<=LIMITE)
  {                                   //selecciona "a" numeros
  for(j=1; j<=a; j++,serie++)         //consecutivos y los
    if(serie<=LIMITE)                 //imprime
       {                              //
       printf("%i\t", serie);         //
       largot++;
       if(largot==8)
     {              //est‚tica de tabla
     printf("\n");    //
     largot=0;        //
     py++;            //
     gotoxy(POSX,py); //
     }                //
       }
  serie=serie+a;    //salto de "a" numeros
  }
return 0;
}


espero que te sirva. en realidad funciona en base a progresiones (aritemeticas) ojala lo entiendas. xiao
_________________
|--A--Q--U--A--|
Volver arriba
spesmod



Registrado: 23 Ago 2007
Mensajes: 33

MensajePublicado: 03/09/2007 6:40 am
Título:

Por cierto acabo de probar el codigo de dcelso y tiene como un webo de erores... No es por desacreditar pero lo he tenido que corregir y encima la ejecucion no esta bien, por que deberia darme la respuesta el no yo:

Cpu: "tu numero es igual menor o mayor a 25"
Yo: "mayor"
Cpu: "tu numero es igual menor o mayor a 27"
Yo: "menor"
//Obviamente mi numero es 26 pero...
Cpu: "tu numero es igual menor o mayor a 26"
Yo: "¿?¿?¿? ... Igual ps lol"
Cpu: "bien he acertado bla bla bla..."
Yo: "pero que has acertado boludo si yo te dije "si es igual a 26" osea please!!"
Fin del programa...

Que programita para deivis no?
Y otra cosa pueden decirme que significa:

Código:
std::string respuesta;


Segun el compilador requiere de una estructura... Pero ¿cual estructura?... Bueno en fin... Hay cada codigo...
Bueno se acabo la critica (constructiva). Xiao
_________________
|--A--Q--U--A--|
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 4379
Ubicación: Mexico

MensajePublicado: 03/09/2007 7:39 am
Título:

Hola spesmod

Por favor no coloques todo el texto en mayusculas porque se considera gritar, es por eso que modifique tu mensaje.

La sentencia que comentas es valida:
Código:
std::string respuesta;

Esta declara el objeto "respuesta" de tipo "string" indicando que este nombre ("string") se localiza en el espacio de nombres "std". Tu compilador de C++ no deberia emitir un mensaje de error.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
spesmod



Registrado: 23 Ago 2007
Mensajes: 33

MensajePublicado: 03/09/2007 1:11 pm
Título:

pero lo hace, que me dices de mi codigo, funka¿?¿?¿?
_________________
|--A--Q--U--A--|
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 4379
Ubicación: Mexico

MensajePublicado: 05/09/2007 9:34 am
Título:

spesmod escribió:
pero lo hace

Pero no deberia, ¿Que compilador de C++ estas utilizando?

spesmod escribió:
que me dices de mi codigo, funka

Si con "funka" te refieres a "no funcionar" pues tienes razon, habria dificultades al ejecutarlo en un compilador que no soporte la [CENSORED] la biblioteca conio de Borland.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
DCelso



Registrado: 28 Abr 2004
Mensajes: 112

MensajePublicado: 10/09/2007 11:22 am
Título:

Perdona.
Es verdad que falta la condición de salida Very Happy.

Este código lo hice de forma muy genérica, pero el objetivo lo consigue. Llega al número final.

Para evitar tener que decir igual habría que preguntar antes al usuario ¿es este tu número? y a la respuesta de no hacer lo que hace ahora (preguntar por si es mayor o menor ) y a la respuesta de si pues lo de salir. En cuanto tenga un huequecito lo mejoro en ese aspecto.

Con respecto a errores de compilacion, asegúrate de copiar el código en un fichero con extensión .cpp, para que el compilador sepa que es código C++.
Si tienes errores de compilación pastealos aqui exactamente igual diciendome que compilador usas para poder ayudarte.

De todas formas el objetivo del juego es que primero intentes averiguar un número que el ordenador ha pensado y luego que intente averiguar el número que tu has pensado usando el método de búsqueda binaria, que consiste en acotar el conjunto de números basándose en si es mayor o menor y calcular el valor medio de la cota. Asi que con esto y el código se puede incluso crearse un propio algoritmo en código C a secas.

Saludos.
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com