Esercizio vettori

di il
3 risposte

Esercizio vettori

Ragazzo affrontando l'argomento dei vettori mi sono trovato dinanzi ad un sercizio con tematica non affrontata all'interno del capitolo,cioè una volta data una dimensione (anche di input) al mio vettore, come faccio ad aumentarla successivamente per inserire un nuovo dato? l'esercizio dice così:
Dopo aver caricato in memoria un vettore di interi con dimensione data in input,accoda un nuovo elemento,aumentando la dimensione del vettore.
come si fa??

3 Risposte

  • Re: Esercizio vettori

    ercucchiaio ha scritto:


    cioè una volta data una dimensione (anche di input) al mio vettore, come faccio ad aumentarla successivamente per inserire un nuovo dato?
    Dipende cosa intendi per "vettore" (che come termine è abbastanza generico e può essere ambiguo):

    - "array" del linguaggio Java: int[], long[], String[] ecc.... Gli array NON sono ridimensionabili. Se vuoi un array più grande, devi istanziarne uno nuovo più capiente e ricopiare i valori dall'array vecchio.

    - "collection", le collezioni nel package java.util, es. ArrayList, Vector, ecc... Le collezioni si ridimensionano e si espandono automaticamente secondo le necessità.
  • Re: Esercizio vettori

    Spero che l'esercizio sia solo a scopo didattico.
    Dico questo perchè mi vengono i brividi solo a pensare di allocare un nuovo array con dimensione aumentata di 1, ricopiare gli elementi nel vecchio array e poi aggiungere il nuovo elemento.

    Ti posto una soluzione di come le cose dovrebbero, in generale, essere fatte.
    public class ArrayEstendibile {
        privare int[] array;
        private int numElementi;
        public ArrayEstendibile(int dimensioneIniziale) {
            array=new int[dimensioneIniziale];
            numElementi=0;
        }
    
        public void aggiungiElemento(int elemento) {
            if(numElementi>=array.lenght/2) {
                int[] nuovoArray=new int[array.lenght*2] ; //creo un array con dimensione doppia
                                                                                //rispetto ad "array"
                for(int i=0; i<numElementi; i++) {
                    nuovoArray[i]=array[i]; //copio gli elementi di "array" in "nuovoArray"
                }
    
                nuovoArray[numElementi]=elemento; //aggiungo in coda l'elemento da inserire
                numElementi++;
    
                array=nuovoArray; //faccio puntare "array" a "nuovoArray"
            
        else { //la dimensione dell'array è "buona" perciò non faccio nessun ridimensionamento
            array[numElementi]=elemento;
            numElementi++;
        }
    
        public int getElementi() {
            //restituisce il numero effettivo di elementi presenti nell'array"
            return numElementi;
        }
    
        public int getDimensione() {
            //restituisce la dimensione (il numero di celle presenti) dell''array
            return array.lenght;
        }
    }
    Per quanto riguarda il tuo esercizio devi cambiare solo la condizione dell'if nel metodo aggiungi() opportunamenti.

    Nota che volendo puoi inserire metodi come rimozioni o inserimenti in posizioni intermendie.
    Volendo, nel caso delle rimozioni, puoi anche ridurre la dimensione dell'array quando il numero di elementi scende sotto una certa soglia.

    Buon Divertimento!
  • Re: Esercizio vettori

    Si, solo esercizi.. ahahah grazie mille comunque, davvero cortese!! mi ha aiutato molto
Devi accedere o registrarti per scrivere nel forum
3 risposte