Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Cuadrado Magico Nombre: Jeremy Esau Valenciano Tadeo Fecha: 9-Nov-2021 Se debe imprimir un cuadrado mágico de tamaño M, donde M es un número impar comprendido entre 3 y 11. Un cuadrado mágico esta compuesto de números enteros entre 1 y N, con las siguientes características: la sumas de las filas, columnas, diagonales son iguales, como se ve en el ejemplo adjunto. El método de generación del cuadrado mágico consiste en situar el número 1 en la casilla del centro de la primera fila, el siguiente número se debe situar en la casilla ubicada en la fila anterior (por encima) y en la columna de la derecha. Este proceso se repite hasta colocar los N números. Es importante saber que el cuadrado mágico es cíclico, es decir, la fila anterior (encima) de la primera fila es la última fila y la columna a la derecha de la última es la primera columna. En caso de que un número se debe colocar en una casilla que ya esta ocupada, entonces se elige la casilla que se encuentra debajo (en la siguiente fila, la misma columna) del número que acabamos de ubicar. Código en C #include <stdio.h> #include <stdlib.h> int main() { int n ; //tamaño de la matriz printf("*******Cuadrado Magico******\n"); printf("Digite el numero impar entre 3 y 11: \n"); scanf("%d", &n); int i_ant = 0; int j_ant = 0; int inicio = n / 2; //asignacion de posicion int matriz[n][n]; //crear matriz int temp = 1; //numeros de n hasta n al cuadrado //lenar matriz con ceros primero for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { matriz[i][j] = 0; } } int i = 0; int j = inicio; if (n == 3 || n == 5 || n == 7 || n == 9 || n == 11) { while (temp != (n * n) + 1) { if (matriz[i][j] == 0) { matriz[i][j] = temp; }else{ i = i_ant + 1; j = j_ant; matriz[i][j] = temp; } i_ant = i; j_ant = j; temp++; j++; i--; if (i < 0 && j == n) { i = n - 1; j = 0; }else if (i < 0) { i += n; }else if (j == n) { j = 0; } } printf("El cuadrado magico es: \n"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf(" %3d ", matriz[i][j]); } printf("\n"); } }else{ printf("El numero ingresado no es impar entre 3 y 11 \n"); } } Captura Código Funcionando
Compartir