Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


ejercicio propuesto programacion, Ejercicios de Programación Java

Un ejercicio propuesto para practicar programacion

Tipo: Ejercicios

2019/2020

Subido el 06/09/2020

yan-fran-arias
yan-fran-arias 🇨🇴

5 documentos

1 / 21

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
ARREGLOS EN UNA DIMENSIÓN
(VECTORES)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Vista previa parcial del texto

¡Descarga ejercicio propuesto programacion y más Ejercicios en PDF de Programación Java solo en Docsity!

ARREGLOS EN UNA DIMENSIÓN

(VECTORES)

DESARROLLO

CONCEPTOS DE ARREGLOS EN UNA DIMENSIÓN:

Los vectores también se conocen como Arreglos Unidimensionales, estos son estructuras

de datos que contienen una colección de datos del mismo tipo. Se puede decir entonces que

contienen una secuencia de datos finitos, pertenecientes al mismo dominio. Ejemplo: Las

notas de los estudiantes de un curso, el sueldo neto de los empleados de una empresa, los

precios de los productos de una tienda, etc.

Los datos que se almacenan dentro de un vector serán los elementos del arreglo y se

enumeran desde 0 hasta N-1, siendo N el número de elementos (0, 1, 2, 3…. N-1). Esta

enumeración se utiliza para localizar los elementos dentro del arreglo y se denominan

índices. En Java los índices de un arreglo comienzan desde 0 para la primera posición y

terminan con el “tamaño del arreglo – 1”.

Lo anterior quiere decir que si el vector tiene N elementos se denotaran de la siguiente

manera: vector[0], vector[2], vector[3], vector[N-1].

 Propiedades de un arreglo:

1. Los arreglos sirven de contenedores a la hora de almacenar datos que estén

relacionados, de esta manera se pueden declarar arreglos de un determinado tipo de

datos, en vez de variables por separado para cada uno de los elementos del vector.

2. Todos los datos almacenados en un arreglo son del mismo tipo. Se pueden crear

arreglos de tipo entero (int) o de tipo real (float), pero no se pueden tener dentro de un

mismo arreglo datos de tipo int y datos de tipo float (al menos que sea un vector de

objetos).

3. A los elementos del vector se accede a través de la posición que ocupan dentro del

conjunto de elementos del arreglo, es decir a través de los índices.

4. El tamaño del vector se establece cuando se crea dicho vector, y para esto en Java se

utiliza el operador new. El tamaño del vector siempre será una cifra entra (

elementos, 5 elementos).

 Como acceder a los elementos del vector:

Para acceder a los elementos de un vector, se utilizan los índices. Esto con el propósito de

indicar la posición que ocupa un elemento dentro del vector:

Nombre_Vector [índice]

La siguiente sintaxis haría referencia a lo que tiene el arreglo de nombre vectorNotas en

la primera posición del vector.

vectorNotas[ 0 ]

Hay que tener en cuenta que en Java el primer elemento de un vector se encuentra en la

posición cero. El índice del último elemento será el número de elementos -1.

Ejemplo: Si se define el siguiente vector float notas = new float [3];

IMPLEMENTACIÓN DE ARREGLOS EN UNA DIMENSIÓN EN JAVA:

 Ejercicio propuesto:

El siguiente ejemplo permite declara un vector de números enteros con un tamaño fijo, la

aplicación permite almacenar los datos de tipo entero dentro del vector. Una vez lleno el vector se

realiza operaciones sobre los elementos almacenados. Entre las operaciones que se realizan sobre

los datos del vector están:

1. Calcular la suma y el promedio de los números enteros almacenados dentro del vector.

2. Determinar cuál es el elemento mayor y menor dentro del vector.

3. Imprimir los elementos del vector desde la última posición hasta la primera.

 Diseño de clases UML de la solución

 Implementación de la clase DeclaraVector en el fichero DeclaraVector.java:

En esta clase DeclaraVector se implementan los métodos selectores y modificadores para guardar

datos dentro del vector y tomar datos del mismo. Se implementa la lógica de los métodos que

permiten sumar todos los elementos del vector, calcular el promedio y determinar cuál es el

elemento mayor y menor de los datos registrados.

