Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Un modo semplice per farlo è quello di :
1 - Generare un numero casuale
2 - Verificare se è già presente all'interno del vettore
3 - Se non è presente lo si aggiunge alla posizione i del vettore e poi si incrementa i
4 - Se è già presente nel vettore riprendi dal punto 1
Ecco il codice
Codice sorgente - presumibilmente VB.NET
Module Module1
Sub Main()
Const NUMERO_ELEMENTI_VETTORE AsInteger= 10
Dim generatore As Random
Dim vettore(NUMERO_ELEMENTI_VETTORE - 1)AsInteger
generatore =New Random()
'per il numero di elementi del vettore
For i AsInteger= 0 To NUMERO_ELEMENTI_VETTORE -1
'genera un numero casuale
vettore(i)= generatore.Next()
'finchè il numero generato è già presente nel vettore
'rigenera il valore
While(Not Verifica(vettore, i, vettore(i)))
vettore(i)= generatore.Next()
EndWhile
Next
For j AsInteger= 0 To NUMERO_ELEMENTI_VETTORE - 1
Console.WriteLine(vettore(j))
Next
Console.ReadLine()
EndSub
'Verifica se un numero è già presente in un vettore
'v : vettore da esaminare
'N : elementi da esaminare partendo dall'indice 0 del vettore
'val : elemento da cercare
Function Verifica(ByVal v()AsInteger, ByVal N AsInteger, ByValvalAsInteger)AsBoolean
Dim unico AsBoolean=True
Dim i AsInteger=0
'finchè non trova il valore o non esamina il sottovettore
While(i < N And unico)
'verifica se l'elemento di indice i è uguale a val
If(v(i)=val)Then
unico =False
Else
i = i + 1
EndIf
EndWhile
Return unico
EndFunction
End Module
Spero di esserti stato di aiuto
Ultima modifica effettuata da andrea.b89 il 21/03/2009 alle 11:00
La verifica può essere fatta anche con la funzione Array.IndexOf(array, elemento): se il numero restituito è -1, l'elemento specificato non esiste nell'array.
La verifica può essere fatta anche con la funzione Array.IndexOf(array, elemento): se il numero restituito è -1, l'elemento specificato non esiste nell'array.
Si, quella è un'altra possibilità, Tuttavia più dispendiosa.
La IndexOf funziona meglio sulle liste dove scorre al massimo gli elementi inseriti, mentre nei vettori scorre tutto l'array, del tipo se ho "inserito" 3 elementi ma il vettore ha dimensione 2000 la funzione mi scorre 2000 elementi.
Al massimo si può usare l'overload Array.IndexOf(array, elemento, indiceIniziale, numeroElementi).
Comunque tralasciando l'aspetto delle prestazioni il mio scopo era quello di mostrargli una possibile strategia e relativa implementazione per risolvere il problema.
Ultima modifica effettuata da andrea.b89 il 21/03/2009 alle 16:45