Tema: Ayuda con C
Ver Mensaje Individual
Antiguo 31/10/2009, 17:00   #8
antoniogas 
Usuario PREMIUM+
 
Avatar de antoniogas
 
Fecha de ingreso: 28/ene/2004
Mensajes: 590
antoniogas es realmente agradableantoniogas es realmente agradableantoniogas es realmente agradableantoniogas es realmente agradable
[quote]/*Codificacion basada en el algoritmo anterior*/

#include <stdio.h>
#include <conio.h>

/*limitar rango ( limita los valores de x al rango [0, N] )*/
//#define lr( x, N )( (x)<0 ? N+(x)%N : ( (x)>=N ? (x)%N : (x) ) )

void main()
{
int cuadrado[7][7],x,y,n,N=7;

printf( "\nCuadrado Magico de orden %ix%i :\n\n", N, N);

/*Se inicia los elementos del cuadrado magico con ceros*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
cuadrado[x][y]=0;
}
}
/*Se aplica el algoritmo general para obtener cuadrados magicos de orden impar*/
for( x=N/2,y=2,n=1; n<=N*N; ) /*se hace N*N iteraciones...*/
{
if(!cuadrado[x][y]) /*si el elemento seleccionado es cero*/
{
cuadrado[x][y] = n++; /*se inserta un número natural */
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1); /*se incrementa x en 1 */
}
}
if ((y-1)<0)
{
y=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
y=(y-1)%N;
}
else
{
y=(y-1);
}
} /*se decrementa y en 1 */
}
else
{
if ((x+1)<0)
{
x=N+(x+1)%N;
}
else
{
if ((x+1)>=N)
{
x=(x+1)%N;
}
else
{
x=(x+1);
}
} /*se decrementa x en 1 */
if ((y-1)<0)
{
y=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
y=(y-1)%N;
}
else
{
y=(y-1);
}
}/*se incrementa y en 2 */
}

}
/*se imprime el cuadrado magico en pantalla*/
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("\n");
for(x=0;x<N;x++)
{
getch();
printf("%4i",cuadrado[x][y]);
}
}
}
printf("\n\n Suma = %i\n\n",(N*(N*N+1))/2); /*se imprime la suma*/

getch();
}[/quote]

Ya lo he cambiado y sigue igual.
antoniogas está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir