Está en la página 1de 18

Universidad Nacional de Trujillo Programación Orientada a Objetos I

VECTORES
Un vector es un grupo contiguo de posiciones de memoria relacionadas entre sí. Estas posiciones
están relacionadas por el hecho de que todas tienen el mismo nombre y el mismo tipo. Para referirnos
a una posición o elemento en particular dentro del vector, especificamos el nombre del vector y el
subíndice del elemento.
Un subíndice puede ser un entero o una expresión entera. Si un programa emplea una expresión como
subíndice, la expresión se evalúa para determinar el elemento específico del vector.
Los arreglos de Java siempre comienzan con el elemento 0.

Declaración de un vector
En Java existen dos formas de declarar arreglos:
tipo identificador[]; ó tipo[] identificador;

Por ejemplo, declarar un arreglo de enteros:


int numeros[]; ó int[] numeros;

Creación de un vector
Después de declarar un arreglo, se tiene que crearlo. Para crearlo se coloca la palabra clave new
seguida del tipo de dato y del tamaño del arreglo entre corchetes. Por ejemplo, para crear un arreglo
de 100 elementos de tipo int:
numeros = new int[100];

También se puede declarar y crear un arreglo en una sola instrucción. Por ejemplo, para declarar y
crear un vector de 50 elementos de tipo double:
double promedios[] = new double[50];

Inicialización de un vector
En Java se pueden inicializar arreglos al declararlos. Cuando se especifica valores iniciales dentro de
la declaración de un arreglo, Java realiza la operación new y define el tamaño del arreglo de forma
automática.

Docente: Ing. Marcelino Torres Villanueva 1


Universidad Nacional de Trujillo Programación Orientada a Objetos I

Ejemplos:
int arreglo1[] = { 1, 2, 3, 4, 5};
boolean arreglo2[] = { true, false, true};
String meses[] = { “Enero”, ”Febrero”, ”Marzo”, ”Abril”, ”Mayo”, “Junio”};

Recorrido de un vector
Cada valor dentro de un arreglo se conoce como elemento del arreglo. Para acceder a un elemento de
un arreglo especifique el nombre del arreglo con el índice del elemento entre corchetes [].

Ejemplo:
int numeros[] = { 12, 20, 60, 80, 100 };
for(int indice = 0; indice < 5 ; indice++)
System.out.println( numeros[indice] );

En este ejemplo el tamaño del arreglo es 5. En java el índice del primer elemento del arreglo es cero
y la última posición es el tamaño del arreglo. Debido a esto, para iterar todos los elementos del arreglo,
el programa utiliza loa valores 0 a 4 para la variable del ciclo.

Cómo obtener la longitud de un vector


En Java un arreglo es un objeto. La única variable miembro de un objeto arreglo es la variable length
(longitud), que contiene el tamaño del arreglo. La variable length es de solo lectura, ya que el tamaño
del arreglo no puede cambiar después de crearlo aquel.

Ejemplo: El siguiente código muestra cómo utilizar la variable length dentro de un ciclo for que itera
por todos los elementos del arreglo.
int numeros [] = { 12, 20, 60, 80, 100 };
for(int indice = 0; indice < numeros.length; indice++)
System.out.println( numeros[indice] );

Docente: Ing. Marcelino Torres Villanueva 2


Universidad Nacional de Trujillo Programación Orientada a Objetos I

EJERCICIOS RESUELTOS
Ejercicio 1:
Crear la clase VectorReales que tenga como atributos un arreglo unidimensional y el número de
elementos que se ingresan. Crear los métodos para agregar un elemento, buscar un elemento,
modificar un elemento, eliminar un elemento, insertar un elemento en una posición dada y ordenar
los elementos del vector.

package proyectovectores01;
public class VectorReales {
private double vector[];
private int totalElementos;

public VectorReales(){
vector = new double[50];
totalElementos=0;
}

public VectorReales(int limite){


vector= new double[limite];
totalElementos=0;
}

Docente: Ing. Marcelino Torres Villanueva 3


Universidad Nacional de Trujillo Programación Orientada a Objetos I

public boolean agregar(double valor){


if(totalElementos<vector.length)
{
vector[totalElementos]=valor;
totalElementos++;
return true;
}
else
return false;
}

public double devolverElemento(int indice)


{
return vector[indice];
}
public int getTotalElementos(){
return totalElementos;
}

public int buscar(double valor){


int i;
for(i=0;i<totalElementos;i++)
{
if(vector[i]==valor)
return i;
}
return -1;
}

public boolean modificar(int indice, double nuevo)


{
if(indice >= 0 && indice < totalElementos)
{
vector[indice] = nuevo;
return true;
}
else
return false;
}

public boolean eliminar(int indice)


{
if(indice >= 0 && indice < totalElementos)
{
int i;
for(i = indice; i < totalElementos-1; i++)
vector[i] = vector[i+1];
totalElementos--;
return true;
}

Docente: Ing. Marcelino Torres Villanueva 4


Universidad Nacional de Trujillo Programación Orientada a Objetos I

else
return false;
}

public boolean insertar(int indice, double valor)


{
if(totalElementos < vector.length && indice >= 0
&& indice <= totalElementos)
{
int i;
for(i = totalElementos-1; i >= indice; i--)
vector[i+1] = vector[i];
vector[indice] = valor;
totalElementos++;
return true;
}
else
return false;
}

public void ordenAscendente()


{
int i, j;
double temp;
for(i = 0; i < totalElementos-1; i++)
for(j = i+1; j < totalElementos; j++)
if(vector[i] > vector[j])
{
temp = vector[i];
vector[i] = vector[j];
vector[j] = temp;
}
}

public void ordenDescendente()


{
int i, j;
double temp;
for(i = 0 ; i < totalElementos-1; i++)
for(j = i+1; j < totalElementos; j++)
if(vector[i] < vector[j]){
temp = vector[i];
vector[i] = vector[j];
vector[j] = temp;
}
}

Docente: Ing. Marcelino Torres Villanueva 5


Universidad Nacional de Trujillo Programación Orientada a Objetos I

package proyectovectores01;
import javax.swing.*;

public class FrmVectorReales extends javax.swing.JFrame {


private DefaultListModel modelo=new DefaultListModel();
private VectorReales vectorReales=new VectorReales();

public FrmVectorReales() {
initComponents();
setSize(400,350);
setLocation(300,200);
}

private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {

if(txtValor.getText().compareTo("")!=0)
{
double valor=Double.parseDouble(txtValor.getText());
vectorReales.agregar(valor);
modelo.addElement(txtValor.getText());
txtValor.setText("");
txtValor.requestFocus();
}
else
JOptionPane.showMessageDialog(null,"No se Ingreso Elemento");

private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {

double valor;
int indice;
valor=Double.parseDouble(JOptionPane.showInputDialog("Valor a buscar: "));
indice=vectorReales.buscar(valor);
if(indice!=-1)
JOptionPane.showMessageDialog(null, "Dato se encuentra en posicion :"+indice);
else
JOptionPane.showMessageDialog(null, "Dato no encontrado");
}

private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {

double valor;
int indice;
valor=Double.parseDouble(JOptionPane.showInputDialog("Valor a eliminar: "));
indice=vectorReales.buscar(valor);
if(indice!=-1)
{
vectorReales.eliminar(indice);
modelo.removeElementAt(indice);

Docente: Ing. Marcelino Torres Villanueva 6


Universidad Nacional de Trujillo Programación Orientada a Objetos I

JOptionPane.showMessageDialog(null, "eliminado");
}
else
JOptionPane.showMessageDialog(null, "Dato no encontrado");
}

private void btnInsertarActionPerformed(java.awt.event.ActionEvent evt) {

int indice;
double valor;
indice=Integer.parseInt(JOptionPane.showInputDialog("Indice donde desea insertar:"));
valor=Double.parseDouble(JOptionPane.showInputDialog("Valor a insertar:"));
if(vectorReales.insertar(indice, valor))
{
modelo.add(indice, String.valueOf(valor));
JOptionPane.showMessageDialog(null,"Dato insertado");
}
else
JOptionPane.showMessageDialog(null, "Dato no encontrado");
}

private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {

double valor,nuevo;
int indice;
valor=Double.parseDouble(JOptionPane.showInputDialog("Valor a modificar: "));
indice=vectorReales.buscar(valor);
if(indice!=-1)
{
nuevo=Double.parseDouble(JOptionPane.showInputDialog("Nuevo valor :"));
vectorReales.modificar(indice, nuevo);
modelo.set(indice,String.valueOf(nuevo));
}
else
JOptionPane.showMessageDialog(null, "Dato no encontrado");
}

private void btnOrdenAscendenteActionPerformed(java.awt.event.ActionEvent evt) {

vectorReales.ordenAscendente();
modelo.removeAllElements();
int i;
double valor;
for(i=0;i<vectorReales.getTotalElementos();i++)
{
valor=vectorReales.devolverElemento(i);
modelo.addElement(String.valueOf(valor));
}
}

Docente: Ing. Marcelino Torres Villanueva 7


Universidad Nacional de Trujillo Programación Orientada a Objetos I

private void btnOrdenDescendenteActionPerformed(java.awt.event.ActionEvent evt) {


vectorReales.ordenDescendente();
modelo.removeAllElements();
int i;
double valor;
for(i=0;i<vectorReales.getTotalElementos();i++)
{
valor=vectorReales.devolverElemento(i);
modelo.addElement(String.valueOf(valor));
}
}
}
Ejercicio 2:

Crear clase VectorNumeros que tenga como atributos un arreglo unidimensional de


números reales y el número de elementos ingresados. Además debe tener los métodos
para calcular el mayor, el menor, el promedio y la desviación estándar.

Donde:

Desviación estándar:

Promedio:

Docente: Ing. Marcelino Torres Villanueva 8


Universidad Nacional de Trujillo Programación Orientada a Objetos I

package proyectovectores02;

public class VectorReales {


private double vector[];
private int totalElementos;

public VectorReales(){
vector = new double[50];
totalElementos=0;
}

public VectorReales(int limite){


vector= new double[limite];
totalElementos=0;
}

public boolean agregar(double valor){


if(totalElementos<vector.length)
{
vector[totalElementos]=valor;
totalElementos++;
return true;
}
else
return false;
}

public double devolverElemento(int indice)


{
return vector[indice];
}
public int getTotalElementos(){
return totalElementos;
}

public double obtenerMayor(){


double mayor=vector[0];
int i;
for(i=0;i<totalElementos;i++)
{
if(vector[i]>mayor)
mayor=vector[i];
}
return mayor;
}

public double obtenerMenor(){


double menor=vector[0];
int i;
for(i=0;i<totalElementos;i++)

Docente: Ing. Marcelino Torres Villanueva 9


Universidad Nacional de Trujillo Programación Orientada a Objetos I

{
if(vector[i]<menor)
menor=vector[i];
}
return menor;
}

public double calcularPromedio(){


int i;
double s=0;
for(i=0;i<totalElementos;i++)
{
s=s+vector[i];
}
return s/totalElementos;
}

public double desviacionEstandar() {


int i;
double promedio, suma;
promedio = calcularPromedio();
suma = 0;
for(i = 0; i < totalElementos; i++)
suma += Math.pow(vector[i] - promedio, 2);
return Math.sqrt(suma / (totalElementos - 1));
}
}

package proyectovectores02;
import javax.swing.*;

public class FrmVectores02 extends javax.swing.JFrame {

private final DefaultListModel modelo = new DefaultListModel();


private VectorReales vectorReales = new VectorReales();

public FrmVectores02() {
initComponents();
setSize(400,350);
setLocation(400,200);
}

private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {


/if(txtValor.getText().compareTo("")!=0)
{
double valor=Double.parseDouble(txtValor.getText());
vectorReales.agregar(valor);
modelo.addElement(txtValor.getText());

Docente: Ing. Marcelino Torres Villanueva 10


Universidad Nacional de Trujillo Programación Orientada a Objetos I

txtValor.setText("");
txtValor.requestFocus();
}
else
JOptionPane.showMessageDialog(null,"No se Ingreso Elemento");
}

private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {


txtMayor.setText(String.valueOf(vectorReales.obtenerMayor()));
txtMenor.setText(String.valueOf(vectorReales.obtenerMenor()));
txtPromedio.setText(String.valueOf(vectorReales.calcularPromedio()));
txtDesviacion.setText(String.format("%.2f",vectorReales.desviacionEstandar()));
}

private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {


txtValor.setText("");
txtMayor.setText("");
txtMenor.setText("");
txtPromedio.setText("");
txtDesviacion.setText("");
modelo.clear();
vectorReales=new VectorReales();
txtValor.requestFocus();
}

private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}
}

Docente: Ing. Marcelino Torres Villanueva 11


Universidad Nacional de Trujillo Programación Orientada a Objetos I

Ejercicio 3:
Crear un Vector de números reales y un método que tenga como parámetro otro Vector de números
Reales y calcule el producto Escalar de ellos

package proyectovectores03;

public class VectorReales {


private double vector[];
private int totalElementos;

public VectorReales(){
vector = new double[50];
totalElementos=0;
}

public VectorReales(int limite){


vector= new double[limite];
totalElementos=0;
}

Docente: Ing. Marcelino Torres Villanueva 12


Universidad Nacional de Trujillo Programación Orientada a Objetos I

public boolean agregar(double valor){


if(totalElementos<vector.length)
{
vector[totalElementos]=valor;
totalElementos++;
return true;
}
else
return false;
}

public double devolverElemento(int indice)


{
return vector[indice];
}
public int getTotalElementos(){
return totalElementos;
}

public double calcularProductoEscalar(VectorReales vector1){


int i;
double productoEscalar = 0;
for(i = 0; i < totalElementos; i++)
productoEscalar += vector[i] * vector1.vector[i];
return productoEscalar;
}
}

package proyectovectores03;
import javax.swing.*;

public class FrmVectores03 extends javax.swing.JFrame {

private final DefaultListModel modelo1=new DefaultListModel();


private final DefaultListModel modelo2=new DefaultListModel();
private VectorReales vectorA=new VectorReales();
private VectorReales vectorB=new VectorReales();

public FrmVectores03() {
initComponents();
setSize(550,450);
setLocation(350,150);
}

private void btnIngresoAActionPerformed(java.awt.event.ActionEvent evt) {

int n,i;
double valor;
n=Integer.parseInt(txtN.getText());
modelo1.clear();
Docente: Ing. Marcelino Torres Villanueva 13
Universidad Nacional de Trujillo Programación Orientada a Objetos I

for(i=0;i<n;i++)
{
valor=Double.parseDouble(JOptionPane.showInputDialog("Ingrese numero["+i+"]:"));
vectorA.agregar(valor);
modelo1.addElement(String.valueOf(valor));
}
}

private void btnIngresoBActionPerformed(java.awt.event.ActionEvent evt) {


int n,i;
double valor;
n=Integer.parseInt(txtN.getText());
modelo2.clear();
for(i=0;i<n;i++)
{
valor=Double.parseDouble(JOptionPane.showInputDialog("Ingrese numero["+i+"]:"));
vectorB.agregar(valor);
modelo2.addElement(String.valueOf(valor));
}

private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {


txtProductoEscalar.setText(String.valueOf(vectorA.calcularProductoEscalar(vectorB)));
}

private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {


txtN.setText("");
modelo1.clear();
modelo2.clear();
txtProductoEscalar.setText("");
vectorA = new VectorReales();
vectorB = new VectorReales();
txtN.requestFocus();

private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}
}

Docente: Ing. Marcelino Torres Villanueva 14


Universidad Nacional de Trujillo Programación Orientada a Objetos I

Ejercicio 4:
Ingresar n números en un vector y mostrar luego, primero la lista de los números pares que fueron
ingresados y luego la lista de los números negativos.

package proyectovectores04;

public class VectorEnteros {


private int vector[];
private int totalElementos;

public VectorEnteros(){
vector = new int[50];
totalElementos=0;
}

public VectorEnteros(int limite){


vector= new int[limite];
totalElementos=0;
}

public boolean agregar(int valor){


if(totalElementos<vector.length)
{
vector[totalElementos]=valor;
totalElementos++;

Docente: Ing. Marcelino Torres Villanueva 15


Universidad Nacional de Trujillo Programación Orientada a Objetos I

return true;
}
else
return false;
}

public int devolverElemento(int indice)


{
return vector[indice];
}

public int getTotalElementos(){


return totalElementos;
}

public VectorEnteros devolverPares(){


VectorEnteros pares = new VectorEnteros(vector.length);
for(int i = 0; i < totalElementos; i++){
if(vector[i] % 2 == 0)
pares.agregar(vector[i]);
}
return pares;
}

public VectorEnteros devolverNegativos(){


VectorEnteros negativos = new VectorEnteros(vector.length);
for(int i = 0; i < totalElementos; i++){
if(vector[i] < 0)
negativos.agregar(vector[i]);
}
return negativos;
}

package proyectovectores04;
import javax.swing.*;

public class FrmVectores04 extends javax.swing.JFrame {

private DefaultListModel modelo1 = new DefaultListModel();


private DefaultListModel modelo2 = new DefaultListModel();
private DefaultListModel modelo3 = new DefaultListModel();
private VectorEnteros vectorEnteros=new VectorEnteros();
private VectorEnteros vectorPares = new VectorEnteros();
private VectorEnteros vectorNegativos = new VectorEnteros();

public FrmVectores04() {
initComponents();
setSize(500,350);
Docente: Ing. Marcelino Torres Villanueva 16
Universidad Nacional de Trujillo Programación Orientada a Objetos I

setLocation(300,150);
}

private void btnIngresarActionPerformed(java.awt.event.ActionEvent evt) {


int n,i,valor;
n=Integer.parseInt(txtN.getText());
modelo1.clear();
for(i=0;i<n;i++)
{
valor=Integer.parseInt(JOptionPane.showInputDialog("Ingrese numero["+i+"]:"));
vectorEnteros.agregar(valor);
modelo1.addElement(String.valueOf(valor));
}

private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {


vectorPares=vectorEnteros.devolverPares();
vectorNegativos=vectorEnteros.devolverNegativos();
int i,valor;
modelo2.clear();
for(i=0;i<vectorPares.getTotalElementos();i++)
{
valor=vectorPares.devolverElemento(i);
modelo2.addElement(String.valueOf(valor));
}
modelo3.clear();
for(i=0;i<vectorNegativos.getTotalElementos();i++)
{
valor=vectorNegativos.devolverElemento(i);
modelo3.addElement(String.valueOf(valor));
}
}

private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {


txtN.setText("");
modelo1.clear();
modelo2.clear();
modelo3.clear();
vectorEnteros=new VectorEnteros();
vectorPares=new VectorEnteros();
vectorNegativos=new VectorEnteros();
txtN.requestFocus();
}

private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {


dispose();
}
}

Docente: Ing. Marcelino Torres Villanueva 17


Universidad Nacional de Trujillo Programación Orientada a Objetos I

EJERCICIOS PROPUESTOS
1. Ingresar n enteros en un vector A y otra n enteros en un vector B y mostrar la lista de enteros
del vector C. Donde cada C[i]=A[i]+B[i]
2. Sea un vector de reales de n elementos. Mostrar la lista de números menores al promedio.
3. Lea dos vectores A y B y luego diga que elementos del vector A no se encuentran en B.
4. Ingresar N notas en un vector y determinar el porcentaje de aprobados y el porcentaje de
desaprobados
5. Ingresar n elementos en un vector y luego ingresar un elemento y reportar cuantas veces
aparece ese elemento en el vector.
6. Ingresar dos vectores y reportar si son iguales
7. Calcule la mediana de un conjunto de datos. La mediana de un vector ordenado es el elemento
central si el número de términos es impar. Y la semisuma de los términos centrales si el
número de términos es par.
8. Calcule el promedio ponderado de un conjunto de datos. Se deben ingresar las cantidades con
sus respectivos pesos.
9. Ingresar 2 vectores de n y m elementos y calcular la unión, intersección y la diferencia del
primero con el segundo.
10. Calcule la media armónica de un conjunto de datos. La media armónica se define como: el
Inverso del promedio de los inversos.
11. Programa para ingresar n elementos en un vector y al final quede sin elementos repetidos
12. Programa para ingresar n elementos en un vector y luego ingresar un elemento, si este se
encuentra en el vector eliminarlo todas las veces que se encuentra.

Docente: Ing. Marcelino Torres Villanueva 18

También podría gustarte