SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: templalbo en Viernes 12 de Junio de 2009, 04:42
-
Hola a todos!!!
les escribo porque necesito ayuda con un programa en C el cual muestra los posibles movimientos de un alfil en un ajedrez a partir de una posicion, la idea es basicamente que el programa solicite al usuario una posicion en el tablero de ajedrez como un par de numeros (filas y columnas entre 1 y 8) para ubicar el alfil. Con esto ahí que dibujar el tablero, con filas y columnas de 1 a 8 y con la posicion del alfil identificada con la letra 'A', y cada posible posicion marcada con un '*'.
aqui tengo el codigo fuente que hice
#include<stdio.h>
main()
{
int i,j,a,b,m;
char tabla[8][8];
printf("Ingrese la fila:n");
scanf("%d",&a);
printf("Ingrese la columna:n");
scanf("%d",&b);
printf("nn+--+--+--+--+--+--+--+--+n");
for(i=1;i<=8;i++)
{
m=a-i;
for(j=1;j<=8;j++)
{
if (a==i && b==j)
{
tabla[j]='A';
}
else
{
tabla[j]=' ';
}
printf("| %c",tabla[j]);
if (j+m==b || j-m==b)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("|n");
printf("+--+--+--+--+--+--+--+--+n");
}
getc(stdin);
getc(stdin);
}
el programa me funciona pero al momente de mostra los movimientos del alfil se modifica, si alguien puede revisarlo y ver en que me equivoco porfavor ayudeme
de antemano muchas gracias
PD: El programa esta hecho en Dev-C++
-
Usa las etiquetas de código.
-
No se si este es tu problema, pero los arrays en c, se inician desde 0 asi que donde tienes
for(i=1;i<=8;i++) deberias poner for(i=0;i<8;i++) y poner i+1 donde sea necesario o en su defecto cuando llames a tabla[j] reemplaz por tabla[i-1][j-1] para que empiece desde 0.
Espero que te ayude.