Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Java] Numero che ricorre più volte in un array

    Devo realizzare un programma che, riempito un array di numeri interi, verifichi il numero che è presente il numero maggiore di volte.
    Esempio: 5 4 4 3 3 3 2 8 8 --> 3 è quello presente più volte.

    Il problema è che devo realizzarlo senza l'utilizzo di array di supporto !

    Non capisco come fare, siccome se ho nella prima parte degli array | 1 | 3 | 6 | dovrei tenere conto del fatto che potranno ripresentarsi e quindi per ognuno di questi dovrei memorizzare che sono già apparsi una volta...non capisco come fare

    Grazie in anticipo !

  2. #2
    puoi usare un hashmap o rischi il carcere?
    www.gext.it

  3. #3
    Originariamente inviato da tarini
    puoi usare un hashmap o rischi il carcere?
    Non so cosa sia l'hashmap
    Calcola che non programmo da molto in Java...comunque dovrei risolverlo utilizzando variabili d'appoggio...o almeno così ha detto la professoressa
    Chissà come

  4. #4
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    Risolto con le variabili di appoggio e' davvero un esempio di cattiva programmazione...
    Potresti chiedere alla tua professoressa cosa le cambia se lo risolvi usando un array di appoggio anziche' delle variabili dichiarate singolarmente

  5. #5
    ma che cazzo di professoresse ci sono in giro? invece che stimolare la creatività la limitano...

    cmq se dovessi farlo io utilizzerei un hashmap (cerca sulle guide cosè) con indice il numero e con valore il conteggio
    www.gext.it

  6. #6
    Perché dice che in questo modo impariamo a gestire anche l'utilizzo di variabili d'appoggio.... anche se alla fine ci complica solo la vita ! Eppure nella verifica c'è scritto "le soluzioni con più cicli o con array d'appoggio verranno valutate di meno"

    Qualcuno avrebbe voglia di scrivermi la soluzione con un hashmap? Anche se non perfetta, giusto per capire come usarli, che mi sembrano un pò complicati
    Grazie ancora

  7. #7
    Ripeto la richiesta :quote: !! Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Personalmente me lo immagino così, al volo ora come mi viene pensato, non so neanche se va, scritto ora in 3 minuti.

    codice:
    public int TrovaMax(int indice, int max) {
      if (indice>array.lenght())
        return array[indice_el_piu_freq];
      else {
        tot=0;
        for (int i=0; i<array.lenght()) {
          if (array[indice]==array[i]) {
            tot++;
            indice_el_piu_freq==indice;
          }
        }
        if (tot>max) {
          TrovaMax(indice+1, tot);
        } else {
          TrovaMax(indice+1, max)
        }
      }
    }
    La chiamata ricorsiva è:
    int elem_piu_freq = trovaMax(0, -1);

    'indice_el_piu_freq' e 'tot' sono le uniche due variabili diciamo globali che vengono modificate, o sennò te le puoi portare dietro con la ricorsione senza farle globali, vedi te.

  9. #9
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    codice:
    int[] numeri = new int[] {5, 4, 4, 3, 3, 3, 2, 8, 8};//il tuo array di partenza
    Map<String, Integer> map = new HashMap();
    for(int i = 0; i < numeri.length; i++) {
        Integer count = map.get(""+numeri[i]);
        count = count != null ? new Integer(count.intValue()+1) : new Integer("1");
        map.put(new Integer(numeri[i]), count);
    }
    Iterator<Entry<String, Integer>> iter = map.getEntrySet().getIterator();
    int max = 0;
    String numero = null;
    while(iter.hasNext()) {
        Entry<String, Integer> e = iter.next();
        if(e.getValue() > max) {
            max = e.getValue().intValue();
            numero = e.getKey();
        }
    }
    System.out.println("il valore col maggior numero di ripetizioni (" + max + ") e\' " + numero);
    In questo caso se ci sono piu' valori con lo stesso numero di ripetizioni, indica solo il primo di questi numeri. Volendo puoi modificarlo in modo che sia possibile piu' di un risultato.

    P.S. non l'ho controllato ne' provato... chiedo perdono x eventuali errori :P

  10. #10
    perchè
    Map<String, Integer> map = new HashMap();

    non è meglio
    Map<Integer, Integer>

    ???
    www.gext.it

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.