UNIVERSIDAD TECNOLOGICAProgramación III Guía de laboratorio No. 4 Objetivo: El objetivo de esta guía es que el estudiante aplique los conocimientos proporcionados en clase acerca de los arreglos unidimensionales y multidimensionales en el ambiente de programación de JAVA. PARTE I: EJERCICIOS DESARROLLADOS Ejercicio No. 1: Creación y uso de una Matriz Unidimensional. import java.io.*; public class MatrizUnidimensional { // Creación de una matriz unidimensional public static void main(String[] args) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader MiFlujo= new BufferedReader(isr); int nElementos; String DatoLeído; System.out.print("Número de elementos de la matriz: "); DatoLeído = MiFlujo.readLine(); nElementos = Integer.parseInt(DatoLeído); int [] m = new int[nElementos]; // crear la matriz m int i = 0; // subíndice 0 System.out.println("Introducir los valores de la matriz."); for (i = 0; i <nElementos; i++) { System.out.print("Elemento No. "+(i+1)+" - m[" + i + "] = "); DatoLeído = MiFlujo.readLine(); m[i] = Integer.parseInt(DatoLeído); } // Visualizar los elementos de la matriz System.out.println(); System.out.println("Datos almacenados en la matriz: "); for (i = 0; i <nElementos; i++) System.out.print(m[i] + " "); System.out.println("\n\nFin del proceso."); } } Ejercicio No. 2: Al programa anterior agregue el código necesario para que se determine el menor y mayor valor almacenado en la matriz. Especifique su posición. Ejercicio No. 3: El siguiente programa presenta los datos en forma gráfica a los usuarios utilizando histogramas. Lo cual es una manera simple de mostrar datos numéricos en forma gráfica. //programa para imprimir histogramas import javax.swing.*; public class histogramas { public static void main ( String args[] ) { int arreglo[] = {19, 3, 15, 7, 11, 9, 13, 5, 17, 1}; 1 CICLO I/2011 i<=5. }//fin de main }//fin de clase Histograma Ejercicio No. areaSalida.showMessageDialog(null. cartoons[1][1]="Barney". cartoons[0][3]="Heman".JApplet. cartoons[0][1]="Tom y Jerry". JOptionPane.paint(g).INFORMATION_MESSAGE). import javax.20*i).awt. //para cada elemento del arreglo. cartoons[1][2]="El Pato Lucas". JOptionPane.drawString(cartoons[0][i-1]+": ". i++) g.length. public class yas extends JApplet { String[][] cartoons =new String[2][5]. cartoons[1][0]="Rubbles". cartoons[1][3]="Bug Bonny". } //fin del for externa JTextArea areaSalida = new JTextArea(). areaSalida. 120.{70.87. cartoons[0][4]="Dinosaurios".setText(salida).Graphics.swing.20*i). mostrar una barra en el histograma for ( int contador=0.89. public static void main( String [] args ) { int calificaciones[][] = {{77. public static int estudiantes. contador++) { salida += "\n"+contador+"\t"+arreglo[contador]+"\t".86.JOptionPane. System.length.swing. import javax. public void init() { cartoons[0][0]="Picapiedra".68. for (int i=1.exit(0). i++) g. } //fin de init public void paint(Graphics g) { super.81}}.73}.length. estrellas < arreglo[contador]. examenes. import java. 5: Creación y uso de una Matriz Multidimensional. estrellas++) salida += "*".86. estudiantes = calificaciones. } //fin de paint }//fin del Applet Ejercicio No. public class ArregloDoble { public static String salida. "Programa para imprimir Histogramas". cartoons[0][2]="Mazinger". //imprimir barra de asteriscos for ( int estrellas=0.81}. // numero de examenes 2 CICLO I/2011 .UNIVERSIDAD TECNOLOGICA Programación III String salida = "Elemento\tValor\tHistograma". 20. 4: Creación y uso de una Matriz Multidimensional implementada en un Applet.drawString(cartoons[1][i-1]+": ". //numero de estudiantes examenes = calificaciones[0]. i<=5. for (int i=1.{96.90. contador<arreglo. fila++) for (int cols = 0. //crear filas/columnas de texto que representan el arreglo // calificaciones for (int fila = 0. for ( int fila=0. cols++ ) //si la calificacion es mayor que califAlta asignarla a califAlta if ( calificaciones[fila][cols] >califAlta ) califAlta = calificaciones[fila][cols]. contador < estudiantes. //calcular el promedio de cada estudiante for ( int contador = 0. } public static void crearCadena (int calificaciones[][]) { salida += " ". System.exit( 0 ). cols++ ) //si la calificacion es menor que califBaja asignarla a califBaja if ( calificaciones[fila][cols] <califBaja ) califBaja = calificaciones[fila][cols]. fila ++ ) { salida += "\ncalificaciones[" + fila + "] ". fila++) for (int cols = 0. cols<examenes. for (int col = 0. crearCadena(calificaciones). col ++) salida += calificaciones[fila][col] + " ".UNIVERSIDAD TECNOLOGICA Programación III //crear salida salida = "El arreglo es: \n". 3 CICLO I/2011 . //mostrar la salida JOptionPane. contador ++) salida += "\nEl promedio del estudiante " + contador+" es " + promedio( calificaciones[contador]). } //fin del método minima //Buscar calificación maxima public static int maxima(int calificaciones[][]) { //suponer que el primer elemento del arreglo es el mayor int califAlta = calificaciones[0][0]. col <examenes. } } //fin del método crearCadena //Buscar calificación mínima public static int minima(int calificaciones[][]) { //suponer que el primer elemento del arreglo es el menor int califBaja = calificaciones[0][0]. conta ++ ) salida += "[" + conta + "] ". for ( int fila=0. fila < estudiantes. fila < estudiantes. //crear encabezados de columnas for ( int conta = 0. fila < estudiantes. "Promedio de estudiantes". cols<examenes. return califBaja. //llamar a los métodos minima y maxima salida += "\n\nCalificacionmas baja: " + minima(calificaciones) + "\nCalificacion más alta: " + maxima(calificaciones) + "\n". JOptionPane. conta<examenes. salida.INFORMATION_MESSAGE).showMessageDialog(null. public static double promedio (int conjCalif[] ) { int total = 0. //inicializar el total //sumar calificaciones para un estudiante for( int cuenta=0.swing.length. }//fin de main }//fin de clase PARTE II: EJERCICIOS PROPUESTOS 1. } //fin del método minima //determinar la calificacion promedio para un estudiante.i. 5: Uso del For Mejorado y arreglos dinámicos.parseInt(efilas).parseFloat(efilas).showInputDialog("Digite el nombre del alumno").showMessageDialog(null. i<filas. Realice un programa que lea las edades de N personas. } //fin delmétodo promedio } Ejercicio No. JOptionPane. } for(float nota:notas) sumnotas+=nota.showInputDialog("Digite la nota "+(i+1)+ ":"). notas[i]=Float.showInputDialog("Digite la cantidad de notas del alumno"). i++) { efilas=JOptionPane. cuenta++ ) total += conjCalif[cuenta]. for ( i=0. filas=Integer. luego obtenga la cantidad y la edad promedio de las mismas considerando los siguientes rangos: RANGO DE EDADES 1 – 20 21 – 40 Mayores que 40 4 CICLO I/2011 . float sumnotas=0.length. String efilas.UNIVERSIDAD TECNOLOGICA Programación III return califAlta. //Leer la cantidad de alumnos nombrealumno=JOptionPane.nombrealumno. efilas=JOptionPane. public class formejor { public static void main(String[] args) { //Lee el nombre de un estudiante y sus notas y calcula el promedio obtenido int filas."El alumno "+nombrealumno+" obtuvo de promedio"+(sumnotas/filas)). //Dimension en tiempo de ejecucion float [] notas = new float[filas].*. //devolver el promedio de calificaciones return (double) total / conjCalif. import javax. cuenta <conjCalif. si se añade 8 (valor de N) a 122 (código ASCII para ‘z’). vea el ejercicio No. Por ejemplo. Utilice el método setText de la clase JTextArea para actualizar los resultados después que el usuario introduzca cada uno de los valores. cada uno de los cuales debe estar entre 10 y 100. A medida que se lea cada número. inclusive. se debería “dar la vuelta” y obtener 35. El cifrado se ha usado desde los tiempos antiguos para comunicar mensajes secretos. Con esta técnica. Use un arreglo unidimensional para resolver el siguiente problema: escriba un applet que reciba como entrada 5 números. si N=1 entonces el mensaje: Yo solo bebo cafe Se convierte en: Xp!ftkpm!qpna!fgech El método cifrado descifra el mensaje original deshaciendo el desplazamiento de N posiciones para cada carácter. El juego de palabras Eggy-Peggy es un ejemplo de cifrado. 3. en el que los 5 números son diferentes. cada carácter en el mensaje original se desplaza N posiciones.UNIVERSIDAD TECNOLOGICA Programación III 2. 3. Una de las muchas técnicas usadas para cifrado es la denominada cifra de Julio César. Escriba una aplicación que lea un texto original y el valor para N y muestre el texto cifrado. Únicamente es necesario contar las vocales en minúscula. Asegúrese de que el valor ASCII resultante del cifrado está entre 32 y 126. 4. Escriba una aplicación en Java que lea una frase y muestre los contadores del número de vocales dentro de la frase. Por ejemplo. muéstrelo solamente si no es un duplicado de un número que ya se haya leído. Prepárese para el “peor caso”. Muestre los resultados en una ventana con el siguiente formato: Numero de vocales en la frase: Maria tiene un perrito blanco # de ‘a’ : 3 # de ‘e’ : 3 # de ‘i’ : 3 # de ‘o’ : 2 # de ‘u’ : 1 5 CICLO I/2011 . Muestre los resultados en un objeto JTextArea. Use el arreglo más pequeño que sea posible para resolver este problema. Desplazar N posiciones hacia delante o hacia atrás se puede conseguir convirtiendo el código ASCII y añadiendo o restando N.