Advertisement
Fhernd

AplicacionMatriz1.java

Jul 23rd, 2012
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.33 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. /**
  6.  * Clase para representar una matriz de enteros, incluida funcionalidad para determinar si una matriz es una cuadrado mágico.
  7.  * @author John Ortiz
  8.  * @version 1.0
  9.  */
  10. public class AplicacionMatriz1
  11. {
  12.     /**
  13.      * Matriz de datos
  14.      */
  15.     private int[][] arregloEnteros;
  16.    
  17.     /**
  18.      * Permite determinar el número de elementos a ingresar.
  19.      */
  20.     public void numeroElementosAInserter()
  21.     {
  22.         InputStreamReader isr = new InputStreamReader( System.in );
  23.        
  24.         BufferedReader br = new BufferedReader( isr );
  25.        
  26.         int elementos = 0;
  27.        
  28.         try
  29.         {
  30.             System.out.print( "Digite el número de elementos a insertar: " );
  31.             elementos = Integer.parseInt( br.readLine() );
  32.         }
  33.         catch( NumberFormatException nfe )
  34.         {
  35.             nfe.printStackTrace();
  36.         }
  37.         catch( IOException ioe )
  38.         {
  39.             ioe.printStackTrace();
  40.         }
  41.        
  42.         // crea el arreglo de datos
  43.         arregloEnteros = new int[ elementos ][ elementos ];
  44.     } // fin del método numeroElementosAInsertar
  45.    
  46.     /**
  47.      * Lee los datos para el arreglo desde el teclado introducidos por el usuario de la aplicación.
  48.      */
  49.     public void insertarDatos()
  50.     {
  51.         InputStreamReader isr = new InputStreamReader( System.in );
  52.         BufferedReader br = new BufferedReader( isr );
  53.        
  54.         int dato = 0;
  55.        
  56.         try
  57.         {
  58.             for (int i = 0; i < arregloEnteros.length; i++)
  59.             {
  60.                 for (int j = 0; j < arregloEnteros[i].length; j++)
  61.                 {
  62.                     System.out.printf( "Da elemento %d, %d : ", ( i + 1 ), ( j + 1 ) );
  63.                     dato = Integer.parseInt( br.readLine() );
  64.                    
  65.                     arregloEnteros[ i ][ j ] = dato;
  66.                 }
  67.                 System.out.println();
  68.             }
  69.         }
  70.         catch( NumberFormatException nfe )
  71.         {
  72.             nfe.printStackTrace();
  73.         }
  74.         catch( IOException ioe )
  75.         {
  76.             ioe.printStackTrace();
  77.         }
  78.     } // fin del método insertarDatos
  79.    
  80.     public void imprimirArregloDatos()
  81.     {
  82.         System.out.println( "Contenido del arreglo de enteros: \n" );
  83.        
  84.         for (int i = 0; i < arregloEnteros.length; i++)
  85.         {
  86.             for (int j = 0; j < arregloEnteros[i].length; j++)
  87.             {
  88.                 System.out.printf( "\t%s", arregloEnteros[ i ][ j ] );
  89.             } // fin for anidado
  90.             System.out.println();
  91.         } // fin for
  92.        
  93.         System.out.println();
  94.     }
  95.    
  96.     /**
  97.      * Comprueba si una matriz es un cuadrado mágico.
  98.      * @return true si es cuadrado mágico, false si no es cuadrado mágico.
  99.      */
  100.     public boolean esCuadradoMagico()
  101.     {  
  102.         int[] sumaFilas = new int[ arregloEnteros.length ];
  103.         int[] sumaColumnas = new int[ arregloEnteros[ 0 ].length ];
  104.         int sumaDiagonalDecreciente = 0;
  105.         int sumaDiagonalCreciente = 0;
  106.        
  107.         for (int i = 0; i < arregloEnteros.length; i++)
  108.         {
  109.             for (int j = 0; j < arregloEnteros[ i ].length; j++)
  110.             {
  111.                 sumaFilas[ i ] += arregloEnteros[ i ][ j ];
  112.                
  113.                 if( i == j )
  114.                 {
  115.                     sumaDiagonalDecreciente += arregloEnteros[ i ][ j ];
  116.                 }
  117.                 if( j == ( arregloEnteros[ 0 ].length - 1 ) )
  118.                 {
  119.                     sumaDiagonalCreciente += arregloEnteros[ i ][ j - i ];
  120.                 }
  121.                
  122.                 sumaColumnas[ j ] += arregloEnteros[ i ][ j ];
  123.             }
  124.         } // fin for
  125.        
  126.         // realiza la prueba final
  127.         if( sumaDiagonalCreciente == sumaDiagonalDecreciente )
  128.         {
  129.             for (int i = 0; i < sumaFilas.length; i++)
  130.             {
  131.                 if( ( sumaFilas[ i ] == sumaDiagonalCreciente ) &&
  132.                     ( sumaColumnas[ i ] == sumaDiagonalCreciente) )
  133.                 {
  134.                     continue;
  135.                 }
  136.                 else
  137.                 {
  138.                     return( false ); // la matriz no es un cuadrado mágico
  139.                 }
  140.             } // fin for
  141.         } // fin de if
  142.         else
  143.         {
  144.             return( false );
  145.         }
  146.        
  147.         return( true );
  148.     } // fin del método esCuadradoMagico
  149.    
  150.     /**
  151.      * Punto de entrada a la aplicación.
  152.      * @param args Argumentos pasados desde l
  153.      */
  154.     public static void main( String[] args )
  155.     {
  156.         // crea una instancia
  157.         AplicacionMatriz1 appmatriz = new AplicacionMatriz1();
  158.        
  159.         // especifica el tamaño de la matriz
  160.         appmatriz.numeroElementosAInserter();
  161.        
  162.         System.out.println();
  163.        
  164.         // inserta datos en la matriz
  165.         appmatriz.insertarDatos();
  166.        
  167.         System.out.println();
  168.        
  169.         // imprime el contenido del arreglo
  170.         appmatriz.imprimirArregloDatos();
  171.        
  172.         // muestra si la matriz es un cuadrado mágico
  173.         if( appmatriz.esCuadradoMagico() )
  174.         {
  175.             System.out.println( "\n\nLa matriz es un cuadrado mágico." );
  176.         }
  177.         else
  178.         {
  179.             System.out.println( "\n\nLa matriz no es un cuadrado mágico." );
  180.         }
  181.     } // fin del método main.
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement