Oppure

Loading
08/09/10 16:31
alimuzzy
Ciao a tutti.
Con gli array se utilizzo il metodo GetLowerBound riesco ad ottenere il valore piu piccolo di una serie di elementi all'interno dell'array.
Utilizzando un arraylist invece non essendo presente il metodo GetLowerBound e non riuscendo a trovare qualcosa di simile come faccio a ricavare il valore più piccolo?

Grazie:D
Ultima modifica effettuata da alimuzzy 08/09/10 16:33
aaa
08/09/10 17:39
a_butta
Non so a livello di codice perchè non ho sottomano Vb.Net, ma si potrebbe ordinare (tipo con qualcosa come sort) l'arraylist e poi prendere il valore 0 o MAX...?
aaa
08/09/10 17:55
HeDo
Postato originariamente da a_butta:

Non so a livello di codice perchè non ho sottomano Vb.Net, ma si potrebbe ordinare (tipo con qualcosa come sort) l'arraylist e poi prendere il valore 0 o MAX...?


nessuno di voi due ha capito nulla.

GetLowerBound serviva ad ottenere l'indice inferiore dell'array, in quanto in vb6 si potevano dichiarare array che partivano dall'indice 5 ad arrivare all'indice 15 (poi con che utilità qualcuno me lo dice), quindi in questo caso ritornava 5.

quello che vuole fare lui è ottenere l'elemento con valore più piccolo all'interno di un array, e per farlo c'è il metodo di estensione Min o Max da chiamare direttamente sulla collection.

bastava guardare nell'intellisense per arrivarci, neanche cercare su google....
aaa
08/09/10 19:09
Ultimo

     ' Dichiaro la mia listabella.
    Dim Listabella As New List(Of Integer)

    '  Richiamo la Funzione Randomize.
    Randomize() 

     ' Carico la mia listabella.
    For i as Int32 = 0 to 100 Step+1

       Me.Listabella.Item(index:=i) = Int(Rnd() * 100) + 1

    Next i

    ' Variabile di confronto.
    Dim Scan as int32 = 0

    ' Variabile per il risultato finale Minimo.
    Dim Min as int32 = 0

     ' Variabile per il risultato finale Massimo.
    Dim Max as int32 = 0

    ' Ciclo la mia listabella.
    For j as Int32 = 0 to  Me.Listabella.Count - 1 Step+1

     Scan = Me.Listabella.Item(index:=j)
     If j = 0 Then
    
            Min = Me.Listabella.Item(index:=j)
            Max = Me.Listabella.Item(index:=j)
     End if

     If  Scan < Min Then
     
              Min = Scan
     End if

     If  Scan > Max Then
     
              Max = Scan
     End if

    Next j


     ' Visualizzo il risutato Minimo.
    Me.TextBoxMin.Text = Cstr(Min)

     ' Visualizzo il risutato Massimo.
    Me.TextBoxMax.Text = Cstr(Max)




:k:


Ultima modifica effettuata da Ultimo 08/09/10 21:40
If ok Then GOTO Avanza else GOTO Inizia

09/09/10 10:17
Il Totem
Postato originariamente da HeDo:
nessuno di voi due ha capito nulla.

GetLowerBound serviva ad ottenere l'indice inferiore dell'array, in quanto in vb6 si potevano dichiarare array che partivano dall'indice 5 ad arrivare all'indice 15 (poi con che utilità qualcuno me lo dice), quindi in questo caso ritornava 5.

quello che vuole fare lui è ottenere l'elemento con valore più piccolo all'interno di un array, e per farlo c'è il metodo di estensione Min o Max da chiamare direttamente sulla collection.

bastava guardare nell'intellisense per arrivarci, neanche cercare su google....


TuaCollezione.Min() = valore minimo (richiede vb2008+ e i riferimenti alle librerie linq correttamente importati).
aaa
10/09/10 7:48
alimuzzy
Il Min e Max sono metodi per ottenere i rispettivi valori minimo e massimo di una List e fin qui ci siamo per ottenere gli stessi valori su un Array invece si utilizza getlowerbound per il min e getupperbound per il max, ma questi metodi su un arraylist non ci sono, quindi per ricavare i valori max e min di un arraylist devo prima ordinarli e successivamente utilizzare gli indici per ricavare il primo valore del primo indice e l'ultimo valore relativo all'ultimo indice.
A questo punto per evitare ulteriori passaggi mi conviene utilizzare la classe List..?
Infine che differenza c'è tra un arraylist e una List?
Grazie

Ps
sto cercando di risolvere il terzo problema del projecteuler.net/

aaa
10/09/10 8:37
Il Totem
Postato originariamente da alimuzzy:

Il Min e Max sono metodi per ottenere i rispettivi valori minimo e massimo di una List e fin qui ci siamo per ottenere gli stessi valori su un Array invece si utilizza getlowerbound per il min e getupperbound per il max, ma questi metodi su un arraylist non ci sono, quindi per ricavare i valori max e min di un arraylist devo prima ordinarli e successivamente utilizzare gli indici per ricavare il primo valore del primo indice e l'ultimo valore relativo all'ultimo indice.
A questo punto per evitare ulteriori passaggi mi conviene utilizzare la classe List..?
Infine che differenza c'è tra un arraylist e una List?
Grazie

Ps
sto cercando di risolvere il terzo problema del projecteuler.net/



Se sapessi l'inglese, caro mio, sapresti anche che Bound significa limite o confine. GetLowerBound e GetUpperBound servono a ottenere rispettivamente il limite inferiore e superiore dell'array, ossia l'indice minimo e quello massimo, come mostra questa pagina:
msdn.microsoft.com/en-us/library/…
Min e Max sono metodi dichiarati come estensioni dell'interfaccia IEnumerable(Of T), che è implementata da qualsiasi collezione tipizzata (quindi anche dagli array).

Per mostrarti la differenza abissale che c'è tra ArrayList e List, leggi questa introduzione ai generics:
totemslair.org/guide/…
aaa
10/09/10 8:55
alimuzzy
Ok Totem in effetti mi sono espresso male non il valore ma il limite ok..
La spegazione sui generics colma chiaramente ciò che volevo sapere ottima spiegazione, dovrò solo studiarla anche se prima di quello sul tuo manuale ci sono altri capitoli da studiare..:rofl:
aaa