Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    5

    Probl. calcolo occorrenza numero

    Salve a tutti, qualcuno sa risolvermi questo problema??
    l'applicazione funziona pero nn come è previsto... nn so dove sbaglio o cosa mi manca(variabili, codice...)

    codice:
    /*
    Si sviluppi il metodo
    public static ??? elementoPiuFrequente(int[] a)
    che, preso in input un array di interi ‘a’ NON ORDINATO, restituisce come output una coppia di
    interi, i cui elementi rappresentano l’elemento che occorre il maggior numero di volte nell’array e la
    sua frequenza. Se ci sono più elementi con la stessa frequenza massima, restituirne uno qualsiasi
    (es., il primo, l’ultimo, ecc.). NOTA: il tipo di ritorno e` stato lasciato volutamente indefinito, ‘???’,
    poiché fa parte dell’esercizio decidere tale tipo ed eventualmente costruire una classe apposita che
    vi permetta di restituire il risultato voluto (coppia di int).
    Es.: [1, 2, 10, 10, 7] ?? (10, 2)
    */
    
    
    import java.util.*;
    
    
    public class OccorrenzaNum {
    
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int dim = 5;
            int tabella[] = new int[dim];
            // Input dati
            for (int i = 0; i < dim; i++) {
                System.out.println("Inserisci elemento " + (i + 1));
                tabella[i] = input.nextInt();
            }
    
    
            // Gestione dati
            int aux1 = 0;
            int aux2 = 0;
            int counter1 = 0;
            int counter2 = 0;
            System.out.println("Elementi uguali");
            for (int i = 0; i < dim - 1; i++) {
                aux1 = tabella[i];
                if (aux1 == (tabella[i]) && aux1 == (tabella[i + 1])) {
                    aux2 = aux1;
                    counter1++;
                    counter2 = counter1;
                }
            }
            System.out.println("Risultato: " + "(" + aux2 + ", " + counter2 + ")");
            System.out.println("Counter = " + counter2);
    
    
        }
    
    
    }

    Grazie
    Ultima modifica di LeleFT; 02-04-2014 a 09:07 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il metodo elementoPiuFrequente dov'è?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    @mancini: devi anche dire cosa fa che non è previsto o cosa non fa che dovrebbe essere previsto. Dovresti dire se ottieni eccezioni ed eventualmente quali, postando lo stackTrace. Inoltre, il codice va postato usando gli appositi tag CODE (o pulsantino "#" in "Modalità avanzata, vedi pulsante giallo in basso a destra"), in modo da mantenere indentazione e formattazione.

    Correggo io per il discorso tag CODE.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Guarda questo, se non capisci qualcosa chiedi pure.

    Main

    codice:
    public class Main {
    	
    	public static void main(String[] args) {
    		
    		int[] valori = new int[25];
    		
    		//Riempio l'array con numeri random compresi tra 1 e 10
    		
    		for(int i = 0; i < valori.length; i++) {
    			
    			valori[i] = 1 + (int)(Math.random() * 10);
    		}
    		
    		//Stampa dell'array
    		
    		for(int i = 0; i < valori.length; i++) {
    			
    			System.out.print(valori[i] + ",");
    		}
    		
    		System.out.println("\n");
    
    
    		//Calcolo la coppia di numeri che rappresentano il valore
    		//più frequente e con il suo numero di occorrenze
    		
    		Coppia coppia = elementoPiuFrequente(valori);
    		
    		//Stampo la coppia
    		
    		System.out.println("\n" + coppia);
    	}
    	
    	public static Coppia elementoPiuFrequente(int[] valori) {
    		
    		//Variabili utilizzate per costrire la Coppia da ritornare
    		int piuFrequente = -1;
    		int occorrenze = -1;
    		
    		//Variabili temporanee utilizzate per il calcolo
    		int numeroAttuale = 0;
    		int occorrenzeAttuali = 0;
    		
    		for(int i = 0; i < valori.length; i++) {
    			
    			numeroAttuale = valori[i];
    			occorrenzeAttuali++;
    			
    			for(int j = i + 1; j < valori.length; j++) {
    				
    				if(numeroAttuale == piuFrequente) {
    					break;
    				}
    				
    				if(numeroAttuale == valori[j]) {
    					
    					occorrenzeAttuali++;
    				}
    			}
    			
    			//Controllo se ho trovato un numero con un maggior numero di occorrenze
    			if(occorrenzeAttuali > occorrenze) {
    				
    				//In tal caso aggiorno i valori
    				occorrenze = occorrenzeAttuali;
    				piuFrequente = numeroAttuale;
    			}
    			
    			//Azzerro il numero di occorrenze del numero attuale
    			occorrenzeAttuali = 0;
    		}
    		
    		return new Coppia(piuFrequente, occorrenze);
    	}
    }
    Coppia

    codice:
    public class Coppia {
    	
    	private int piuFrequente;
    	private int occorrenze;
    	
    	public Coppia(int p, int o) {
    		piuFrequente = p;
    		occorrenze = o;
    	}
    	
    	public void setPiuFrequente(int p) {
    		piuFrequente = p;
    	}
    	
    	public void setOccorrenze(int o) {
    		occorrenze = o;
    	}
    	
    	public int getPiuFrequente() {
    		return piuFrequente;
    	}
    	
    	public int getOccorrenze() {
    		return occorrenze;
    	}
    	
    	@Override
    	public String toString() {
    		
    		String result = "Numero più frequente: " + piuFrequente + " , " + "Occorrenze: " + occorrenze;
    		return result;
    	}
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    5
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    @mancini: devi anche dire cosa fa che non è previsto o cosa non fa che dovrebbe essere previsto. Dovresti dire se ottieni eccezioni ed eventualmente quali, postando lo stackTrace. Inoltre, il codice va postato usando gli appositi tag CODE (o pulsantino "#" in "Modalità avanzata, vedi pulsante giallo in basso a destra"), in modo da mantenere indentazione e formattazione.

    Correggo io per il discorso tag CODE.


    Ciao.


    Grazie per la chiarezza

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    5
    io ho fatto tutto nel main, xke voleva prima prova l'output, ma nn ci sono riuscito...
    Quando lanscio il programma inserendo elementi come mostrato qui sotto, c'è sempre un elemento in meno, nn lo conta:
    Inserisci elemento 1
    2
    Inserisci elemento 2
    3
    Inserisci elemento 3
    3
    Inserisci elemento 4
    3
    Inserisci elemento 5
    4
    Elementi uguali
    Risultato: (3, 2)
    Counter = 2

    Invece qua nn mi ha contato il primo elemento (1):
    Inserisci elemento 1
    1
    Inserisci elemento 2
    1
    Inserisci elemento 3
    2
    Inserisci elemento 4
    3
    Inserisci elemento 5
    4
    Elementi uguali
    Risultato: (1, 1)
    Counter = 1


    Grazie per il supporto

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    5
    Ottimo Javino89 ... soluzione molto pro...
    il nostro prob è che abbiamo una prof che passa le ore della lezioni a leggere pdf elettronico, nn spiega proprio niente... allora come facciamo ad imparare senza l'aiuto dei forum specializzati come questo?!!!!

  8. #8
    Appena ho scritto il codice anche a me contava un'occorrenza di meno, perché il ciclo for più interno parte da i + 1, quindi di fatto andavo a saltare il conteggio della prima occorrenza del numero (quello corrente). Per questo ho inserito preventivamente quel occorrenzeAttuali++ PRIMA del for più interno.

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da mancini Visualizza il messaggio
    Ottimo Javino89 ... soluzione molto pro...
    il nostro prob è che abbiamo una prof che passa le ore della lezioni a leggere pdf elettronico, nn spiega proprio niente... allora come facciamo ad imparare senza l'aiuto dei forum specializzati come questo?!!!!
    Con un buon libro?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    5
    Certo con un buon libro.... ma anche i tasti giusto (della tastiera del nostro pc) li farà il buon libro? secondo me, per forza ci deve essere un posto dove inserire l'esperienza degli altri....
    Vi ringrazio molto...

Tag per questa discussione

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.