Vector 2: Manipulando datos

Realizaremos los siguientes ejercicios:

 

1.- Realizar la suma de todos los números de un vector de tamaño 10, los datos los ingresa el usuario.

2.- Dados 10 números, guardar en un vector los números pares y en otro vector los números impares e imprimirlos, los 10 números deben estar almacenados en un vector principal.

3.- De un vector de longitud n, sustituir todos los números pares por un 0 y los impares por un 1, el llenado del vector se hace automático con números aleatorios (Ver Clase Random).

 

Realizar un menú para dar a escoger la ejecución de los problemas anteriores.

1.- Suma de números en un vector

Realizar la suma de todos los números de un vector de tamaño 10, los datos los ingresa el usuario.

 

Primeramente crearé la clase ManipulandoDatos en el cual se resolveran los ejercicios.

 

Para comenzar a resolver este ejercicio necesito daclarar un vector de longitud 10.

 

int vec[]=new int[10];

 

Después empezar a meterle datos, esto lo hacemos mediante un ciclo y como nos pide que los datos son ingresados por el usuario lo haré mediante JOptionPane.

 

for(int i=0;i<vec.length;i++){

    vec[i]=Integer.parseInt(JOptionPane.showInputDialog("Digita el número "+(i+1)+" del vector"));
}

 

Vemos que hay una nueva instrucción vec.length, esta instrucción nos retorna el tamaño del vector en este caso 10, los valores se van guardando en el vector desde i que es 0 hasta vec.length que seria 10 y cada vez que se incrementa i pide un nuevo dato.

 

Una vez teniendo el vector lleno procedemos a realizar la suma de todos los valores,  al mismo tiempo aprovecho para imprimir los datos del vector.

 

int suma=0;
for(int i=0;i<vec.length;i++){
    System.out.print(vec[i]+" ");
    suma+=vec[i];
}
System.out.println("\nLa suma es de: "+suma);

 

En la última impresión agrego \n, esto es un salto de linea y se puede escribir dentro de cualquier cadena.

Ejecución del programa

run1
res1

Código utilizado

int vec[]=new int[10];
        for(int i=0;i<vec.length;i++){
            vec[i]=Integer.parseInt(JOptionPane.showInputDialog("Digita el número "+(i+1)+" del vector"));
        }
        //Visualiza los datos guardados del vector
        int suma=0;
        for(int i=0;i<vec.length;i++){
            System.out.print(vec[i]+" ");
            suma+=vec[i];
        }
        System.out.println("\nLa suma es de: "+suma);

 

int vec[]=new int[10];
        for(int i=0;i<vec.length;i++){
            vec[i]=Integer.parseInt(JOptionPane.showInputDialog("Digita el número "+(i+1)+" del vector"));
        }
        //Visualiza los datos guardados del vector
        int suma=0;
        for(int i=0;i<vec.length;i++){
            System.out.print(vec[i]+" ");
            suma+=vec[i];
        }
        System.out.println("\nLa suma es de: "+suma);

2.- Pares e impares

2.- Dados 10 números, guardar en un vector los números pares y en otro vector los números impares, los 10 números deben estar almacenados en un vector principal.

 

Para este problema primeramente nos pide un vector lleno de datos con 10 números, lo declaro y lo lleno de datos al mismo tiempo.

 

int vec2[]={1,33,4,56,8,99,101,12,7,199};

 

Para poder guardar la cantidad de números pares e impares en otro vector primero necesito saber la cantidad de datos que voy a guardar en cada vector para ello primero examino el vector principal y cuento la cantidad de números pares e impares.

 

int par=0;

int impar=0;
for(int i=0;i<vec2.length;i++){
    if(vec2[i]%2==0)
        par+=1;
    else
        impar+=1;
}

 

Una vez teniendo la cantidad de números pares e impares procedo a crear los nuevos vectores de tamaño par e impar.

 

int vecPar[]=new int[par];
int vecImpar[]=new int[impar];

 

Ya tengo mis vectores creados pero aun están vacíos entonces vuelvo a revisar los datos del vector principal para sacar los datos que queremos, para guardar datos en vecPar y vecImpar necesito una variable que me valla indicando los índices, para ello reutilizo las variable par e impar.

 

par=0; impar=0;
for(int i=0;i<vec2.length;i++){
    if(vec2[i]%2==0){
        vecPar[par]=vec2[i];
        par++;
    }else{
        vecImpar[impar]=vec2[i];
        impar++;
    }
}

 

Al final solo falta imprimir, imprimiré cada vector por separado.

 

System.out.print("Vector original: ");
for(int i=0;i<vec2.length;i++){
    System.out.print(vec2[i]+" ");
}
System.out.print("\nVector con números pares: ");
for(int i=0;i<vecPar.length;i++){
    System.out.print(vecPar[i]+" ");
}
System.out.print("\nVector con números impares: ");
for(int i=0;i<vecImpar.length;i++){
    System.out.print(vecImpar[i]+" ");
}

 

Listo, en este ejercicio aprendimos a pasar datos de un vector a otro.

Programa en ejecución

p2-res

Código completo utilizado

//Problema 2
        int vec2[]={1,33,4,56,8,99,101,12,7,199};
        int par=0;
        int impar=0;
        for(int i=0;i<vec2.length;i++){
            if(vec2[i]%2==0)
                par+=1;
            else
                impar+=1;
        }
        
        int vecPar[]=new int[par];
        int vecImpar[]=new int[impar];
        par=0; impar=0;
        for(int i=0;i<vec2.length;i++){
            if(vec2[i]%2==0){
                vecPar[par]=vec2[i];
                par++;
            }else{
                vecImpar[impar]=vec2[i];
                impar++;
            }
        }
        //Imprimo los vectores
        System.out.print("Vector original: ");
        for(int i=0;i<vec2.length;i++){
            System.out.print(vec2[i]+" ");
        }
        System.out.print("\nVector con números pares: ");
        for(int i=0;i<vecPar.length;i++){
            System.out.print(vecPar[i]+" ");
        }
        System.out.print("\nVector con números impares: ");
        for(int i=0;i<vecImpar.length;i++){
            System.out.print(vecImpar[i]+" ");
        }

3.- Sustitución de números

3.- De un vector de longitud n, sustituir todos los números pares por un 0 y los impares por un 1, el llenado del vector se hace automático con números aleatorios (Ver Clase Random).

 

En este problema veremos algo nuevo, el llenado de un vector con números aleatorios.

 

El llenado de vectores con números aleatorios es muy usado para realizar cálculos probabilísticos  o simplemente para llenar datos de una forma rápida y automática.

 

El problema no es muy complicado viene a ser muy similar al problema No. 2 con la diferencia de que hay que sustituir los números pares por un 0 y los impares con un 1, primero pido la longitud del vector y luego declaro un vector que se llene con datos aleatoriamente (del 0 al 99).

 

int tam=Integer.parseInt(JOptionPane.showInputDialog("Digite la longitud del vector"));
int vec3[]=new int[tam];
Random rnd=new Random();
for(int i=0;i<tam;i++){
    vec3[i]=rnd.nextInt(100);
}

 

Ahora imprimo los datos del vector.

 

for(int i=0;i<vec3.length;i++)
    System.out.print(vec3[i]+" ");

 

Ahora cambio los datos, los pares por 0 y los impares a 1.

 

for(int i=0;i<vec3.length;i++){
    if(vec3[i]%2==0)
       vec3[i]=0;
    else
        vec3[i]=1;
}

 

Vuelvo a imprimir el vector para ver como quedo.

 

for(int i=0;i<vec3.length;i++)
    System.out.print(vec3[i]+" ");

 

En este problema aprendimos a llenar un vector con números aleatorios y sustituir números en el vector.

Ejecución del programa

pun3-run
punto3-res

Código completo utilizado

//Problema 3
  int tam=Integer.parseInt(JOptionPane.showInputDialog("Digite la longitud del vector"));
        int vec3[]=new int[tam];
        Random rnd=new Random();
        for(int i=0;i<tam;i++){
            vec3[i]=rnd.nextInt(100);
        }
        
        for(int i=0;i<vec3.length;i++)
            System.out.print(vec3[i]+" ");
        
        for(int i=0;i<vec3.length;i++){
            if(vec3[i]%2==0)
                vec3[i]=0;
            else
                vec3[i]=1;
        }
        System.out.println(); //Salto de linea
        for(int i=0;i<vec3.length;i++)
            System.out.print(vec3[i]+" ");

