Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    elementi diversi in un array

    Ciao raga, vorrei un aiuto su come risolvere questo problema: fare in modo di caricare un array di n elementi tutti diversi tra loro, infine visualizzarlo. Come faccio a non far caricare un elemento che esiste già nel vettore?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Hai diversi modi, in base a ciò che puoi o non puoi usare e in base a ciò che puoi o non puoi conoscere dell'array.

    Metodo 1 (banale, inefficiente): ogni volta che l'utente inserisce un numero, scorri tutto l'array (fino alla posizione in cui sei arrivato) alla ricerca di un elemento uguale. Se lo trovi, non lo accetti, altrimenti lo inserisci.

    Metodo 2 (se puoi usare strutture dati un po' più sofisticate): usa un ArrayList (o meglio un HashSet). Quando l'utente inserisce un numero verifichi se è presente nell'ArrayList usando il suo metodo contains() (non serve per HashSet, l'add fa già il controllo per te). Se è già presente non lo accetti, altrimenti lo inserisci.

    Metodo 3 (utilizzabile se devi far inserire all'utente tutti i numeri da 0 a N-1, o da 1 a N, adattabile): costruisci un secondo array di appoggio, magari di boolean. Ad ogni inserimento del valore X verifichi se nella posizione X dell'array di appoggio c'è scritto true. Se c'è scritto true, non accetti il valore, altrimenti lo inserisci e scrivi true nell'array di appoggio.

    Ci sono altri modi, probabilmente più efficienti, questi sono i primi 3 che mi sono venuti in mente.


    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

  3. #3
    Grazie per la risposta, ho deciso di utilizzare il 1 metodo. Credo di aver finito, solo che non funziona correttamente, potresti dirmi dove sbaglio? Grazie in anticipo.
    codice:
    package elementiarraydiversi;
    import java.util.Scanner;
    public class elementiarraydiversi {
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      Scanner in=new Scanner(System.in);
      int n,p,i;
      System.out.println("Quanti elementi sono?");
      n=in.nextInt();
      int v[]=new int[n];
      for(i=0;i<n;i++)
      {
       System.out.println("Inserisci un elemento");
       p=in.nextInt();
       for(int c=0;c<i;c++)
       {
        if(p!=v[i])
        {
         v[i]=p;
        }
        else
        {
         System.out.println("Elemento esistente");
        }
       }
      }
      for(i=0;i<n;i++)
      {
       System.out.println((i+1)+"° elemento"+v[i]);
      }
     }
    }

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.