Visualizzazione dei risultati da 1 a 3 su 3

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    22

    PROBLEMA! Trovare elementi doppi in un array

    Ciao a tutti ragazzi! Ho iniziato quest'anno la facolt� di economia informatica all'universit� e ho alcuni problemi con java! Non riesco ancora ad entrare completamente nel suo mondo e questa cosa mi fa incazzare, perch� mi piacerebbe imparare ad usare questo linguaggio molto bene.

    Vi spiego il mio problema, il mio professore ha assegnato questo esercizio:

    Scrivere un metodo
    public static boolean primaOccorrenza (int[]a, int pos)
    che, preso come parametro un array di numeri interi a e un intero pos, senza modificare il contenuto dell�array, restituisce true se e solo se l�elemento in posizione pos non compare nell�array a nelle posizioni da 0 a pos‐1. Se a vale null, viene restituito false. Se pos � fuori dagli indici ammissibili per l�array, viene restituito false. Ad esempio, se a={5,3,7,7,3,10,5} e pos = 2, il metodo deve restituire true in quanto l�elemento 7 compare per la prima volta in posizione 2.

    ed io ho cercato di risolverlo in questo modo, senza risultato:


    public static void main(String[] args) {
    // TODO Auto-generated method stub

    int []array={5,3,7,7,3,10,5};
    int numero=2;



    System.out.print ("presente una sola volta:");
    System.out.println(primaOccorrenza(array,numero));


    }

    public static boolean primaOccorrenza (int[]a, int pos){

    boolean primaOcc=false;

    for (int i=0; i<a[pos-1]; i++){
    if (a[i]!=a[pos]){
    primaOcc=true;
    }
    } primaOcc=false;
    return primaOcc;
    }
    }

    cosa sto sbagliando? grazie mille!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Stai sbagliando sezione.

    Java <> Javascript
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Trento
    Messaggi
    13
    Quote Originariamente inviata da Klibion Visualizza il messaggio
    codice:
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            int []array={5,3,7,7,3,10,5}; 
            int numero=2;
    
    
            
            System.out.print ("presente una sola volta:");
            System.out.println(primaOccorrenza(array,numero));
    
    
        }
        
        public static boolean primaOccorrenza (int[]a, int pos){
            
            boolean primaOcc=false;
            
            for (int i=0; i<a[pos-1]; i++){
              if (a[i]!=a[pos]){
                  primaOcc=true;
              }
            } primaOcc=false;
            return primaOcc;
         } 
    }
    Nella tua funzione verifichi una condizione (giusto), ma SEMPRE imposti primaOcc= false poich� la metti alla fine della tua funzione appena prima del return, (dovresti inserirla in un else dentro il for)

    Cosa succede se a numero dai il valore di 0??? ----> ti genera un errore!!!!

    Sotto trovi una mia versione funzionante, e commentata, ma puoi fare benissimo a meno

    P.S. la mia versione la puoi anche modificare (in caso dovessi dire dove si trova la prima occorrenza del valore contenuto in a[pos]) ti basterebbe aggiungere un paio di righe!!!!!
    codice:
    public class test {
        public static void main(String[] args) {
    // TODO Auto-generated method stub
    
            int []array={7,8,10,7,3,10,5};
            int numero=0;
    
            System.out.println("Pima Occorenza,[dell'elemetnto con idice " + numero+"]:"+ primaOccorrenza(array,numero));
        }
    
        public static boolean primaOccorrenza (int[]a, int pos){
    
            boolean primaOcc=false;
            //Condizioni dove a priori primaOcc risulta false ed e inutile
            //fare controlli sull'array
            if ((pos >= a.length || pos < 0) || (a==null)){
                primaOcc=false;
            }else {
                //Uso un do while, poiche se entro nell'else almeno una volta devo controllare l'array, inoltre
                //con il do-while posso uscire qualora primaOcc risulti false ed e inutile proseguire nella verifica
                //dell'array
                int i =0;
                do{
                    //Se l'elemento in pos di i e uguale all'elemento in posizione pos AND i risulta minore di pos
                    // stato trovato un elemento uguale a a[pos] prima di arrivare a all'elemento con indice pos
                    if ((a[i] == a[pos]) && (i<pos)){
                        primaOcc=false;
                    }
                    //altrimenti  la prima occorenza
                    else {
                        primaOcc = true;
                    }
                    i++;
                }while (i<=pos && primaOcc);
            }
            return primaOcc;
        }
    }
    Ultima modifica di megaorso; 26-01-2017 a 20:16

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.