public class DeclararVector { //Declaración de una constante (numeroElementos) de tipo entero para asignar el tamaño. static final int numeroElementos = 5; private int vectorNumeros[]; //Otra forma private int[] vectorNumeros; //Esta puede ser otra forma de declarar y crear el vector private int[] vectorNumeros = new int[N]; //Método constructor de la clase DeclararVector, se asignan os valores iniciales a los atributos. public void DeclararVector(){ vectorNumeros = null; } //El siguiente método crea el vector y le asigna su respectivo tamaño según lo asignado en la //constante numeroElementos. public void crearVector(){ vectorNumeros = new int[numeroElementos]; } //Se implementa el método modificador para asignar los elementos del vector en cada una de las //posiciones. El método modificador del vector es de tipo procedimiento (void), se le pasan dos //parámetros: uno de tipo entero (p) correspondiente a la posición del vector en donde se //almacenara el dato y otro de tipo entero (dato) correspondiente al elemento que se va a //almacenar, en dicha posición. public void setVectorNumeros(int p, int dato){ vectorNumeros[p] = dato; }

 Implementación de la clase Main en el fichero Main.java

En la clase Main se implementa el método que recorre el vector y muestra sus elementos,

igualmente se implementa un menú de opciones en donde permite registrar los datos en el vector

y se muestran los resultados de los métodos implementados en la clase DeclaraVector.

public class Main { //Se implementa el método que permite recorrer el vector y muestra los elementos. public static void mostrarVector(DeclararVector vec){ String datosVector = ""; for(int i=0; i<=vec.numeroElementos-1; i++){ datosVector = datosVector+String.valueOf("Posición "+i+": "+vec.getVectorNumeros(i)+"\n"); } JOptionPane.showMessageDialog(null, "============ ELEMENTOS DEL VECTOR ============"+"\n"+datosVector); } //Se implementa el método con el menú de opciones de la aplicación para las diferentes //operaciones sobre el vector. public static int menu(){ int opcion = 0; do{ opcion = Integer.parseInt(JOptionPane.showInputDialog("====== SELECCIONE UNA OPCIÓN DEL MENÚ ====== \n"+ "1. LLenar Vector \n"+"2. Suma y Promedio de los Elementos \n"+"3. Elemento Mayor y Menor \n"+ "4. Mostar Elementos de Vector \n"+"5. Salir \n"+ "\n \n Seleccione una opción del 1 al 5")); }while(opcion <= 0 || opcion > 5); return opcion; } public static void main(String[] args) { DeclararVector vec = new DeclararVector(); int opcion; do{ opcion = menu(); switch(opcion) { case 1: vec.crearVector(); for(int i=0; i<=vec.numeroElementos-1; i++){ int dato = Integer.parseInt(JOptionPane.showInputDialog(null, "Digitar Elemento de la Posición "+i+": ")); vec.setVectorNumeros(i, dato); } JOptionPane.showMessageDialog(null,"Vector Lleno.... "); mostrarVector(vec); break; case 2: JOptionPane.showMessageDialog(null, "========= SUMA Y PROMEDIO DE LOS ELEMENTOS ========= \n\n"+ "Suma de los Elementos: "+vec.sumaVector()+"\n\n Promedio de los Elementos: "+vec.promedioVector()+ "\n\n"

  • ""); break; case 3:

JOptionPane.showMessageDialog(null, "========= ELEMENTO MAYOR Y MENOR DEL VECTOR ========= \n\n"+ "Elemento Mayor: "+vec.mayorElemento()+"\n\n Elemento Menor: "+vec.menorElemento()+"\n\n"+ ""); break; case 4: mostrarVector(vec); break; case 5: break; } }while(opcion != 5); } }

Vector codigoProducto Vector cantidad Vector precioProducto Vector nombreProducto

Leche Azucar Aceite Huevos Carne 2500 1400 5000 500 6500 20 5 8 30 10

Figura 1. Esquemas Vectores en Paralelo Vector codigoProducto Vector cantidad Vector precioProducto Vector nombreProducto

Leche Azucar Aceite Huevos Carne 2500 1400 5000 500 6500 20 5 8 30 10

Figura 2. Producto específico con sub_índice 1

Entonces en la solución utilizando Vectores en Paralelo se tendrían que declarar cuatro vectores,

para almacenar en cada uno de ellos la información asociada a los atributos de la clase Productos.

Es decir, un vector de tipo entero para registrar los códigos de los productos, otro vector de tipo

cadena para registrar los nombres de cada producto, uno para los precios y un vector para las

cantidades.

Los cuatro vectores tendrán un mismo tamaño y existirá una correspondencia entre los índices de

cada vector para identificar la información correspondiente a un producto específico. En la

siguiente figura se aprecia cómo se almacena la información bajo el esquema de vectores en

paralelo para un producto.

Como se muestra en la Figura 1, la información de un producto específico se determina basado en

los índices correspondientes; es decir la información del producto 1; está definida por los valores

en los arreglos codigoProducto[1], nombreProducto[1], precioProducto[1] y cantidad[1] en la

