elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Algoritmo movimiento caballo ajedrez
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Algoritmo movimiento caballo ajedrez  (Leído 26,316 veces)
DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Algoritmo movimiento caballo ajedrez
« en: 22 Julio 2009, 22:19 pm »

Bueno estoy haciendo un programa que me diga que combinaciones puede hacer un caballo en un tablero vacio segun unas coordenadas. Pero me falla por ejemplo al dar las coordenadas (6,2), os dejo el code a ver si me lo podéis arreglar y de paso si queréis optimizarlo un poquito porfavor.
Gracias.

PD: Seguro que es alguna tontería ya veréis pero no consigo verla.

Código
  1. /*
  2. Autor: El Aprendiz
  3. Fecha: 22-07-09
  4. Version: 1.0
  5. Resumen: Programa que calcula los posibles movimientos
  6. de un caballo en un tablero de ajedrez vacio y imprime
  7. las posiciones posibles en pantalla.
  8. */
  9. #include <iostream>
  10. using namespace std;
  11. void caballo(int,int);
  12. int main()
  13. {
  14.      int x,y;
  15.      cout<<"Introduzca pos. x: "; cin>>x;
  16.      cout<<endl<<"Introduzca pos. y: "; cin>>y;
  17.      cout<<endl; caballo(x,y); cout<<endl;
  18.      system("pause");
  19. }
  20. void caballo(int x,int y)
  21. {
  22.     int t=0;
  23.     if (x-2>=0 && y-1<=7) { cout<<++t<<" - ("<<x-2<<","<<y-1<<")"<<endl; }
  24.     if (x-2>=0 && y+1<=7) { cout<<++t<<" - ("<<x-2<<","<<y+1<<")"<<endl; }
  25.     if (x-1>=0 && y+2<=7) { cout<<++t<<" - ("<<x-1<<","<<y+2<<")"<<endl; }
  26.     if (x+1>=0 && y+2<=7) { cout<<++t<<" - ("<<x+1<<","<<y+2<<")"<<endl; }
  27.     if (x+2>=0 && y+1<=7) { cout<<++t<<" - ("<<x+2<<","<<y+1<<")"<<endl; }
  28.     if (x+2>=0 && y-1<=7) { cout<<++t<<" - ("<<x+2<<","<<y-1<<")"<<endl; }
  29.     if (x+1>=0 && y-2<=7) { cout<<++t<<" - ("<<x+1<<","<<y-2<<")"<<endl; }
  30.     if (x-1>=0 && y-2<=7) { cout<<++t<<" - ("<<x-1<<","<<y-2<<")"<<endl; }
  31. }
  32.  


En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
Eliptico

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Re: Algoritmo movimiento caballo ajedrez
« Respuesta #1 en: 22 Julio 2009, 23:21 pm »

¡¡¡Buenas!!!

Tienes que asegurarte de que ambas, x e y, coordenadas estan en el rango correcto. Las comprobaciones que has hecho no son completas.

¡¡¡Un saludo!!!


En línea

DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: Algoritmo movimiento caballo ajedrez
« Respuesta #2 en: 22 Julio 2009, 23:38 pm »

Eso es ya cuando optimizo, yo me refiero en que algo falla en algoritmo.
En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
Eliptico

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Re: Algoritmo movimiento caballo ajedrez
« Respuesta #3 en: 23 Julio 2009, 14:55 pm »

Pues a eso me refiero.

Que te aseguras de que x sea mayor o igual que cero, y de que y sea menor que 8, pero ambas coordenadas deben estar en el tablero, uego x tambien debera ser menor que ocho e y mayor o igual que cero.

Repasa el codigo.
En línea

Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
Re: Algoritmo movimiento caballo ajedrez
« Respuesta #4 en: 23 Julio 2009, 16:14 pm »

Deberías comprobar que al hacer la resta siga quedando en un rango >= 0.

Porque si metes por ejemplo las coordenadas (1,1) está claro que el caballo se puede mover, pero tu programa te va a decir que se puede mover para todos los sitios, ya que resta 1-2=-1, que es <=7, pero no >=0.

También lo tienes que tener en cuenta al sumar. Si consideramos la primera coordenada (0,0), entonces la última es (7,7), así que 6+2=8, que no está dentro del rango. Tienes que comprobar que (x+2)<=7.

Saludos.
En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: Algoritmo movimiento caballo ajedrez
« Respuesta #5 en: 24 Julio 2009, 13:19 pm »

Vaya fallo más tonto lol xD No lo veía, gracias, os dejo el code terminado:

Código
  1. /*Autor: El Aprendiz
  2. Fecha: 22-07-09
  3. Version: 1.0
  4. Resumen: Programa que calcula los posibles movimientos
  5. de un caballo en un tablero de ajedrez vacio y imprime
  6. las posiciones posibles en pantalla.
  7. */
  8. #include <iostream>
  9. using namespace std;
  10. void caballo(int,int);
  11. int main()
  12. {
  13.      int x,y;
  14.      cout<<"Introduzca pos. x: "; cin>>x;
  15.      cout<<endl<<"Introduzca pos. y: "; cin>>y;
  16.      cout<<endl; caballo(x,y); cout<<endl;
  17.      system("pause");
  18. }
  19. void caballo(int x,int y)
  20. {
  21.     int t=0;
  22.     if ((x-2>=0 && x-2<=7) && (y-1>=0 && y-1<=7)) { cout<<++t<<" - ("<<x-2<<","<<y-1<<")"<<endl; }
  23.     if ((x-2>=0 && x-2<=7) && (y+1>=0 && y+1<=7)) { cout<<++t<<" - ("<<x-2<<","<<y+1<<")"<<endl; }
  24.     if ((x-1>=0 && x-1<=7) && (y+2>=0 && y+2<=7)) { cout<<++t<<" - ("<<x-1<<","<<y+2<<")"<<endl; }
  25.     if ((x+1>=0 && x+1<=7) && (y+1>=0 && y+2<=7)) { cout<<++t<<" - ("<<x+1<<","<<y+2<<")"<<endl; }
  26.     if ((x+2>=0 && x+2<=7) && (y+1>=0 && y+1<=7)) { cout<<++t<<" - ("<<x+2<<","<<y+1<<")"<<endl; }
  27.     if ((x+2>=0 && x+2<=7) && (y-1>=0 && y-1<=7)) { cout<<++t<<" - ("<<x+2<<","<<y-1<<")"<<endl; }
  28.     if ((x+1>=0 && x+1<=7) && (y-2>=0 && y-2<=7)) { cout<<++t<<" - ("<<x+1<<","<<y-2<<")"<<endl; }
  29.     if ((x-1>=0 && x-1<=7) && (y-2>=0 && y-2<=7)) { cout<<++t<<" - ("<<x-1<<","<<y-2<<")"<<endl; }
  30. }
  31.  
  32.  
En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
denix

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Algoritmo movimiento caballo ajedrez
« Respuesta #6 en: 28 Noviembre 2011, 22:27 pm »

.
« Última modificación: 29 Noviembre 2011, 01:39 am por denix » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con caballo de ajedrez!!! « 1 2 »
Programación C/C++
danic++ 18 13,847 Último mensaje 8 Diciembre 2010, 17:44 pm
por Littlehorse
Caballo Ajedrez JAVA
Ejercicios
Kacoae 1 5,569 Último mensaje 17 Mayo 2013, 06:41 am
por Kacoae
Caballo del Ajedrez en JAVA
Ejercicios
Kacoae 2 17,836 Último mensaje 24 Febrero 2014, 14:47 pm
por gordo23
Pisar todas las fichas de un tablero de ajedrez con caballo[SOLUCIONADO]
Scripting
SARGE553413 1 3,124 Último mensaje 8 Junio 2014, 19:57 pm
por SARGE553413
matriz de movimiento del caballo en c++
Programación C/C++
Arielcv87 5 8,590 Último mensaje 25 Abril 2020, 00:05 am
por fefeelcrack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines