#include <stdio.h>
char *matriz;
char n;
int cuad;
void guardarValor(lin, col, valor) {
int pos = ((lin-1)*n) + (col-1);
matriz[pos] = valor;
}
void imprimeMatriz() {
int cont;
for(cont=1;cont<=cuad;cont++) {
printf("%dt",matriz[cont-1]);
if ( cont%n == 0 ) printf("n");
}
}
int main() {
int cont, posL, posC;
n = 5;
cuad = n*n;
matriz = (char *)malloc(cuad*sizeof(char)); //reservar memoria
for(cont=0;cont<cuad;cont++) matriz[cont] = 0; //inicializar matriz
cont = 1;
posL = 1; //primer linea
posC = n/2+1; //celda intermedia
while ( cont<=cuad ) {
guardarValor(posL,posC,cont);
if ( cont%n == 0 ) { //si el numero es multiplo de n
posL++; //unicamente aumentar la linea
} else {
posL--;
//si es menor de la primer linea
//escribir numero en la ultima linea
if ( posL < 1 ) posL = n;
posC++;
//si es mayor que la ultima columna
//escribir numero en la primer columna
if ( posC > n ) posC = 1;
}
cont++;
}
imprimeMatriz();
free(matriz);
return 0;
}