Páginas

miércoles, 26 de marzo de 2014

Manejo de Vectores en Java

MANEJO DE VECTORES

Un vector es una estructura de datos que permite almacenar un CONJUNTO de datos del MISMO tipo. Se define un vector con un nombre y por medio de un índice hacemos referencia a cada uno de sus elementos.



Para la declaración de un vector primero se coloca el nombre seguidos de corchetes uno abierto y el otro cerrado, es decir

int[] V=new int[6];              o también             int V[]=new int[6];




En este caso el vector es de tipo entero y tiene como nombre de variable V de tamaño 6, es decir en el vector V se puede guardar solo 6 elementos, para acceder a uno de sus elementos es a través del índice, es decir:

V[1] se encuentra el elemento 43
V[2] se encuentra el elemento 5
V[3] se encuentra el elemento 1
V[4] se encuentra el elemento 9
V[5] se encuentra el elemento 20

También se puede crear un vector de otro tipo de datos y con diferentes tamaños, como por ejemplo

Vector de elementos que almacena numeros reales, declaramos un vector con un tamaño de 20 elementos que puede almacenar (o la cantidad que necesitemos)

double[] V=new double[20];


2,3 0,04 -90,8 2,3 …. 5,6

Vector de elementos que almacena caracteres, declaramos un vector con un tamaño de 32 elementos que puede almacenar

char[] V=new char[32];


‘a’ ‘k’ ‘4’ ‘ ! ’ …. ‘>’

Vector de elementos que almacena cadenas, declaramos un vector de cadenas de tamaño 13

String [] V=new String[13];


“juan” “LAB111” “Jose Carlos” ... "123"

EJERCICIOS


1. Dado  un vector P[] contar cuantos de sus elementos son pares

class EjemploVector01 {
 void leer(int v[],int n){
  int i;
  for(i=1;i<=n;i++)
   v[i]=Leer.datoInt();
 }
 void mostrar(int v[],int n){
  int i;
  for(i=1;i<n;i++) 
   System.out.print(v[i]+"  ");
  System.out.println();
 }
 
 int SumaPares(int v[],int n){
  int i,c=0;
  for(i=1;i<=n;i++){
   if(v[i]%2==0)
    c++;   
  }
  return c;
 }
 public static void main(String[] args) {
  int v[]=new int[20];
  int n,resultado;
  EjemploVector01 P=new EjemploVector01();  
  n=Leer.datoInt();
  P.leer(v, n);
  P.mostrar(v, n);
  //llamamos al funcion SumaPares y el valor que retorna se guarda en la variable resultado
  resultado=P.SumaPares(v, n);
  System.out.print("Existen "+resultado +" pares en el vector");
 }
}

2. Dado un vector de tipo double que almacena alturas de personas, calcular el promedio de alturas y contar cuantas personas son más altas que el promedio y cuantas son más bajas.
Ejemplo:

Si n=5
1,7 1,75 2 1,8 1,82
El promedio es P=(1,7+1,75+2+1,8+1,82)/5
Promedio de alturas es : 1.814
Cantidad de personas mayores al promedio: 2
Cantidad de personas menores al promedio: 3



import java.util.Scanner;

class EjemploVector02 {
 double promedio;
 
 void leer(double v[],int n){
  int i;
  for(i=1;i<=n;i++){
   Scanner lee=new Scanner(System.in);
   v[i]=lee.nextDouble();
  }
   
 }
 void mostrar(double v[],int n){
  int i;
  for(i=1;i<=n;i++) 
   System.out.print(v[i]+"  ");
  System.out.println();
 }
    void calcularPromedio(double v[],int n) {
        double suma;
        suma=0;
        for(int i=1;i<=n;i++) {
            suma=suma+v[i];
        }
        promedio=suma/n;
        System.out.println("Promedio de alturas:"+promedio);
    }
 
