Advertisement
Fhernd

AplicacionMatriz3.java

Jul 24th, 2012
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.23 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 estadísticas de niveles de ruides de diferentes vehículos a diferentes velocidades.
  7.  * @author John Ortiz
  8.  * @version 1.0
  9.  */
  10. public class AplicacionMatriz3
  11. {
  12.     /**
  13.      * Niveles de ruido de los coches
  14.      */
  15.     private int[][] nivelRuidoEndB = new int[ 6 ][ 7 ];
  16.     private String[] coches = new String[ 6 ];
  17.    
  18.     /**
  19.      * Lee los datos para el arreglo desde el teclado introducidos por el usuario de la aplicación.
  20.      */
  21.     public void cargarDatosNivelesDeRuido()
  22.     {
  23.         InputStreamReader isr = new InputStreamReader( System.in );
  24.         BufferedReader br = new BufferedReader( isr );
  25.        
  26.         int dato = 0;
  27.        
  28.         int velocidad = 20;
  29.        
  30.         try
  31.         {
  32.             for (int i = 0; i < nivelRuidoEndB.length; i++)
  33.             {
  34.                 for (int j = 0; j < nivelRuidoEndB[i].length; j++)
  35.                 {
  36.                     System.out.printf( "Decibelios a %d: ", velocidad );
  37.                     dato = Integer.parseInt( br.readLine() );
  38.                    
  39.                     nivelRuidoEndB[ i ][ j ] = dato;
  40.                 }
  41.                
  42.                 System.out.println();
  43.                
  44.                 velocidad += 10;
  45.             }
  46.         }
  47.         catch( NumberFormatException nfe )
  48.         {
  49.             nfe.printStackTrace();
  50.         }
  51.         catch( IOException ioe )
  52.         {
  53.             ioe.printStackTrace();
  54.         }
  55.     } // fin del método insertarDatos
  56.    
  57.     /**
  58.      * Carga los niveles de ruido en la matriz correspondiente.
  59.      */
  60.     public void precargarDatosNivelesDeRuido()
  61.     {
  62.         nivelRuidoEndB[ 0 ][ 0 ] = 88;
  63.         nivelRuidoEndB[ 0 ][ 1 ] = 90;
  64.         nivelRuidoEndB[ 0 ][ 2 ] = 94;
  65.         nivelRuidoEndB[ 0 ][ 3 ] = 102;
  66.         nivelRuidoEndB[ 0 ][ 4 ] = 111;
  67.         nivelRuidoEndB[ 0 ][ 5 ] = 122;
  68.         nivelRuidoEndB[ 0 ][ 6 ] = 134;
  69.        
  70.         nivelRuidoEndB[ 1 ][ 0 ] = 75;
  71.         nivelRuidoEndB[ 1 ][ 1 ] = 77;
  72.         nivelRuidoEndB[ 1 ][ 2 ] = 80;
  73.         nivelRuidoEndB[ 1 ][ 3 ] = 86;
  74.         nivelRuidoEndB[ 1 ][ 4 ] = 94;
  75.         nivelRuidoEndB[ 1 ][ 5 ] = 103;
  76.         nivelRuidoEndB[ 1 ][ 6 ] = 113;
  77.        
  78.         nivelRuidoEndB[ 2 ][ 0 ] = 80;
  79.         nivelRuidoEndB[ 2 ][ 1 ] = 83;
  80.         nivelRuidoEndB[ 2 ][ 2 ] = 85;
  81.         nivelRuidoEndB[ 2 ][ 3 ] = 94;
  82.         nivelRuidoEndB[ 2 ][ 4 ] = 100;
  83.         nivelRuidoEndB[ 2 ][ 5 ] = 111;
  84.         nivelRuidoEndB[ 2 ][ 6 ] = 121;
  85.        
  86.         nivelRuidoEndB[ 3 ][ 0 ] = 68;
  87.         nivelRuidoEndB[ 3 ][ 1 ] = 71;
  88.         nivelRuidoEndB[ 3 ][ 2 ] = 76;
  89.         nivelRuidoEndB[ 3 ][ 3 ] = 85;
  90.         nivelRuidoEndB[ 3 ][ 4 ] = 96;
  91.         nivelRuidoEndB[ 3 ][ 5 ] = 110;
  92.         nivelRuidoEndB[ 3 ][ 6 ] = 125;
  93.        
  94.         nivelRuidoEndB[ 4 ][ 0 ] = 77;
  95.         nivelRuidoEndB[ 4 ][ 1 ] = 84;
  96.         nivelRuidoEndB[ 4 ][ 2 ] = 91;
  97.         nivelRuidoEndB[ 4 ][ 3 ] = 98;
  98.         nivelRuidoEndB[ 4 ][ 4 ] = 105;
  99.         nivelRuidoEndB[ 4 ][ 5 ] = 112;
  100.         nivelRuidoEndB[ 4 ][ 6 ] = 119;
  101.        
  102.         nivelRuidoEndB[ 5 ][ 0 ] = 81;
  103.         nivelRuidoEndB[ 5 ][ 1 ] = 85;
  104.         nivelRuidoEndB[ 5 ][ 2 ] = 90;
  105.         nivelRuidoEndB[ 5 ][ 3 ] = 96;
  106.         nivelRuidoEndB[ 5 ][ 4 ] = 102;
  107.         nivelRuidoEndB[ 5 ][ 5 ] = 109;
  108.         nivelRuidoEndB[ 5 ][ 6 ] = 120;
  109.     } // fin del método cargarDatosNivelesDeRuido
  110.    
  111.     /**
  112.      * Carga los nombres de los coches.
  113.      */
  114.     public void cargarNombresCoches()
  115.     {
  116.         InputStreamReader isr = new InputStreamReader( System.in );
  117.         BufferedReader br = new BufferedReader( isr );
  118.        
  119.         String nombreCoche = "";
  120.        
  121.         try
  122.         {
  123.             for( int i = 0; i < coches.length; i++ )
  124.             {
  125.                 System.out.print( "Dígite nombre de coche: " );
  126.                 nombreCoche = br.readLine();
  127.                
  128.                 coches[ i ] = nombreCoche;
  129.             }
  130.         }
  131.         catch( IOException ioe )
  132.         {
  133.             ioe.printStackTrace();
  134.         }
  135.     } // fin del método cargarNombresCoches
  136.    
  137.     /**
  138.      * Precarga los nombres de los coches. Para propósitos de prueba.
  139.      */
  140.     public void precargarNombresCoches()
  141.     {
  142.         coches[ 0 ] = "Focus";
  143.         coches[ 1 ] = "Jetta";
  144.         coches[ 2 ] = "Contour";
  145.         coches[ 3 ] = "Tsuru";
  146.         coches[ 4 ] = "Explorer";
  147.         coches[ 5 ] = "Lobo";
  148.     } // fin del método precargarNombresCoches
  149.    
  150.     /**
  151.      * Calcula el promedio de nivel de ruido por coche.
  152.      */
  153.     public void calcularPromedioNivelRuido()
  154.     {
  155.         double acumRuido = 0.0;
  156.        
  157.         System.out.printf( "%-20s%8s\n\n", "Nombre Coche", "Promedio Nivel Ruido (dB)" );
  158.        
  159.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  160.         {
  161.             for (int j = 0; j < nivelRuidoEndB[i].length; j++)
  162.             {
  163.                 acumRuido += nivelRuidoEndB[ i ][ j ];
  164.             }
  165.            
  166.             System.out.printf( "%-20s%8.2f dB", coches[ i ], ( acumRuido / nivelRuidoEndB[ i ].length ) );
  167.             System.out.println();
  168.         } // fin for
  169.        
  170.     } // fin del método calcularPromedioNivelRuido
  171.    
  172.     /**
  173.      * Reporte por velocidad el promedio del nivel de ruido para cada velocidad.
  174.      */
  175.     public void calcularPromedioRuidoPorVelocidad()
  176.     {
  177.         int[] promedioRuidoXVelocidad = new int[ nivelRuidoEndB[ 0 ].length ];
  178.        
  179.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  180.         {
  181.             for (int j = 0; j < nivelRuidoEndB[ 0 ].length; j++)
  182.             {
  183.                 promedioRuidoXVelocidad[ j ] += nivelRuidoEndB[ i ][ j ];
  184.             } // fin for anidado
  185.         }  // fin for anidado
  186.        
  187.         // muestra el reporte
  188.        
  189.         int velocidad = 20;
  190.        
  191.         System.out.printf( "%-15s%7s\n", "Velocidad", "Promedio Ruido (dB)" );
  192.        
  193.         for (int i = 0; i < promedioRuidoXVelocidad.length; ++i )
  194.         {
  195.             System.out.printf( "%-15d%.2f\n", velocidad, ( promedioRuidoXVelocidad[ i ] / ( nivelRuidoEndB.length * 1.0 ) ) );
  196.            
  197.             velocidad += 10;
  198.         } // fin for
  199.        
  200.         System.out.println();
  201.        
  202.     } // fin del método calcularPromedioRuidoPorVelocidad
  203.    
  204.     /**
  205.      * Calcula el promedio de nivel de ruido total.
  206.      */
  207.     public double calcularPromedioRuidoTotal()
  208.     {
  209.         double promedioRuido = 0.0;
  210.        
  211.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  212.         {
  213.             for (int j = 0; j < nivelRuidoEndB[ i ].length; j++)
  214.             {
  215.                 promedioRuido += nivelRuidoEndB[ i ][ j ];
  216.             }
  217.         } // fin for exterior
  218.        
  219.         return( promedioRuido / ( nivelRuidoEndB.length * nivelRuidoEndB[ 0 ].length ) );
  220.     } // fin del método calcularPromedioRuidoTotal
  221.    
  222.     /**
  223.      * Determina el coche que produjo el mayor nivel de ruido
  224.      * @return Nombre del coche que generó el mayor nivel de ruido.
  225.      */
  226.     public String determinarCocheConMayorNivelDeRuido()
  227.     {
  228.         int numeroCoche = 0;
  229.         int nivelRuidoMayor = 0;
  230.        
  231.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  232.         {
  233.             for (int j = 0; j < nivelRuidoEndB[ 0 ].length; j++)
  234.             {
  235.                 if( i == 0 && j == 0 )
  236.                 {
  237.                     nivelRuidoMayor = nivelRuidoEndB[ i ][ j ];
  238.                     continue;
  239.                 }
  240.                
  241.                 if( nivelRuidoEndB[ i ][ j ] > nivelRuidoMayor )
  242.                 {
  243.                     nivelRuidoMayor = nivelRuidoEndB[ i ][ j ];
  244.                     numeroCoche = i;
  245.                 }
  246.             } // fin de for anidado.
  247.         } // fin de for exterior
  248.        
  249.         return( coches[ numeroCoche ] );
  250.     } // fin del método determinarCocheConMayorNivelDeRuido
  251.    
  252.     /**
  253.      * Determina la velocidad que generó el mayor nivel de ruido
  254.      */
  255.     public int determinarVelocidadConMayorNivelDeRuido()
  256.     {
  257.         int[] velocidades = { 20, 30, 40, 50, 60, 70, 80 };
  258.         int nivelRuidoMayor = 0;
  259.         int indiceVelocidad = 0;
  260.        
  261.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  262.         {
  263.             for (int j = 0; j < nivelRuidoEndB[ i ].length; j++ )
  264.             {
  265.                 if( i == 0 && j == 0 )
  266.                 {
  267.                     nivelRuidoMayor = nivelRuidoEndB[ i ][ j ];
  268.                     continue;
  269.                 }
  270.                
  271.                 if( nivelRuidoEndB[ i ][ j ] > nivelRuidoMayor )
  272.                 {
  273.                     nivelRuidoMayor = nivelRuidoEndB[ i ][ j ];
  274.                     indiceVelocidad = j;
  275.                 }
  276.             }
  277.         } // fin for exterior
  278.        
  279.         return( velocidades[ indiceVelocidad ] );
  280.     } // fin del método determinarVelocidadConMayorNivelDeRuido
  281.    
  282.     /**
  283.      * Determina el coche que produjo el mayor nivel de ruido
  284.      * @return Nombre del coche que generó el mayor nivel de ruido.
  285.      */
  286.     public String determinarCocheConMenorNivelDeRuido()
  287.     {
  288.         int numeroCoche = 0;
  289.         int nivelRuidoMenor = 0;
  290.        
  291.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  292.         {
  293.             for (int j = 0; j < nivelRuidoEndB[ 0 ].length; j++)
  294.             {
  295.                 if( i == 0 && j == 0 )
  296.                 {
  297.                     nivelRuidoMenor = nivelRuidoEndB[ i ][ j ];
  298.                     continue;
  299.                 }
  300.                
  301.                 if( nivelRuidoEndB[ i ][ j ] < nivelRuidoMenor )
  302.                 {
  303.                     nivelRuidoMenor = nivelRuidoEndB[ i ][ j ];
  304.                     numeroCoche = i;
  305.                 }
  306.             } // fin de for anidado.
  307.         } // fin de for exterior
  308.        
  309.         return( coches[ numeroCoche ] );
  310.     } // fin del método determinarCocheConMenorNivelDeRuido
  311.    
  312.     /**
  313.      * Determina la velocidad que generó el menor nivel de ruido
  314.      */
  315.     public int determinarVelocidadConMenorNivelDeRuido()
  316.     {
  317.         int[] velocidades = { 20, 30, 40, 50, 60, 70, 80 };
  318.         int nivelRuidoMenor = 0;
  319.         int indiceVelocidad = 0;
  320.        
  321.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  322.         {
  323.             for (int j = 0; j < nivelRuidoEndB[ i ].length; j++ )
  324.             {
  325.                 if( i == 0 && j == 0 )
  326.                 {
  327.                     nivelRuidoMenor = nivelRuidoEndB[ i ][ j ];
  328.                     continue;
  329.                 }
  330.                
  331.                 if( nivelRuidoEndB[ i ][ j ] < nivelRuidoMenor )
  332.                 {
  333.                     nivelRuidoMenor = nivelRuidoEndB[ i ][ j ];
  334.                     indiceVelocidad = j;
  335.                 }
  336.             }
  337.         } // fin for exterior
  338.        
  339.         return( velocidades[ indiceVelocidad ] );
  340.     } // fin del método determinarVelocidadConMenorNivelDeRuido
  341.    
  342.     /**
  343.     * Imprime los nivel de ruido
  344.     */
  345.     public void imprimirNivelesDeRuido()
  346.     {
  347.         System.out.printf( "%-20s%7s%7s%7s%7s%7s%7s%7s\n", "Coche", "20", "30", "40", "50", "60", "70", "80" );
  348.        
  349.         System.out.println();
  350.        
  351.         for (int i = 0; i < nivelRuidoEndB.length; i++)
  352.         {
  353.             System.out.printf( "%-20s", coches[ i ] );
  354.             for (int j = 0; j < nivelRuidoEndB[i].length; j++)
  355.             {
  356.                 if( j == 0 )
  357.                 {
  358.                     System.out.printf( "%7s", nivelRuidoEndB[ i ][ j ] );
  359.                 }
  360.                 else
  361.                 {
  362.                     System.out.printf( "%7s", nivelRuidoEndB[ i ][ j ] );
  363.                 }
  364.             } // fin for anidado
  365.             System.out.println();
  366.         } // fin for
  367.        
  368.         System.out.println();
  369.     } // fin del método imprimirArregloDatos
  370.    
  371.     /**
  372.     *
  373.     */
  374.     public static void main( String[] args )
  375.     {
  376.         // Crea una instancia de AplicacionMatriz3
  377.         AplicacionMatriz3 appMatriz3 = new AplicacionMatriz3();
  378.        
  379.         System.out.println();
  380.        
  381.         // datos de prueba basados en los propuestos en el ejercicio
  382.         appMatriz3.precargarDatosNivelesDeRuido();
  383.         appMatriz3.precargarNombresCoches();
  384.        
  385.         // imprime el contenido de la matriz
  386.         appMatriz3.imprimirNivelesDeRuido();
  387.        
  388.         System.out.println();
  389.        
  390.         // Reporte por coche: Los nombres de los modelos de los coches con su correspondiente promedio del nivel de
  391.         // para cada coche.
  392.         appMatriz3.calcularPromedioNivelRuido();
  393.        
  394.         System.out.println();
  395.        
  396.         // promedio del nivel de ruido por cada velocidad
  397.         System.out.print( "\nPromedio de Ruido (dB) por Velocidad: \n\n" );
  398.         appMatriz3.calcularPromedioRuidoPorVelocidad();
  399.        
  400.         System.out.println();
  401.        
  402.         // promedio de nivel de ruido total
  403.         System.out.printf( "El promedio de ruido total es: %.2f", appMatriz3.calcularPromedioRuidoTotal() );
  404.        
  405.         System.out.println();
  406.        
  407.         // coche con mayor nivel de ruido
  408.         System.out.printf( "\n\nEl coche con mayor nivel de ruido es: %s", appMatriz3.determinarCocheConMayorNivelDeRuido() );
  409.        
  410.         // velocidad con mayor nivel de ruido
  411.         System.out.printf( "\n\n\nLa velocidad con mayor nivel de ruido es: %s", appMatriz3.determinarVelocidadConMayorNivelDeRuido() );
  412.        
  413.         // coche con menor nivel de ruido
  414.         System.out.printf( "\n\n\nEl coche con menor nivel de ruido es: %s", appMatriz3.determinarCocheConMenorNivelDeRuido() );
  415.        
  416.         // velocidad con mayor nivel de ruido
  417.         System.out.printf( "\n\n\nLa velocidad con menor nivel de ruido es: %s", appMatriz3.determinarVelocidadConMenorNivelDeRuido() );
  418.     }
  419.      
  420. } // fin de la clase AplicacionMatriz3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement