Tema: Ayuda con C
Ver Mensaje Individual
Antiguo 31/10/2009, 13:31   #1
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
Ayuda con C

Hola,
En clase me han mandado programar un cuadrado mágico en C, el cuadrado mágico deberia de ser de tal forma que vaya en la dirección noroeste y si se "choca" suba y siga dicha dirección, el código que encontré lo hacia de otra manera, pero eso ya lo he solucionado, mi problema es que tiene un define quiero pasarlo a codigo y quitar ese define, pero no se como hacerlo, me gustaria pasarlo como "if...etc"

El cubo mágico deberia ser:

46 15 40 9 34 3 28
21 39 8 33 2 27 45
38 14 32 1 26 44 20
13 31 7 25 43 19 37
30 6 24 49 18 36 12
5 23 48 17 42 11 29
22 47 16 41 10 35 4

Os dejo aquí el código:

[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 */
x=lr(x+1,N); /*se incrementa x en 1 */
y=lr(y-1,N); /*se decrementa y en 1 */
}
else
{
x=lr(x-1,N); /*se decrementa x en 1 */
y=lr(y-1,N); /*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]

Haber si me podeis ayudar.

Muchas gracias y salu2

Última edición por antoniogas; 31/10/2009 a las 13:34.
antoniogas está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE