Escolar Documentos
Profissional Documentos
Cultura Documentos
CUADRO MAGICO
TALLER DE TOPICOS DE
PROGRAMACION
Mane Rex
MICROSOFT
import javax.swing.*;
public class CuadradoMagico
{
static void lista(int[][]x,int y,int z)
{
String cad = "
Cuadro Magico!!!!!\n";
int k=0;
for (int i=0;i<z;i++)
{
for (int j=0;j<z;j++)
{
cad+="
"+x[i+(y/2)][j+(y/2)]+"";
}
cad+="\n";
}
ES.escribe(cad);
}
static void lista2(int[][]x)
{
String cad = "
Cuadro Magico!!!!!\n";
int k=0;
for (int i=0;i<x.length;i++)
{
for (int j=0;j<x[0].length;j++)
{
cad+="
"+x[i][j]+"";
}
cad+="\n";
}
ES.escribe(cad);
}
public static void main(String [] args )
{
int rep;
do{
int tam;
ES.escribe("Programa para hacer un cuadro
magico.");
tam = ES.entero("Ingresa el tamao del cuadro
magico, tamao = ");
while ((tam%4)!=0 || tam==1)
{
if((tam%2)!=0){
break;}
ES.escribe("Solo puedes crear cuadros
magicos impares, o multiplos de 4!!!");
tam = ES.entero("Ingresa el tamao del
cuadro magico, tamao = ");
}
int par,n,tamFic;
if ((tam%4)==0)
par = 1;//multiplo de 4 para 1
else
par = 2;//impar para 2
int [][]magico;
switch (par)
{
case 1:
magico = new int [tam][tam];int
cont=1;int finMag=tam/4;
for (int i=0;i<magico.length;i++)
for(int j=0;j<magico.length;j++)
{
magico[i][j]=cont;
cont = cont+1;
}
cont=1;
for(int i=(tam-1);i>=0;i--){
for(int j=(tam-1);j>=0;j--)
{
if (i >= (tam-finMag)){
if ((j >= finMag) && (j < (tam-
finMag))){
magico[i][j] = cont;
}
}
if ((i >= finMag) && (i < (tamfinMag))){
if ((j < finMag) || (j >= (tamfinMag))){
magico[i][j] = cont;
}
}
if (i < finMag){
if ((j >= finMag) && (j < (tamfinMag))){
magico[i][j] = cont;
}
}
cont=cont+1;
}
}
lista2(magico);
break;
case 2:
n = (tam/2)*2;
tamFic=tam*tam;
magico=new int[tam + n][tam + n];int
filaI; int colI;int centro=tam-1;int contador=0;
filaI=0;colI=centro;
while (contador<tamFic)
{
for (int i=0;i<tam;i++)
{
magico[filaI+i][colI+i]=contador +
1;
contador = contador +1;
}
filaI = filaI+1;
colI=colI-1;
}
filaI=0;colI=centro;
for (int i = 0; i < ((n/2)+1);i++){
for (int j = 0; j < ((i+1)*2); j = j +
2){
magico[filaI+tam][colI+j] =
magico[filaI][colI+j];
}
filaI = filaI+1;
colI=colI-1;
}
filaI=(tam+n-1);colI=centro;
for (int i = 0; i < ((n/2)+1);i++){
for (int j = 0; j < ((i+1)*2); j = j +
2){
magico[filaI-tam][colI+j] =
magico[filaI][colI+j];
}
filaI = filaI-1;
colI=colI-1;
}
filaI = centro;colI = tam+ n - 1;
for (int i = 0; i < ((n/2)+1);i++){
for (int j = 0; j < ((i+1)*2); j = j +
2){
magico[filaI+j][colI-tam] =
magico[filaI+j][colI];
}
filaI = filaI-1;;
colI=colI-1;
}
filaI=centro;colI=0;
for (int i = 0; i < ((n/2)+1);i++){
for (int j = 0; j < ((i+1)*2); j = j +
2){
magico[filaI+j][colI+tam] =
magico[filaI+j][colI];
}
filaI=filaI-1;
colI=colI+1;
}
lista(magico,n,tam);
break;
}
//REPETICION
String otro =
JOptionPane.showInputDialog("Quieres tratar una vez mas, [1
= si] [2 = no]");
rep = (int)Integer.parseInt(otro);
while (rep < 1 || rep > 2)
{
otro = JOptionPane.showInputDialog("Solo, [1
= si] [2 = no]");
rep = (int)Integer.parseInt(otro);
}
}while (rep == 1);
}
}
Mtodo de lectura para la creacin del cuadro mgico para facilitar el ingreso y ordenamiento
de los nmeros.
import javax.swing.*;
public class ES
{
static String leer(String cad)
{
return JOptionPane.showInputDialog(cad);
}
static void escribe(String cad)
{
JOptionPane.showMessageDialog(null,cad);
}
static double doble(String t)
{
double x=0;
boolean b = true;
do{
try{
x = (double)(Double.parseDouble(leer(t)));
b=true;
}
catch (Exception e)
{
escribe("Te dije numero"+e);
b = false;
}
}while (b == false);
return x;
}
static int entero (String y)
{
int x=0;
boolean b = true;
do{
try{
x = (int)(Integer.parseInt(leer(y)));
b=true;
}
catch (Exception e)
{
escribe("Te dije numero entero"+e);
b = false;
}
}while (!b);
return x;
}
}
Depuracin
y Pruebas
Muestra un cuadro de dialogo con un botn aceptar para crear un cuadro mgico
A continuacin muestra otro cuadro de dialogo preguntado si quiero crear otro cuadro mgico
o no
En este caso se ingres el 1 refiriendo que si quiero crear otro cuadro mgico
Se da aceptar
Aqu realice una prueba para conocer cmo responde el programa ante estos datos se le
ingreso el nmero 6 que no cumple con la regla de ser un nmero impar o mltiplo de 4.
El resultado es que el programa me da un aviso de que el nmero que ingrese no cumple con
la regla.
Documentacin
La intencin principal es que este programa sea creador de cuadros mgicos ingresando datos
enteros cumpliendo con la regla de que el nmero sea impar o mltiplo de 4 para no tener
ninguna complicacin al momento de crear un cuadro mgico.
Lo importante de este programa es dar comodidad visual al usuario con un interfaz grfico
donde tenga la facilidad de entender el proceso de creacin de cuadros mgicos con algunos
avisos y recomendaciones para no tener ningn error en ello.
El programa fue construido a base del lenguaje en java ya que brinda la facilidad de poder
codificar compilar y correr el programa conociendo as sus errores y aciertos, asegurando de
que el programa cumple con lo establecido y requerimientos.