    public void mayoresMenores(double v[],int n) {
        int may,men;
        may=0;
        men=0;
        for(int i=1;i<=n;i++) {
            if (v[i]>promedio) {
         may++;
            } else {
                if (v[i]<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) {
        EjemploVector02 A=new EjemploVector02();
        double alturas[]=new double[20];
        int n;
        System.out.print("Introducimos la cantidad de datos del vector n = ");
        Scanner lee=new Scanner(System.in);
        n=lee.nextInt();
        System.out.println("Leemos los datos del vector");
        A.leer(alturas, n);
        System.out.println("Mostramos los datos del vector");
        A.mostrar(alturas, n);
        A.calcularPromedio(alturas,n);
        A.mayoresMenores(alturas,n);
    }
}


3. Dado un vector A[] de tamaño k, invertir sus elementos. (llenar el vector con numeros generados aleatoriamente)
Ejemplo:



import java.util.Scanner;

class EjemploVector03 {
 
 //procedimiento que almacena dato de tipo entero de forma randomica, es decir sin leer por teclado
 void Inserta(int A[],int k){
  int i,r;  
  for(i=1;i<=k;i++){
   //los numero generados randomicamente seran entre 0 y 10
   r=(int)Math.round(Math.random()*10);  
   A[i]=r;
  }   
 }
 void mostrar(int A[],int k){
  int i;
  for(i=1;i<=k;i++) 
   System.out.print(A[i]+"  ");
  System.out.println();
 }
  
 void InvierteVector(int A[],int k)
 {
  int i,f,aux,mitad;
  //calculamos la mitad del tamano del vector
  //si k=5, en la variable mitad se tiene 2
  mitad=k/2;
  //f apuntara al indice final del vector,si k=5 entonces f=5
  f=k;
  for(i=1;i<=mitad;i++){
         //realizamos intercambio del 1er elemento con el ultimo
   //   el segundo elemento con el penultimo
   //   y asi sucesivamente
   aux=A[i];
   A[i]=A[f];   
   A[f]=aux;
   f--;     
  }
  
 }
    public static void main(String[] ar) {
        EjemploVector03 I=new EjemploVector03();
        int A[]=new int[50];
        //leemos numero de elementos del vector
        System.out.print("numero de elementos : ");
        Scanner lee=new Scanner(System.in);        
        int k=lee.nextInt();
        //llamamos al procedimiento para que genere randomicamente llene de datos el vector A
        I.Inserta(A, k);        
        I.mostrar(A, k);
        I.InvierteVector(A, k);
        I.mostrar(A, k);
    }
}

4. Dado un vector R[], realizar la rotación de sus elementos hacia la derecha, y hacia la izquierda
Ejemplo:



import java.util.Scanner;
class EjemploVector04 {

 void mostrar(int v[],int n){
  int i;
  for(i=1;i<=n;i++) 
   System.out.print(v[i]+"  ");
  System.out.println();
 }

 //procedimiento que realiza la rotacion de de los elementos de un vector 
 void RotaDerecha(int R[],int n)
 {
  int j,aux;
  aux=R[n];  //guardamo el dato del ultimo elemento del vector R
  //recorremos el vector desde el final hasta 2do elemento para rotarlo
  for(j=n;j>=2;j--)
  {
   R[j]=R[j-1];
  }
  //
  R[1]=aux;
 }
 
 void RotaIzquierda(int R[],int n)
 {
  int j,aux;
  aux=R[1];  //guardamo el dato del ultimo elemento del vector R
  //recorremos el vector desde el 1er elemento hasta el penultimo para rotarlo
  for(j=1;j<n;j++)
  {
   R[j]=R[j+1];
  }
  R[n]=aux;
 }
 //procedimiento para rotar k-veces un vector, en este caso hacia la derecha
 void Rotar(int R[],int n)
 {
  System.out.print("Leer numero de veces a rotar el vector k = ");
  Scanner lee=new Scanner(System.in);
  int b,k;
  k=lee.nextInt();
  for(b=1;b<=k;b++)
  {
   //llamamos al procedimiento para rotar
   RotaDerecha(R, n);
   //en cada rotacion mostramos el vector
   mostrar(R, n);
  }  
 }
 public static void main(String[] args) {
  EjemploVector05 F=new EjemploVector05();
  //declaramos el vector con datos de forma directa 
  int R[]={0,12,3,5,7,42,11}; //colocamos un 0 en la primera posicion ya que corresponde a R[0]
  int n=6;   //el vector R contiene 6 elementos 12,3,5,7,42 y 11  
  System.out.println("Mostramos los datos del vector R");
  F.mostrar(R, n);
  //llamamos al procedimiento a traves de S para rotar a la derecha
  F.RotaDerecha(R, n);  
  System.out.println("Mostramos los datos del vector R rotados a la derecha");
  F.mostrar(R, n); 
  //llamamos al procedimiento a traves de S para rotar a la izquierda  
  F.RotaIzquierda(R, n);
  System.out.println("Mostramos los datos del vector R rotados a la izquierda");
  F.mostrar(R, n);
  //llamamos al procedimiento a traves de S para rotar k veces  
  F.Rotar(R, n);   
 }

}



No hay comentarios:

Publicar un comentario