posición o índice igual a 1 (Ver Figura 2).

IMPLEMENTACIÓN DE VECTORES EN PARALELO

 Ejercicio propuesto:

Teniendo en cuenta la problemática plateada anteriormente se requiere registrar la información de

los productos de un supermercado y obtener el nombre del producto o los productos de mayor

valor.

 Diseño de clases UML de la solución

 Implementación de la clase Productos en el fichero Productos.java

En la clase Productos se declaran los cuatro vectores para registrar la información de los productos,

además se implementa el método que devuelve el mayor precio registrado.

public class Productos { //Se declaran los cuatro vectores para registrar la información de los productos. private int codigoProducto[]; private String nombreProducto[]; private float precioProducto[]; private int cantida[]; private int tamano; //Atributo para asignar el tamaño de los 4 vectores. //Método constructor de la clase Productos.

//Método que devuelve el mayor precio. public float mayorPrecio(){ float mayor = getPrecioProducto(0); for (int i=0; i<=getTamano()-1; i++){ if (getPrecioProducto(i) > mayor){ mayor = getPrecioProducto(i); } } return mayor; } }

 Implementación de la clase Main en el fichero Main.java

public class Main { //Método que muestra el contenido de los cuatro vectores, manejando una correlación en su posición. public static void mostrarVector(Productos vec){ String datosVector = ""; for(int i=0; i<=vec.getTamano()-1; i++){ datosVector = datosVector+String.valueOf("CODIGO: "+vec.getCodigoProducto(i)+" "+ "NOMBRE: "+vec.getNombreProducto(i)+" "+"PRECIO: "+vec.getPrecioProducto(i)+" "+ "CANTIDAD: "+vec.getCantidad(i)+"\n"); } JOptionPane.showMessageDialog(null, "=========== PRODUCTOS REGISTRADOS EN EL VECTOR ==========="+"\n\n"+datosVector); } //Método que muestra el menú de opciones al usuario. public static int menu(){ int opcion = 0; do{ opcion = Integer.parseInt(JOptionPane.showInputDialog("===== SELECCIONE SELECCIONE UNA OPCIÓN DEL MENÚ =====\n\n"+ "1. Registrar información de los productos \n"+"2. Mostar los productos más costosos \n"+ "3. Mostrar los productos registrados \n"+"4. Salir"+ "\n \n Seleccione una opción del 1 al 4")); }while(opcion <= 0 || opcion > 4); return opcion; } //Método que lista los nombres de los productos de mayor precio. public static void productosMayorPrecio(Productos vec){ String datosVector = ""; for(int i=0; i<=vec.getTamano()-1; i++){ if(vec.getPrecioProducto(i) == vec.mayorPrecio()){ datosVector = datosVector+String.valueOf("NOMBRE: "+vec.getNombreProducto(i)+"\n"); } }

JOptionPane.showMessageDialog(null, "=========== PRODUCTOS MAS COSTOSOS EN EL VECTOR ==========="+"\n"+datosVector); } public static void main(String[] args) { Productos vec = new Productos(); int opcion; do{ opcion = menu(); switch(opcion) { case 1: int numeroElementos = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el Número de Productos a Registrar:")); vec.setTamano(numeroElementos); vec.crearVectores(); for(int i=0; i<=vec.getTamano()-1; i++){ int codigo = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el Código del Producto "+i+": ")); String nombre = JOptionPane.showInputDialog(null, "Digite el Nombre del Producto "+i+": "); float precio = Float.parseFloat(JOptionPane.showInputDialog(null, "Digite el Precio del Producto "+i+": ")); int cantidad = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite la cantidad de Productos "+i+": ")); vec.setCodigoProducto(i, codigo); vec.setNombreProducto(i, nombre); vec.setPrecioProducto(i, precio); vec.setCantidad(i, cantidad); } JOptionPane.showMessageDialog(null,"Productos Registrados.... "); mostrarVector(vec); break; case 2: productosMayorPrecio(vec); break; case 3: mostrarVector(vec); break; case 4: break; } }while(opcion != 4); } }

IMPLEMENTACIÓN DE VECTORES DE OBJETOS

 Ejercicio propuesto:

Consideremos entonces el siguiente problema, en donde se quiere registrar la información de los

estudiantes del curso de programación, correspondiente a su código, nombre y nota definitiva.

Además se requiere de un informe con el promedio de los estudiantes que reprobaron la nota y los

nombres de los estudiantes que reprobaron la nota.

 Diseño de clases UML de la solución

 Implementación de la clase Estudiantes en el fichero Estudiantes.java

public class Estudiantes { int codigo; String nombre; float nota; public Estudiantes(){ codigo = 0; String nombre = ""; float nota = 0; } public void setCodigo(int cod){ codigo = cod; } public void setNombre(String nom){ nombre = nom; } public void setNota(float n){ nota = n; } public int getCodigo(){ return codigo; } public String getNombre(){ return nombre; } public float getNota(){ return nota; } }

 Implementación de la clase DeclararVectorObjetos en el fichero

DeclararVectorObjetos.java

public class DeclararVectorObjetos { private int tamano; //Se define un atributo para asignar el tamaño que tendrá el vector. private Estudiantes vectorEstudiantes[];//Se declara el vector de tipo Estudiantes. public DeclararVectorObjetos(){ tamano = 0; vectorEstudiantes = null; } public void crearVector(){ vectorEstudiantes = new Estudiantes[tamano]; } //Métodos modificadores y selectores para asignar y obtener el tamaño del vector. public void setTamano(int N){ tamano = N; } public int getTamano(){ return tamano; }

return opcion; } //Método que asigna valores a los atributos de la Estudiantes. public static void llenar(Estudiantes est){ int cod = Integer.parseInt(JOptionPane.showInputDialog("Digite CODIGO del Estudiante: ")); est.setCodigo(cod); String nom = JOptionPane.showInputDialog("Digite NOMBRE del Estudiante: "); est.setNombre(nom); float note = Float.parseFloat(JOptionPane.showInputDialog("Digite La NOTA del Estudiante:")); est.setNota(note); } public static void main(String[] args) { DeclararVectorObjetos obj = new DeclararVectorObjetos(); Estudiantes est; int opcion; do{ opcion = menu(); switch(opcion) { case 1: int numeroElementos = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el Número de Elementos del Vector:")); //Se pasa el dato capturado al respectivo método modificador. obj.setTamano(numeroElementos); //Se llama al método que crea el vector en tiempo de ejecución. obj.crearVector(); for(int i=0; i<=obj.getTamano()-1; i++){ est = new Estudiantes(); JOptionPane.showMessageDialog(null, "============ ELEMENTOS DEL VECTOR ============"+"\n \n"+ "Ingresar la Informacón del estudiante ---- "+(i+1)); llenar(est); obj.setVectorEstudiantes(i, est); } mostrarVector(obj); break; case 2: mostrarVector(obj); break; case 3: JOptionPane.showMessageDialog(null, "======== PROMEDIO DE LOS ESTUDIANTES QUE REPROBARON ========"+"\n\n"+ "Promedio Reprobados: "+obj.promedioRepobados()); break; case 4: //La opción cuatro muestra los nombres de los estudiante que reprobaron. String datosVector = ""; for(int i=0; i<=obj.getTamano()-1; i++){ if (obj.getVectorEstudiantes(i).getNota() < 3){ datosVector = datosVector+String.valueOf("NOMBRE: "+obj.getVectorEstudiantes(i).getNombre()+"\n"); } } JOptionPane.showMessageDialog(null,"===== NOMBRE DE LOS ESTUDIANTES QUE REPROBARON ====="+"\n"+datosVector); break; case 5:

break; } }while(opcion != 5); } }

