miércoles, 18 de enero de 2017

Arrays: Elimina un elemento

Crea una función "elimina" que reciba como parámetros un array de números y una posición dentro del array. La función tiene que eliminar el elemento que se encuentre en dicha posición desplazando a la izquierda todos los elementos que haya por encima de dicha posición y devolverá el nuevo array que tendrá un elemento menos.
Desde la función principal tendrás que crear un array de 10 elemento y los inicializas con valores aleatorias entre 1 y 100. Ahora tendrás que pedir al usuario la posición que desea eliminar del array y hacer una llamada a la función "elimina" pasándole el array y la posición para que elimine el elemento que hay en dicha posición.
Imprime el contenido del array antes y después de la llamada a la función "elimina".


Ejemplo:
Array inicial:
15 5 2 90 78 45 32 87 47 5

Introduce posición:
> 5

Array después de haber eleminado la posición 5:
15 5 2 90 45 32 87 47 5


SOLUCIÓN EN JAVA:
package eliminaelemento;

import java.util.Arrays;
import javax.swing.JOptionPane;

public class EliminaElemento {

    static int[] elimina(int[] lista, int posicion){
        int []nuevaLista=new int[lista.length-1];
        int i;
        
        //Primero copio los elementos que hay antes de posición en el nuevo array
        for (i=0;i < posicion-1;i++){
            nuevaLista[i]=lista[i];
        }
        //Y ahora copio los elementos que hay detras de posición en el nuevo array
        //de este forma el único elemento que no copio es el que hay en la posición "posicion"
        for (i=posicion;i < lista.length;i++){
            nuevaLista[i-1]=lista[i];
        }
        return nuevaLista;
    }
    
    public static void main(String[] args) {
       int[] lista=new int[10];
       int i, posicion;
       
       //Genero los 10 números aleatorios para el array
       for (i=0;i < lista.length;i++){
           lista[i]=(int)(Math.random()*100+1);
       }
       //Muestro el array inicial
       System.out.println("Array inicial: "+Arrays.toString(lista));
       System.out.println();
       
       try {
           //Pido al usuario la posición
           posicion=Integer.parseInt(JOptionPane.showInputDialog("Introduce la posición del elemento que quieres eliminar:"));
           //llamo a la función para que elimine dicha posición    
           lista=elimina(lista,posicion);
           //Vuelvo a imprimir la lista
           System.out.println("Array después de haber eliminado la posición "+posicion+": "+Arrays.toString(lista));
       } catch (NumberFormatException e) {
           JOptionPane.showMessageDialog(null, "Formato incorrecto");
       } 
    }
}

No hay comentarios:

Publicar un comentario