sábado, 14 de julio de 2012

3.1.3 Aplicaciones con Arreglos de una Dimension


Supongamos que queremos utilizar una aplicación para poder tomar un arreglo y voltearlo en otro, es decir supongamos que tenemos un arreglo con los números 1, 15, 17, 22 y 34 y los queremos cambiar al revés como 34, 22, 17, 15 y 1. La siguiente aplicación nos puede ayudar a comprender esto:
public class AplicacionArreglo3 {
public static void main(String[] args) {
int arreglo1[] = { 1, 15, 17, 22, 34 };
int arreglo2[] = new int[arreglo1.length];
for (int i = 0; i < arreglo1.length; i++) {
arreglo2[arreglo1.length - i - 1] = arreglo1 [i];
}
System.out.println("Arreglo Inicial");
for (int i = 0; i < arreglo1.length; i++) {
System.out.println("Elemento " + (i+1) + " = " + arreglo1[i]);
}
System.out.println("Arreglo Final");
for (int i = 0; i < arreglo2.length; i++) {
System.out.println("Elemento " + (i+1) + " = " + arreglo2[i]);
}
}
}
Dicha aplicación muestra la siguiente salida:

Vemos como la clave de la asignación de cada elemento del arreglo 2 esta en hacer un poco de matemáticas, con la instrucción:
arreglo2[arreglo1.length - i - 1] = arreglo1 [i];
En esta instrucción al último índice de la posición le quitamos el valor de i que es nuestra variable índice que avanza hasta llegar al último, pero si hacemos un poco de sustitución y decimos arreglo1 tiene 5 elementos, cuando la i es cero, entoncesarreglo.length – i – 1 nos da 4 que es realmente la última posición, ya que iría de 0 a 4. Si sustituimos ahora con i en 1, tendríamos 5 – 1 – 1 que sería 3 y así sucesivamente.
Contando las veces que se repite un número en un arreglo

Esto nos puede servir para cuando trabajamos con números, supongamos que tenemos la siguiente aplicación, en la cual tenemos un arreglo y buscamos dos números en el, tenemos que utilizar un ciclo para la búsqueda y si queremos contar las veces que se encuentra el número podemos utilizar un contador para cada uno, veamos la aplicación:

public class AplicacionArreglo4 {
public static void main(String[] args) {
int arreglo[] = { 1, 15, 17, 22, 34 , -5, 15, 22, 1};
int busca1 = 30; // numero 1 a buscar
int conta1 = 0; // contar cuantas veces aparece
int busca2 = 22; // numero 2 a buscar
int conta2 = 0; // contar cuantas veces aparece
for (int i = 0; i < arreglo.length; i++) {
if (busca1 == arreglo[i]) {
conta1++;
}
if (busca2 == arreglo[i]) {
conta2++;
}
}
System.out.println("Arreglo");
for (int i = 0; i < arreglo.length; i++) {
System.out.println("Elemento " + (i+1) + " = " + arreglo[i]);
}
System.out.println("El numero " + busca1 + " aparece " + conta1 + " veces");
System.out.println("El numero " + busca2 + " aparece " + conta2 + " veces");
}
}

Dicha aplicación muestra el siguiente desplegado:


Observamos que el conta1 solo se incrementa si el valor buscado busca1 aparece en el arreglo, de la misma manera con el valor busca2, se utiliza conta2.

Juguemos ahora un poco con letras utilizando arreglos de caracteres, cambiando la aplicación quedaría como:

public class AplicacionArreglo5 {
public static void main(String[] args) {
char arreglo[] = { 'a', 't', 'e', 'n', 'i' , 'd', 'a', 's'};
char busca1 = 's'; // caracter 1 a buscar
int conta1 = 0; // contar cuantas veces aparece
char busca2 = 'a'; // caracter 2 a buscar
int conta2 = 0; // contar cuantas veces aparece
for (int i = 0; i < arreglo.length; i++) {
if (busca1 == arreglo[i]) {
conta1++;
}
if (busca2 == arreglo[i]) {
conta2++;
}
}
System.out.println("Arreglo");
for (int i = 0; i < arreglo.length; i++) {
System.out.println("Elemento " + (i+1) + " = " + arreglo[i]);
}
System.out.println("El caracter " + busca1 + " aparece " + conta1 + " veces");
System.out.println("El caracter " + busca2 + " aparece " + conta2 + " veces");
}
}

Esta aplicación mostraría el siguiente desplegado:


Observamos entonces como un arreglo de caracteres puede ser manejado como un arreglo de números.

Utilizando los caracteres y usando el ejemplo de invertir los números de un arreglo a otro, podemos observar como se puede invertir un arreglo de caracteres en otro, veamos la siguiente aplicación:

public class AplicacionArreglo6 {
public static void main(String[] args) {
char arreglo1[] = { 'a', 't', 'e', 'n', 'i' , 'd', 'a', 's'};
char arreglo2[] = new char[arreglo1.length];
for (int i = 0; i < arreglo1.length; i++) {
arreglo2[arreglo1.length - i - 1] = arreglo1 [i];
}
System.out.println("Palabra Inicial");
for (int i = 0; i < arreglo1.length; i++) {
System.out.println("Caracter " + (i+1) + " = " + arreglo1[i]);
}
System.out.println();
System.out.println("Palabra Final");
for (int i = 0; i < arreglo2.length; i++) {
System.out.println("Caracter " + (i+1) + " = " + arreglo2[i]);
}
}
}

Observando el desplegado de esta aplicación quedaría:




1 comentario:

  1. Bastante bueno, me sirve para adelantarme en unos cursos que estoy haciendo, en el SENA, XD, espero que también puedas subir algo de "Desarrollo de Applets/Aplicaciones con uso de Base de Datos, Redes, Servlets y Multimedia". ;)

    ResponderEliminar