Advertisement
Fhernd

AplicacionMatriz2.java

Jul 24th, 2012
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.74 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. /**
  6.  * Representa una clase para invertir matrices.
  7.  * @author John Ortiz
  8.  * @version 1.0
  9.  */
  10. public class AplicacionMatriz2
  11. {
  12.     /**
  13.      * matriz con los datos dispuestos tal cual como el usuario los introudc
  14.      */
  15.     private int[][] matrizEnterosOrigen;
  16.     private int[][] matrizEnterosDestino;
  17.    
  18.     /**
  19.      * Permite ingresar el número filas/columnas.
  20.      */
  21.     public void numeroElementosAInsertar()
  22.     {
  23.         InputStreamReader isr = new InputStreamReader( System.in );
  24.        
  25.         BufferedReader br = new BufferedReader( isr );
  26.        
  27.         int filas = 0;
  28.         int columnas = 0;
  29.        
  30.         try
  31.         {
  32.             System.out.print( "Digite el número de filas: " );
  33.             filas = Integer.parseInt( br.readLine() );
  34.            
  35.             System.out.println();
  36.            
  37.             System.out.print( "Digite el número de columnas: " );
  38.             columnas = Integer.parseInt( br.readLine() );
  39.         }
  40.         catch( NumberFormatException nfe )
  41.         {
  42.             nfe.printStackTrace();
  43.         }
  44.         catch( IOException ioe )
  45.         {
  46.             ioe.printStackTrace();
  47.         }
  48.        
  49.         // crea la matriz
  50.         matrizEnterosOrigen = new int[ filas ][ columnas ];
  51.     } // fin del método numeroElementosAInsertar
  52.    
  53.     /**
  54.      * Lee los datos para el arreglo desde el teclado introducidos por el usuario de la aplicación.
  55.      */
  56.     public void insertarDatos()
  57.     {
  58.         InputStreamReader isr = new InputStreamReader( System.in );
  59.         BufferedReader br = new BufferedReader( isr );
  60.        
  61.         int dato = 0;
  62.        
  63.         try
  64.         {
  65.             for (int i = 0; i < matrizEnterosOrigen.length; i++)
  66.             {
  67.                 for (int j = 0; j < matrizEnterosOrigen[i].length; j++)
  68.                 {
  69.                     System.out.printf( "Da elemento %d, %d : ", ( i + 1 ), ( j + 1 ) );
  70.                     dato = Integer.parseInt( br.readLine() );
  71.                    
  72.                     matrizEnterosOrigen[ i ][ j ] = dato;
  73.                 }
  74.                
  75.                 System.out.println();
  76.             }
  77.         }
  78.         catch( NumberFormatException nfe )
  79.         {
  80.             nfe.printStackTrace();
  81.         }
  82.         catch( IOException ioe )
  83.         {
  84.             ioe.printStackTrace();
  85.         }
  86.     } // fin del método insertarDatos
  87.    
  88.     /**
  89.      * Imprime la matriz de origen
  90.      */
  91.     public void imprimirMatrizEnterosOrigen()
  92.     {
  93.         System.out.println( "Contenido de la matriz de enteros origen: \n" );
  94.        
  95.         for (int i = 0; i < matrizEnterosOrigen.length; i++)
  96.         {
  97.             for (int j = 0; j < matrizEnterosOrigen[i].length; j++)
  98.             {
  99.                 System.out.printf( "\t%s", matrizEnterosOrigen[ i ][ j ] );
  100.             } // fin for anidado
  101.             System.out.println();
  102.         } // fin for
  103.        
  104.         System.out.println();
  105.     } // fin del método imprimirArregloDatos
  106.    
  107.     /**
  108.      * Imprime la matriz
  109.      */
  110.     public void imprimirMatrizEnterosDestino()
  111.     {
  112.         System.out.println( "Contenido de la matriz de enteros destino: \n" );
  113.        
  114.         for (int i = 0; i < matrizEnterosDestino.length; i++)
  115.         {
  116.             for (int j = 0; j < matrizEnterosDestino[i].length; j++)
  117.             {
  118.                 System.out.printf( "\t%s", matrizEnterosDestino[ i ][ j ] );
  119.             } // fin for anidado
  120.             System.out.println();
  121.         } // fin for
  122.        
  123.         System.out.println();
  124.     } // fin del método imprimirArregloDatos
  125.    
  126.     /**
  127.      * Invierte la matriz ( m x n -> n x m )
  128.      */
  129.     public void invertir()
  130.     {
  131.         // crea la matriz destino
  132.         matrizEnterosDestino = new int[ matrizEnterosOrigen[0].length ][ matrizEnterosOrigen.length ];
  133.        
  134.         // arreglo temporal
  135.         int[] arregloEnterosTemp = new int[ matrizEnterosOrigen.length * matrizEnterosOrigen[ 0 ].length ];
  136.        
  137.         // contador de elementos insertados en el arreglo de enteros temporal
  138.         int contadorEnterosTemp = 0;
  139.        
  140.         for (int i = 0; i < matrizEnterosOrigen.length; i++)
  141.         {
  142.             for (int j = 0; j < matrizEnterosOrigen[i].length; j++)
  143.             {
  144.                 arregloEnterosTemp[ contadorEnterosTemp++ ] = matrizEnterosOrigen[ i ][ j ];
  145.             }
  146.         }
  147.        
  148.         for (int i = arregloEnterosTemp.length - 1, m = 0, n = 0; i >= 0; --i)
  149.         {
  150.             matrizEnterosDestino[ m ][ n ] = arregloEnterosTemp[ i ];
  151.             ++n;
  152.            
  153.             if( n == ( matrizEnterosDestino[ 0 ].length ) )
  154.             {
  155.                 n = 0;
  156.                 ++m;
  157.             }
  158.         } // fin de for
  159.     } // fin del método invertir
  160.    
  161.     /**
  162.      * Punto de entrada de la aplicación.
  163.      * @param args Argumentos de entrada desde la consola o terminal
  164.      */
  165.     public static void main( String[] args )
  166.     {
  167.         // crea una instancia de AplicacionMatriz2
  168.         AplicacionMatriz2 appMatriz2 = new AplicacionMatriz2();
  169.        
  170.         // invoca al método para establecer el tamaño de la matriz orginal
  171.         appMatriz2.numeroElementosAInsertar();
  172.        
  173.         System.out.println();
  174.        
  175.         // inserta datos en la matriz
  176.         appMatriz2.insertarDatos();
  177.        
  178.         System.out.println();
  179.        
  180.         // imprime la matriz original (sin invertir)
  181.         appMatriz2.imprimirMatrizEnterosOrigen();
  182.        
  183.         System.out.println();
  184.        
  185.         // invierte la matriz original
  186.         appMatriz2.invertir();
  187.        
  188.         System.out.println();
  189.        
  190.         // imprime la matriz invertida ( n x m )
  191.         appMatriz2.imprimirMatrizEnterosDestino();
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement