|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[vb.net]plz salvatemi dalla pazzia totale!
Codice:
dim s1 as string = griglia1.CurrentRow.Cells(1).Value
dim s2 as string = griglia1.CurrentRow.Cells(2).Value
If griglia2.RowCount = 0 Then
griglia2.Rows.Add(New String() {s1, s2})
else '(e qui per me significa: se il numero di righe NON E' ZERO!!)
for i as integer = 0 to griglia2.rows.count - 1
if griglia2(0, i).value = s1 then
msgbox("Valore già presente")
else ('e qui per me significa: se sto cacchio di valore NON C'E'!)
griglia2.Rows.Add(New String() {s1, s2})
end if
next
end if
la griglia2 non ha righe: funziona, mi aggiunge una riga la griglia2 ha una riga: funziona, se il valore già c'è me lo dice e nn lo aggiunge la griglia2 ha 2 righe: in assenza di valori uguali mi aggiunge due volte la riga proveniente dalla griglia1 la griglia2 ha più di 4 righe: mi dice che i valori già esistono, non solo, me li aggiunge anche, non solo, me li triplica per ogni riga
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Be', se hai 4 elementi ed uno è quello che già avevi in partenza, gli altri tre non sono uguali a lui, e soddisfano la condizione dell'else... se trovi già inserito quel valore dovresti fermare il ciclo e non fare niente: solo alla fine di tutto il ciclo, se non avrai mai trovato quanto stai cercando, aggiungerai il valore alla griglia.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
No no, se quell'elemento esiste già, tu non hai bisogno di fare più nulla: puoi proprio uscire dal quel ciclo per sempre e provare l'inserimento con un nuovo valore.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
uhm, scusami Daniele ma non riesco a capire :
Codice:
Dim s1 as string
Dim s2 as string
s1 = griglia1.RigaCorrente.Cella(1).Valore
s2 = griglia1.RigaCorrente.Cella(2).Valore
for i as integer = 0 to griglia2.Rows.Count - 1
if griglia2.Riga(i).Cella(0).Valore = s1 then
'non aggiungere, valore già presente
next
'ora, se metto qui :
griglia2.Rows.Add(New String() {s1, s2})
'dopo aver controllato lui me le aggiunge lo stesso
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
L'inserimento lo devi fare dopo aver completato la ricerca, non dopo il controllo.
Te lo scrivo in pseudocodice: Codice:
Trovato = Falso
Valore = /* elemento cercato */
Per ogni elemento X in Griglia
{
Se (X è uguale a Valore)
{
Trovato = Vero
Interrompi ciclo
}
}
Se (Trovato == Falso)
{
Aggiungi(Valore, Griglia);
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() E, a ben ragionarlo, era più o meno lo stesso esempio che mi aveva fatto l'ottimo TigerShark sull'altro 3d ma che io ottusamente non avevo capito!! Che dire, siete grandi e vi ringrazio!!!
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ma se usi quest'algoritmo hai una complessità pari ad O(n * m), se non sbaglio, con n pari al numero di elementi della prima griglia ed m pari al numero di elementi diversi, che in caso di elementi tutti diversi, e nel caso peggiore, diventa o(n^2).
Con quello che ti avevo suggerito invece dovresti cavartela con una complessità O(n). Visto che la complessità implementativa è perfettamente equivalente io userei quello con l'array di controllo, anche se, a meno di non avere centinaia di migliaia di righe, non dovresti avere grosse differenze... o meglio il tuo processore è talmente veloce che non noterai le abissali differenze di tempo di calcolo tra i due algoritmi
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:28.





















