Tema: Ayuda con C
Ver Mensaje Individual
Antiguo 31/10/2009, 16:56   #7
Coke-OFF
Invitado
 
Fecha de ingreso: 08/may/2007
Mensajes: 2.152
Coke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foroCoke-OFF A este paso se convertirá en leyenda de este foro
[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)
{
[B]y[/B]=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
[B]y[/B]=(y-1)%N;
}
else
{
[B]y[/B]=(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)
{
[B]y[/B]=N+(y-1)%N;
}
else
{
if ((y-1)>=N)
{
[B]y[/B]=(y-1)%N;
}
else
{
[B]y[/B]=(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]

prueba a cambiar las negritas...tu tienes x, pon y

Coke.

Última edición por Coke-OFF; 31/10/2009 a las 17:02.
Coke-OFF está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir