Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- /**
- * Clase para representar una matriz de enteros, incluida funcionalidad para determinar si una matriz es una cuadrado mágico.
- * @author John Ortiz
- * @version 1.0
- */
- public class AplicacionMatriz1
- {
- /**
- * Matriz de datos
- */
- private int[][] arregloEnteros;
- /**
- * Permite determinar el número de elementos a ingresar.
- */
- public void numeroElementosAInserter()
- {
- InputStreamReader isr = new InputStreamReader( System.in );
- BufferedReader br = new BufferedReader( isr );
- int elementos = 0;
- try
- {
- System.out.print( "Digite el número de elementos a insertar: " );
- elementos = Integer.parseInt( br.readLine() );
- }
- catch( NumberFormatException nfe )
- {
- nfe.printStackTrace();
- }
- catch( IOException ioe )
- {
- ioe.printStackTrace();
- }
- // crea el arreglo de datos
- arregloEnteros = new int[ elementos ][ elementos ];
- } // fin del método numeroElementosAInsertar
- /**
- * Lee los datos para el arreglo desde el teclado introducidos por el usuario de la aplicación.
- */
- public void insertarDatos()
- {
- InputStreamReader isr = new InputStreamReader( System.in );
- BufferedReader br = new BufferedReader( isr );
- int dato = 0;
- try
- {
- for (int i = 0; i < arregloEnteros.length; i++)
- {
- for (int j = 0; j < arregloEnteros[i].length; j++)
- {
- System.out.printf( "Da elemento %d, %d : ", ( i + 1 ), ( j + 1 ) );
- dato = Integer.parseInt( br.readLine() );
- arregloEnteros[ i ][ j ] = dato;
- }
- System.out.println();
- }
- }
- catch( NumberFormatException nfe )
- {
- nfe.printStackTrace();
- }
- catch( IOException ioe )
- {
- ioe.printStackTrace();
- }
- } // fin del método insertarDatos
- public void imprimirArregloDatos()
- {
- System.out.println( "Contenido del arreglo de enteros: \n" );
- for (int i = 0; i < arregloEnteros.length; i++)
- {
- for (int j = 0; j < arregloEnteros[i].length; j++)
- {
- System.out.printf( "\t%s", arregloEnteros[ i ][ j ] );
- } // fin for anidado
- System.out.println();
- } // fin for
- System.out.println();
- }
- /**
- * Comprueba si una matriz es un cuadrado mágico.
- * @return true si es cuadrado mágico, false si no es cuadrado mágico.
- */
- public boolean esCuadradoMagico()
- {
- int[] sumaFilas = new int[ arregloEnteros.length ];
- int[] sumaColumnas = new int[ arregloEnteros[ 0 ].length ];
- int sumaDiagonalDecreciente = 0;
- int sumaDiagonalCreciente = 0;
- for (int i = 0; i < arregloEnteros.length; i++)
- {
- for (int j = 0; j < arregloEnteros[ i ].length; j++)
- {
- sumaFilas[ i ] += arregloEnteros[ i ][ j ];
- if( i == j )
- {
- sumaDiagonalDecreciente += arregloEnteros[ i ][ j ];
- }
- if( j == ( arregloEnteros[ 0 ].length - 1 ) )
- {
- sumaDiagonalCreciente += arregloEnteros[ i ][ j - i ];
- }
- sumaColumnas[ j ] += arregloEnteros[ i ][ j ];
- }
- } // fin for
- // realiza la prueba final
- if( sumaDiagonalCreciente == sumaDiagonalDecreciente )
- {
- for (int i = 0; i < sumaFilas.length; i++)
- {
- if( ( sumaFilas[ i ] == sumaDiagonalCreciente ) &&
- ( sumaColumnas[ i ] == sumaDiagonalCreciente) )
- {
- continue;
- }
- else
- {
- return( false ); // la matriz no es un cuadrado mágico
- }
- } // fin for
- } // fin de if
- else
- {
- return( false );
- }
- return( true );
- } // fin del método esCuadradoMagico
- /**
- * Punto de entrada a la aplicación.
- * @param args Argumentos pasados desde l
- */
- public static void main( String[] args )
- {
- // crea una instancia
- AplicacionMatriz1 appmatriz = new AplicacionMatriz1();
- // especifica el tamaño de la matriz
- appmatriz.numeroElementosAInserter();
- System.out.println();
- // inserta datos en la matriz
- appmatriz.insertarDatos();
- System.out.println();
- // imprime el contenido del arreglo
- appmatriz.imprimirArregloDatos();
- // muestra si la matriz es un cuadrado mágico
- if( appmatriz.esCuadradoMagico() )
- {
- System.out.println( "\n\nLa matriz es un cuadrado mágico." );
- }
- else
- {
- System.out.println( "\n\nLa matriz no es un cuadrado mágico." );
- }
- } // fin del método main.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement