Esercizio con Array

di il
2 risposte

Esercizio con Array

Buongiorno sto seguendo un corso di programmazione siamo arrivati ai metodi
pero ho lasciato indietro un esercizio con gli array che mi trascino da settimane
L'esercizio mi dice di creare un array di tot numeri che siano pari e dispari messi un po a caso
dal quale deve venire fuori un array della lunghezza nel quale di pari sono a destra e dispari a sinistra.
ho provato con un due cicli for separati e annidati un ciclo con due variabili e alla fine sempre ottengo due array separati
es: int [] paridispari={2,3,5,4,7,8,20} e ottengo sempre {2,4,8,20,0,0,0} oppure {3,5,7,0,0,0,0}.

int []pd= {2,5,4,9,3,6,8,11,20};
int PD=pd.length;
int contatorei1=0;
int contatoreo1=0;
int []newpardis= new int [pd.length];
for(int i1=0,i2=0; i1<PD; i1++,i2++) {
if(pd[i1]%2==0){
newpardis[contatorei1]=pd[i1];
contatorei1++;}

if(pd[i2]%2!=0) {
newpardis[contatoreo1]=pd[i2];
contatoreo1++;}

Qui ovviamente mi stampa {5,9,3,11,0,0,0,0}
Alla fine ho provato con ArrayList e mi viene l'esercizio

int []evenodd= {2,5,4,9,3,6,8,11,20};
int EO=evenodd.length;

ArrayList <Integer> newevenodd =new ArrayList<Integer>();

for(int a1=0; a1<EO; a1++){
if(evenodd[a1]%2==0) {
newevenodd.add(evenodd[a1]);}

}
for(int e1=0; e1<EO; e1++){
if(evenodd[e1]%2!=0) {
newevenodd.add(evenodd[e1]);}

La stampa finale sarà {2,4,6,20,5,9,11}.
Vorrei capire come fare l'esercizio senza ricorrere all'ArrayList

2 Risposte

  • Re: Esercizio con Array

    Karyudz ha scritto:


    L'esercizio mi dice di creare un array di tot numeri che siano pari e dispari messi un po a caso
    dal quale deve venire fuori un array della lunghezza nel quale di pari sono a destra e dispari a sinistra.
    È sufficiente creare un array della stessa lunghezza di quello in input, poi fare 2 cicli for distinti. Ognuno di questi due cicli scansiona tutto l'array iniziale, uno cerca i dispari e l'altri i pari. Ma ci deve essere una variabile con l'indice di destinazione che è "globale" tra i due cicli e si incrementa solo depositando un valore nell'array in uscita.
    È più semplice a farlo che a dirlo ...
    Per i due cicli for basta anche il "for-each" (Java5+) perché tanto l'indice di scansione non serve per altro.
  • Re: Esercizio con Array

    
          int i, j = 0, k, pd[] = {2,5,4,9,3,6,8,11,20}, pn[] = pd.clone();
          for(i = 0; i < pn.length; i++)
            if((pn[i] & 1) == 1){
                k = pn[j];
                pn[j++] = pn[i];
                pn[i] = k;
            }
          System.out.println(java.util.Arrays.toString(pn));
    
Devi accedere o registrarti per scrivere nel forum
2 risposte