| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
huguidora
Registrado: 24 Ago 2007 Mensajes: 4 Ubicación: Paraguay
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 10/09/2007 11:22 am | | | Título: |
| Perdona. Es verdad que falta la condición de salida .
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 | |
 |
|
|