Yesiid -4 Newbie Poster
#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("%d\t",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;
}
Salem commented: 5 years late, no code tags, -4