#include #include #define MIN 5 #define MAX 51 int main(void) { while (1) { int n; printf("\nInforme o tamanho da matriz\n"); printf("Apenas números ímpares entre %d e %d\n", MIN, MAX); printf("(%d para encerrar): ", EOF); scanf("%d", &n); if (n == EOF) { break; } if (n < MIN || n > MAX || n % 2 == 0) { printf("Número inválido!\n"); continue; } int i, j; int m[n][n]; //define zeros... for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { m[i][j] = 0; } } //define uns... int t = n / 3; for (i = t; i < n-t; i++) { for (j = t; j < n-t; j++) { m[i][j] = 1; } } //define diagonais... for (i = 0, j = 0; i < n; i++, j++) { if (m[i][j] == 0) { m[i][j] = 2; //principal m[i][n-1-j] = 3; //secundária } } int meio = n / 2; m[meio][meio] = 4; //imprime... printf("\n"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ", m[i][j]); } printf("\n"); } printf("\n"); } return EXIT_SUCCESS; }