Estructura de datos tipo vector.
Hemos empleado variables de distinto tipo para el almacenamiento de
datos (variables int, float, String) En esta sección veremos otros tipos
de variables que permiten almacenar un conjunto de datos en una única
variable.
Un vector es una estructura de datos que permite almacenar un CONJUNTO de datos del MISMO tipo.
Con un único nombre se define un vector y por medio de un subíndice hacemos referencia a cada elemento del mismo (componente)
Con un único nombre se define un vector y por medio de un subíndice hacemos referencia a cada elemento del mismo (componente)
Problema 1:
Se desea guardar los sueldos de 5 operarios.
Según lo conocido deberíamos definir 5 variables si queremos tener en un cierto momento los 5 sueldos almacenados en memoria.
Empleando un vector solo se requiere definir un único nombre y accedemos a cada elemento por medio del subíndice.
Según lo conocido deberíamos definir 5 variables si queremos tener en un cierto momento los 5 sueldos almacenados en memoria.
Empleando un vector solo se requiere definir un único nombre y accedemos a cada elemento por medio del subíndice.
Programa:
import java.util.Scanner; public class PruebaVector1 { private Scanner teclado; private int[] sueldos; public void cargar() { teclado=new Scanner(System.in); sueldos=new int[5]; for(int f=0;f<5;f++) { System.out.print("Ingrese valor de la componente:"); sueldos[f]=teclado.nextInt(); } } public void imprimir() { for(int f=0;f<5;f++) { System.out.println(sueldos[f]); } } public static void main(String[] ar) { PruebaVector1 pv=new PruebaVector1(); pv.cargar(); pv.imprimir(); } }
Para la declaración de un vector le antecedemos al nombre los corchetes abiertos y cerrados:
private int[] sueldos;
Lo definimos como atributo de la clase ya que lo utilizaremos en los dos métodos.
En el método de cargar lo primero que hacemos es crear el vector (en
java los vectores son objetos por lo que es necesario proceder a su
creación mediante el operador new):
sueldos=new int[5];
Cuando creamos el vector indicamos entre corchetes la cantidad de elementos que se pueden almacenar posteriormente en el mismo.
Para cargar cada componente debemos indicar entre corchetes que elemento del vector estamos accediendo:
for(int f=0;f<5;f++) { System.out.print("Ingrese valor de la componente:"); sueldos[f]=teclado.nextInt(); }
La estructura de programación que más se adapta para cargar en forma
completa las componentes de un vector es un for, ya que sabemos de
antemano la cantidad de valores a cargar.
Cuando f vale cero estamos accediendo a la primer componente del vector (en nuestro caso sería):
sueldos[0]=teclado.nextInt();
Lo mas común es utilizar una estructura repetitiva for para recorrer cada componente del vector.
Utilizar el for nos reduce la cantidad de código, si no utilizo un
for debería en forma secuencial implementar el siguiente código:
System.out.print("Ingrese valor de la componente:"); sueldos[0]=teclado.nextInt(); System.out.print("Ingrese valor de la componente:"); sueldos[1]=teclado.nextInt(); System.out.print("Ingrese valor de la componente:"); sueldos[2]=teclado.nextInt(); System.out.print("Ingrese valor de la componente:"); sueldos[3]=teclado.nextInt(); System.out.print("Ingrese valor de la componente:"); sueldos[4]=teclado.nextInt();
La impresión de las componentes del vector lo hacemos en el otro método:
public void imprimir() { for(int f=0;f<5;f++) { System.out.println(sueldos[f]); } }
Siempre que queremos acceder a una componente del vector debemos
indicar entre corchetes la componente, dicho valor comienza a numerarse
en cero y continua hasta un número menos del tamaño del vector, en
nuestro caso creamos el vector con 5 elementos:
sueldos=new int[5];
Por último en este programa creamos un objeto en la main y llamamos a lo métodos de cargar e imprimir el vector:
public static void main(String[] ar) { PruebaVector1 pv=new PruebaVector1(); pv.cargar(); pv.imprimir(); }
Problema 2:
Definir un vector de 5 componentes de tipo float que representen las alturas de 5 personas.
Obtener el promedio de las mismas. Contar cuántas personas son más altas que el promedio y cuántas más bajas.
Obtener el promedio de las mismas. Contar cuántas personas son más altas que el promedio y cuántas más bajas.
Programa:
import java.util.Scanner; public class PruebaVector2 { private Scanner teclado; private float[] alturas; private float promedio; public void cargar() { teclado=new Scanner(System.in); alturas=new float[5]; for(int f=0;f<5;f++) { System.out.print("Ingrese la altura de la persona:"); alturas[f]=teclado.nextFloat(); } } public void calcularPromedio() { float suma; suma=0; for(int f=0;f<5;f++) { suma=suma+alturas[f]; } promedio=suma/5; System.out.println("Promedio de alturas:"+promedio); } public void mayoresMenores() { int may,men; may=0; men=0; for(int f=0;f<5;f++) { if (alturas[f]>promedio) { may++; } else { if (alturas[f]<promedio) { men++; } } } System.out.println("Cantidad de personas mayores al promedio:"+may); System.out.println("Cantidad de personas menores al promedio:"+men); } public static void main(String[] ar) { PruebaVector2 pv2=new PruebaVector2(); pv2.cargar(); pv2.calcularPromedio(); pv2.mayoresMenores(); } }
Definimos como atributo un vector donde almacenaremos las alturas:
private float[] alturas;
En la carga creamos el vector indicando que reserve espacio para 5 componentes:
alturas=new float[5];
Procedemos seguidamente a cargar todos sus elementos:
for(int f=0;f<5;f++) { System.out.print("Ingrese la altura de la persona:"); alturas[f]=teclado.nextFloat(); }
En otro método procedemos a sumar todas sus componentes y obtener el
promedio. El promedio lo almacenamos en un atributo de la clase ya que
lo necesitamos en otro método:
public void calcularPromedio() { float suma; suma=0; for(int f=0;f<5;f++) { suma=suma+alturas[f]; } promedio=suma/5; System.out.println("Promedio de alturas:"+promedio); }
Por último en un tercer método comparamos cada componente del vector
con el atributo promedio, si el valor almacenado supera al promedio
incrementamos un contador en caso que sea menor al promedio
incrementamos otro contador:
public void mayoresMenores() { int may,men; may=0; men=0; for(int f=0;f<5;f++) { if (alturas[f]>promedio) { may++; } else { if (alturas[f]<promedio) { men++; } } } System.out.println("Cantidad de personas mayores al promedio:"+may); System.out.println("Cantidad de personas menores al promedio:"+men); }
Importante:
En este problema podemos observar una ventaja de tener almacenadas
todas las alturas de las personas. Si no conociéramos los vectores
tenemos que cargar otra vez las alturas por teclado para compararlas
con el promedio.
Mientras el programa está en ejecución tenemos el vector alturas a nuestra disposición. Es importante tener en cuenta que cuando finaliza la ejecución del programa se pierde el contenido de todas las variables (simples y vectores)
Mientras el programa está en ejecución tenemos el vector alturas a nuestra disposición. Es importante tener en cuenta que cuando finaliza la ejecución del programa se pierde el contenido de todas las variables (simples y vectores)
Problema 3:
Una empresa tiene dos turnos (mañana y tarde) en los que trabajan 8 empleados (4 por la mañana y 4 por la tarde)
Confeccionar un programa que permita almacenar los sueldos de los empleados agrupados por turno.
Imprimir los gastos en sueldos de cada turno.
Confeccionar un programa que permita almacenar los sueldos de los empleados agrupados por turno.
Imprimir los gastos en sueldos de cada turno.
Programa:
import java.util.Scanner; public class PruebaVector3 { private Scanner teclado; private float[] turnoMan; private float[] turnoTar; public void cargar() { teclado=new Scanner(System.in); turnoMan=new float[4]; turnoTar=new float[4]; System.out.println("Sueldos de empleados del turno de la mañana."); for(int f=0;f<4;f++) { System.out.print("Ingrese sueldo:"); turnoMan[f]=teclado.nextFloat(); } System.out.println("Sueldos de empleados del turno de la tarde."); for(int f=0;f<4;f++) { System.out.print("Ingrese sueldo:"); turnoTar[f]=teclado.nextFloat(); } } public void calcularGastos() { float man=0; float tar=0; for(int f=0;f<4;f++){ man=man+turnoMan[f]; tar=tar+turnoTar[f]; } System.out.println("Total de gastos del turno de la mañana:"+man); System.out.println("Total de gastos del turno de la tarde:"+tar); } public static void main(String[] ar){ PruebaVector3 pv=new PruebaVector3(); pv.cargar(); pv.calcularGastos(); } }
Definimos dos atributos de tipo vector donde almacenaremos los sueldos de los empleados de cada turno:
private float[] turnoMan; private float[] turnoTar;
Creamos los vectores con cuatro elementos cada uno:
turnoMan=new float[4]; turnoTar=new float[4];
Mediante dos estructuras repetitivas procedemos a cargar cada vector:
System.out.println("Sueldos de empleados del turno de la mañana."); for(int f=0;f<4;f++) { System.out.print("Ingrese sueldo:"); turnoMan[f]=teclado.nextFloat(); } System.out.println("Sueldos de empleados del turno de la tarde."); for(int f=0;f<4;f++) { System.out.print("Ingrese sueldo:"); turnoTar[f]=teclado.nextFloat(); }
En otro método procedemos a sumar las componentes de cada vector y mostrar dichos acumuladores:
float man=0; float tar=0; for(int f=0;f<4;f++){ man=man+turnoMan[f]; tar=tar+turnoTar[f]; } System.out.println("Total de gastos del turno de la mañana:"+man); System.out.println("Total de gastos del turno de la tarde:"+tar);
No hay comentarios.:
Publicar un comentario