//Problema 3
  int tam=Integer.parseInt(JOptionPane.showInputDialog("Digite la longitud del vector"));
        int vec3[]=new int[tam];
        Random rnd=new Random();
        for(int i=0;i<tam;i++){
            vec3[i]=rnd.nextInt(100);
        }
        
        for(int i=0;i<vec3.length;i++)
            System.out.print(vec3[i]+" ");
        
        for(int i=0;i<vec3.length;i++){
            if(vec3[i]%2==0)
                vec3[i]=0;
            else
                vec3[i]=1;
        }
        System.out.println(); //Salto de linea
        for(int i=0;i<vec3.length;i++)
            System.out.print(vec3[i]+" ");

Realizar un menú

package pqtVector;

import java.util.Random;

import javax.swing.JOptionPane;

public class ManipulandoDatos {

    public static void main(String[] args) {
        int op=0;
        String menu="***** Menú de Arreglos *****\n";
        menu+="1.- Suma de números\n";
        menu+="2.- Pares e impares\n";
        menu+="3.- Convertir a 0s y 1s\n";
        menu+="4.- Salir\n";
        menu+="Digita una opción";
        do{
            op=Integer.parseInt(JOptionPane.showInputDialog(menu));
            switch (op) {
            case 1:
                int vec[]=new int[10];
                for(int i=0;i<vec.length;i++){
                    vec[i]=Integer.parseInt(JOptionPane.showInputDialog("Digita el número "+(i+1)+" del vector"));
                }
                //Visualiza los datos guardados del vector
                int suma=0;
                for(int i=0;i<vec.length;i++){
                    System.out.print(vec[i]+" ");
                    suma+=vec[i];
                }
                System.out.println("\nLa suma es de: "+suma);
                break;
            case 2:
                int vec2[]={1,33,4,56,8,99,101,12,7,199};
                int par=0;
                int impar=0;
                for(int i=0;i<vec2.length;i++){
                    if(vec2[i]%2==0)
                        par+=1;
                    else
                        impar+=1;
                }
                
                int vecPar[]=new int[par];
                int vecImpar[]=new int[impar];
                par=0; impar=0;
                for(int i=0;i<vec2.length;i++){
                    if(vec2[i]%2==0){
                        vecPar[par]=vec2[i];
                        par++;
                    }else{
                        vecImpar[impar]=vec2[i];
                        impar++;
                    }
                }
                //Imprimo los vectores
                System.out.print("Vector original: ");
                for(int i=0;i<vec2.length;i++){
                    System.out.print(vec2[i]+" ");
                }
                System.out.print("\nVector con números pares: ");
                for(int i=0;i<vecPar.length;i++){
                    System.out.print(vecPar[i]+" ");
                }
                System.out.print("\nVector con números impares: ");
                for(int i=0;i<vecImpar.length;i++){
                    System.out.print(vecImpar[i]+" ");
                }
                break;
            case 3:
                //Problema 3
                int tam=Integer.parseInt(JOptionPane.showInputDialog("Digite la longitud del vector"));
                int vec3[]=new int[tam];
                Random rnd=new Random();
                for(int i=0;i<tam;i++){
                    vec3[i]=rnd.nextInt(100);
                }
                System.out.println(); //Salto de linea
                for(int i=0;i<vec3.length;i++)
                    System.out.print(vec3[i]+" ");
                
                for(int i=0;i<vec3.length;i++){
                    if(vec3[i]%2==0)
                        vec3[i]=0;
                    else
                        vec3[i]=1;
                }
                System.out.println(); //Salto de linea
                for(int i=0;i<vec3.length;i++)
                    System.out.print(vec3[i]+" ");
                break;
            case 4:
                break;
            default:
                JOptionPane.showMessageDialog(null, "Opción no válida","Error",JOptionPane.ERROR_MESSAGE);
                break;
            }
        }while(op!=4);
        
    }
}