// https://es.wikipedia.org/wiki/Cuadrado_m%C3%A1gico
#include <stdio.h>

#define MAX	20

void main() {
	int m[MAX][MAX]={0}; // Inicialitza tota la matriu a 0
	int mida;
	int num, f, c, f2,c2;

	printf("Intro mida cuadrat magic: ");
	scanf("%d", &mida);
	f=0;
	c=mida/2;
	m[f][c] = 1;
	for(num=2; num<=mida*mida; num++) {
		f2 = f-1;
		if (f2 == -1) {
			f2 = mida - 1;
		}
		c2 = c+1;
		if (c2 == mida) {
			c2 = 0;
		}
		if (m[f2][c2] != 0) {
			f2 = f+1;
			c2 = c;
			if (f2 == mida) {
				f2 = 0;
			}
		}
		f = f2;
		c = c2;
		m[f][c] = num;
	}
	for(f=0;f<mida;f++) {
		for(c=0;c<mida;c++) {
			printf("%4d", m[f][c]);
		}
		printf("\n");
	}
}
