Autor Tema: Magia!! el programa adivinará el número seleccionado por el usuario  (Leído 3108 veces)

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

preth00nker

  • *
  • Mensajes: 130
  • Liked: 1
  • mov [MyBrain], IA
Bine, hoy es sábado, y aún cuando hay ropa que lavar y trabajo por hacer pues he optado por gastar un ratito programando alguna curiosidad jeje.
  El siguiente programa ofrece demuestra que un ordenador puede ser muy inteligente, ya que desplegando una lista de números donde el usuario debe memorizar UNO ESPECIFICO, el software preguntará en que columna se encuentra el número memorizado  y reordenará la lista de números(el número memorizado por el usuario NO DEBE variar durante las 3 veces que se ordenen los datos), una vez transcurridos los 3 tiempos el programa adivinará el número seleccionado por el usuarios.

para compilar recomiendo G++ o Dev C++ (windows o linux es indistinto).

Código: [Seleccionar]
/*=======================================================================
=
=                 Coded by preth00nker [at] gmail [dot] com
=                      Yerena García Irving Christian
= Writen with C ANSI (using some Standard functions from C++)
=                        Using M3xican skill / Released under GPL licence
=
=        [+] Explicación: Apareceran 3 columnas con números, el usuario deberá aprender uno de esos números (el que desee),
el programa preguntará en que columna se encuentra el número seleccionado, el usuario proporciona la columna
donde se localice el número seleccionado (1, 2 o 3), el programa ordenará y desplegará la lista de números
nuevamente, repita los pasos mencionados anteriormente SIN CAMBIAR EL NUMERO SELECCIONADO AL INICIO.
=
= Matriz de ejemplo
=   1    2       3
=        -------------------
= 0| 1    2       3
= 1| 4    5       6
= 2| 7    8       9
= 3| 10   11      12
= 4| 13   14      15
= 5| 16   17      18
= 6| 19   20      21
= 7| 22   23      24
= 8| 25   26      27
=
=========================================================================*/

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#define maxI 9
#define maxJ 3

int mat[maxI][maxJ];
int ans=0;
using namespace std;


void step(){
long long i;
for(i=0;i<50000000;i++);

}

void fillMat(){
int i,j,x;
for (x=0;x<27;x++){
     i=(int)floor((float)(x/3));
j=(x%3);
mat[i][j] = x+1;
}
}

void showMat(){
int i,j,x;
for (x=0;x<27;x++){
i=(int)floor((float)(x/3));
j=(x%3);
if (j==1 || j==2)
cout<<"\t";
step();
cout<<mat[i][j];

if(j==2)
cout<<endl;
}

}

void sortMat(int currColumn){
//copy the matrix

int tmpMat[maxI][maxJ],i,j,it,jt,ir,jr;
for(int x=0;x<27;x++){
i=(int)floor((float)(x/3));
j=(x%3);
tmpMat[i][j]=mat[i][j];
}

switch(currColumn){
case 1:
for(int x=0;x<27;x++){
it=(int)floor((float)(x/3));
jt=(x%3);
ir=(x%9);
if(x<9){
jr=1;
}else if(x>=9 && x<18){
jr=0;
}else{
jr=2;
}
mat[it][jt]=tmpMat[ir][jr];

}

break;

case 2:

for(int x=0;x<27;x++){
it=(int)floor((float)(x/3));
jt=(x%3);
ir=(x%9);

if(x<9){
jr=2;
}else if(x>=9 && x<18){
jr=1;
}else{
jr=0;
}
mat[it][jt]=tmpMat[ir][jr];

}

break;

case 3:

for(int x=0;x<27;x++){
it=(int)floor((float)(x/3));
jt=(x%3);
ir=(x%9);

if(x<9){
jr=0;
}else if(x>=9 && x<18){
jr=2;
}else{
jr=1;
}
mat[it][jt]=tmpMat[ir][jr];

}

break;

default:
cout<<"wrong argument, please, try again!";
exit(0);
break;
}
}


int main(){
int currColumn;
string anything;

fillMat();
cout<<"Please choose a number and input the column number(1,2,3). Ready? (Y/N)"<<endl;
cin>>anything;
if (anything=="N" || anything=="n")
return 0;

for(int i=0;i<3;i++){
showMat();
cout<<"Column?:";
cin>>currColumn;
sortMat(currColumn);
if(i!=2)
cout<<"do it again please!"<<endl;
}
ans=mat[4][1];
cout<<"Your number was: "<<ans<<" I'M AWESOME!. "<<endl;
}

