Hola, tengo un problema con un cuadrado mágico en C. Creo que el planteamiento es correcto pero hay algo que no estoy haciendo bien,pasandole el numero 3 me tendria que poner el dos en la esquina inferior derecha,el tres a la izquierda en la fila central,el cuatro debajo del tres,etc.
Pongo el codigo.Saludos
Código:
#include <conio.h>
#include <stdio.h>
main ()
{
int na;
printf("Introduzca un número");
scanf("%d",&na);
array(na);
getch();
}
//----------------
array(int na)
{
int t[na][na],f,c,a,conta;
for (f=0;f<na;f++) //inicializo el vector
{
for (c=0;c<na;c++)
{
t[f][c]=0;
}
}
c=(na-1)/2;
for(conta=2;conta<=na*na;conta++) // se repite el bucle hasta que el contador sea igual al número insertado por 2
{
if(conta<=na) //si el contador es menor o igual que el numero insertado fila anterior siguiente columna
{
f=f-1;
c=c+1;
t[f][c]=conta;
}
else if(conta>na &&(conta-1)%na!=0)//si el contador es mayor que el numero insertado
{ f=f-1; //y restandole 1 es no es multiplo de 3 fila anterior siguiente columna
c=c+1;
t[f][c]=conta;
}
else if(conta>na &&(conta-1)%na==0)//si el contador es mayor que el numero insertado
{ //y restandole 1 es multiplo de 3 siguiente fila misma columna
f=f+1;
t[f][c]=conta;
}
}
for (f=0;f<na;f++)//se muestra el array
{
for (c=0;c<na;c++)
{
a=(na-1)/2; //para que el 1 estè arriba y en el centro
t[0][a]=1;
printf("%d",t[f][c]);
}
printf("\n");
}
}