Logo Studenta

Cuadrado Magico en C

¡Estudia con miles de materiales!

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

Continuar navegando