espero se diviertan un ratito con el programa y cualquier duda quedo a su disposición.
Saludos a todos y agradecimientos a Nery de jesus :).
« Última Modificación: marzo 06, 2011, 08:00:18 pm por hkm »
Mov MyHeart, 4C6F7665h!!!

hkm

  • Moderador
  • *
  • Mensajes: 1245
  • Liked: 292
    • Hakim.Ws
Re: Magia!! el programa adivinará el número seleccionado por el usuario
« Respuesta #1 : marzo 06, 2011, 08:00:49 pm »
Puede sacar un conejo de un sombrero o cortar a una chica a la mitad? xD

Buen code, preth, saludos!

dOlPhIn

  • ***
  • Mensajes: 264
  • Liked: 13
  • Visiten: http://www.xbot.es/ezkybel/
    • Ezkybel Electronics
Re: Magia!! el programa adivinará el número seleccionado por el usuario
« Respuesta #2 : marzo 07, 2011, 10:36:50 am »
Jajaja ese programa esta muy bueno, gracias por el aporte, me recordo cuando estaba pequeño y lo hacia con cartas, y cada vez que iba a casa de cualquiera de mis tios cargaba con mi mazo de cartas y les hacia el truco, y me creia mago :D. Sin duda alguna es una de las cosas que le voy a enseñar a mi hija.
 Que tiempos aquellos!! :'(

como sugerencia agreguen getch(); en el main para ver el resultado de la adivinanza del progama

int main(){
   int currColumn;
   string anything;

   fillMat();
   cout<<"Please choose a number and input the column number(1,2,3). Ready? (Y/N)"<<endl;
   cin>>anything;
   if (anything=="N" || anything=="n")
      return 0;

   for(int i=0;i<3;i++){
      showMat();
      cout<<"Column?:";
      cin>>currColumn;
      sortMat(currColumn);
      if(i!=2)
         cout<<"do it again please!"<<endl;
   }
   ans=mat[4][1];
   cout<<"Your number was: "<<ans<<" I'M AWESOME!. "<<endl;
   getch();
}

e incluyan el           #include <conio.h>
al principio del programa:

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include <conio.h>
#include<math.h>
#define maxI 9
#define maxJ 3

Saludos

Pd. les adjunto el .exe para los que no tengan los compiladores
« Última Modificación: marzo 07, 2011, 10:52:13 am por dOlPhIn »
"¡¡¡ Mis Hijas y mi Esposa son mi mayor motivacion.. Las amo !!!"

nitr0us

  • ***
  • Mensajes: 359
  • Liked: 100
  • #rm -fr /
    • http://www.brainoverflow.org
Re: Magia!! el programa adivinará el número seleccionado por el usuario
« Respuesta #3 : marzo 07, 2011, 01:17:45 pm »
Jajaj aquí uno más que también lo hacía con cartas. También lo programé, pero la matriz era cuadrada, es decir, mismo número de filas y columnas.

Entonces, el truco era, poner las cartas y pedir que dijera en cual columna estaba. Ahora bien, todas las cartas de la columna que seleccionaran, se ponían como 1er fila y se preguntaba de nuevo en que columna estaba.

Ejemplo:

5   9   12
8   3    2
1   20  6

Así como tal, yo selecciono el 20 y digo ESTÁ EN LA COLUMNA 2. Se levantan las cartas (con efectos en la mano y demás para que crean que va en random() jejej :D), y se ponen de la siguiente forma (sabiendo que está en la columna 2).

9  3    20
x   x    x
x   x    x

Ahora yo digo que está en la columna 3 y listo, es el 20 !!

Saludos.

MeTaLeRo

  • Mamon Member xD
  • **
  • Mensajes: 164
  • Liked: 1
  • Life it seems will fade away
    • Comunidad underground Rules
Re: Magia!! el programa adivinará el número seleccionado por el usuario
« Respuesta #4 : marzo 09, 2011, 12:00:01 am »
buen codigo felicidades, tal vez use una parte del mismo para una demostracion en la escuela o tal vez lo use todo me gusto tu forma de codificar y claro te dare el credito en la presentacion
No soy mala hierba
sino hierba en mal lugar
cabeza de calabaza
en martes de carnaval ...
-------------------------------------------------
Bunbury
-------------------------------------------------