EJERCICIOS/ACTIVIDADES

1. Se quiere almacenar en un arreglo las N notas de los estudiantes del curso de programación y

se desea saber cuántos estudiantes obtuvieron una nota entre 3.0 y 4.0; además de los

estudiantes con nota superior a 4.0, el total de estudiantes que reprobaron la materia, el

promedio de los reprobados y el promedio general del curso.

2. Se tiene un vector de números enteros para el cual se desea obtener el total de números pares

e impares del arreglo, el promedio de los números que son múltiplos de 5, la suma de los

números pares y el promedio de los impares.

3. Teniendo en cuenta el ejercicio implementado en el tema de Vectores en Paralelo , agregar la

siguiente funcionalidad a la aplicación:

 Generar un Informe con los nombres de los productos que superen un precio de 2500 y

tengan menos de 5 productos en existencia.

 Buscar la información de un producto pasando como paramento su código. Se recomienda

implementar un método que devuelva la posición del correspondiente índice del producto

buscado.

 Utilizando otro vector auxiliar, almacenar el valor total que cobrara el supermercado por

la venta cada producto en existencia. Se debe tener en cuenta el precio de cada producto y

la cantidad en existencia.

4. El bienestar infantil departamental quiere implementar el programa de niños bajos en peso.

Para cumplir con este objetivo, se quiere recolectar la información de los niños entre 1 y 5 años

de los municipios de Montería, Lorica y Sahagún. Entre los datos generales de los niños están:

el número de registro civil y el nombre del niño.