PDA

View Full Version : [VB] Array bidimensionale


robnet77
25-11-2003, 22:27
Sto provando a mettere su uno pseudo-programma per il gioco del lotto per un amico :D ...

avendo uno schema di estrazioni passate del genere:

Ba | Ca | Fi | Ge
1 2 3 4 5 | 1 2 3 4 5 | 1 2 3 4 5 | 1 2 3 4 5
6 7 8 9 10 | 6 7 8 9 10 | 6 7 8 9 10 | 6 7 8 9 10
11 12 13 14 15|11 12 13 14 15|11 12 13 14 15 |11 12 13 14 15

vorrei memorizzare i numeri sortiti in un array bidimensionale, all'inizio volevo usarne uno monodimensionale per l'ultima estrazione, del tipo

dim Ba(4) as String

While Not EOF(1)
Line Input #1, estrazione
For i = 0 to 4
Ba(i) = Mid$(estrazione, (1 + i * 2), 2))
e assegnare alle altre ruote i valori dopo un segno di tabulazione che avrò nel file di testo contenente le ultime estrazioni.

Il fatto è che mi occorre un array a 2 dimensioni per memorizzare anche le estrazioni precedenti, ma nel libro del Balena (quello passa il convento) non ho trovato molto, e al momento non ho disponibile la MSDN.

Considerando le ultime 50 estrazioni, dovrei dichiarare l'array così (credo):

ReDim Ba(4, 49) as String


Posso utilizzare dei contatori al posto dei numeri?

ReDim Ba(a, b) as String
in modo da riempire l'array con un ciclo? E' tutto quello che so e che ipotizzo degli array multidimensionali :muro:

Grazie! :mc:

Sephiroth83
25-11-2003, 23:36
La cosa dovrebbe funzionare.
prima di usare redim devi dichiarare l'array nel seguente modo:

Dim Ba() as string

e successivamente usi:
ReDim Ba(a, b)

in modo da poterlo ridimensionare dinamicamente. Ovviamente dopo che hai ridimensionato l'array puoi accedere ai suoi elementi anche attraverso variabili-contatore di cicli, come vuoi fare tu, no? :)

matpez
26-11-2003, 01:29
Se lo vuoi aumentare in modo dinamico ma mano che hai un dato in più, nn basta mettere Redim, ma devi mettere Redim Preserve, altrimenti il vettore si rinizializza :p

Consiglio di usare anche le funzioni:
UBOUND(Vettore Dinamico)
LBOUND(Vettore Dinamico)

che tornano rispettivamente il massimo ed il mino indice del tuo vettore.
Esempio pratico:

dim Vet() as integer
dim nI as integer

redim Vet(0)

for nI=1 to 1000
redim preserve Vet(Ubound(Vet)+1)
Vet(Ubound)=inputbox("Metti un numero")
next