|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[qualsiasi]ciclare fra due matrici/griglie per confronto
Ciao a tutti
![]() Ho due griglie: 1) la prima, recupera i dati da un file e viene popolata, quindi, non conosco a priori il numero di righe che può contenere. 2) la seconda invece, viene popolata in base a ciò che scelgo sulla prima. Per fare un esempio, diciamo che la griglia uno ha: colonnaNumero, colonnaDescrizione 12 bla 23 bleh 78 blih ora, io seleziono tutti e tre i valori (o uno, o solo due) e li aggiungo nella griglia 2. Quello che devo evitare, è di permettere che venga inserito nella griglia 2, un elemento di griglia uno già scelto (per esempio due "numeri" 12). come posso ciclare fra le due griglie in modo da dire: per ciascuna riga di griglia uno, alla colonnaNumero, se il valore è già stato messo in griglia 2 non lo mettere ? Grazie ![]() RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Non puoi usare un Set?
![]() In questo modo non dovrai controllare alcunchè ma alla fine avrai solo valori unici....
__________________
![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() che intendi per Set?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ops...
mi sa che è stata introdotto solo dalle versione 3.5 del framework... ![]() ![]() puoi sempre implementare qualcosa di simile con una Mappa comunque.. ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
un insieme, in cui per definizione ogni elemento può essere o non presente o presente per una volta.
Non puoi avere elementi ripetuti in pratica...
__________________
![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() Credo di no, sono argomenti ancora troppo avanti per me, mi servirebbe qualcosa di più "for" newbie ![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
comunque se devi semplicemente controllare che la riga non sia già stata inserita basterebbe usare una Mappa in questo modo + o -:
Quote:
in pratica se tu inserisci 5 volte la riga rappresentata dalla chiave 12 e 3 volte quella rappresentata dalla chiave 11 alla fine nel Dictionary avrai queste due coppie chiave valore: [11, riga11] [12, riga12]. Che dovrebbe essere quello che ti serve se non ho capito male.. ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
TigerShark.. non menarmi... e se non potessi usare un dizionario? (uno dei motivi potrebbe essere che ho a che fare con un linguaggio che non li supporta) ?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quindi ti stai chiedendo, a parte le caratteristiche fornite da un particolare linguaggio o framework, in che modo puoi evitarlo? Be', o inserisci tutto indistintamente e alla fine elimini le ripetizioni, o controlli con un metodo apposito che il dato non sia stato già inserito (nel caso in cui lo trovi già nella griglia, non fare niente, in caso contrario inseriscilo). Almeno, questi due metodi mi vengono in mente così, sul momento. Il primo però potrebbe sprecare un quantitativo enorme di memoria se gli input sono molto grandi o con molte ripetizioni, il secondo dovrebbe fare dei cicli ad ogni inserimento e sarebbe potenzialmente molto più lento (sempre nel caso di grossi input).
ciao ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
In pratica dovresti fare qualcosa del genere: Codice:
bool[] controlArray = new bool(maxIndex); List<Row> result = new List<Row>(); for (int i = 0; i < matrix.length; i++) { key = matrix[i][0]; if (!controlArray[key]) { result.Add(matrix[i]); controlArray[key] = true; } Se la chiave parte da uno basta aggiungere uno alla dimensione del control array. Almeno gli array di booleani li puoi utilizzare? ![]() Comunque,scherzi a parte, dimmi se non è chiara qualcosa ![]() EDIT: ovviamente ho fatto l'esempio col for per comodità, ma funziona tranquillamente con il while se non sai a priori quante righe hai nella matrice perchè la stai leggendo da file... ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Grazie mille
![]() Più che altro la mia situazione è questa: Due griglie: Dalla prima devo aggiungere valori sulla seconda, che quindi, inizialmente avrà un numero di righe pari a zero. Man mano che aggiungo i valori presi dalla prima griglia nella seconda griglia, devo verificare appunto che non siano già presenti. Ora provo a ragionare sul tuo esempio ![]() Grazie. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
nel mio esempio la prima griglia sarebbe matrix mentre la seconda griglia sarebbe result, che inizialmente è vuota
![]()
__________________
![]() |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]() ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Allora, per C e per VB.Net il tuo codice purtroppo è intraducibile
![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]() veramente lo puoi scrivere anche in assembly.. ![]() com'è che non riesci a scriverlo in VB.NET? ![]() quale problema incontri? ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() Il fatto è che mi rendo conto che andare a tentoni non porta a nulla di buono ![]() Mi mancano proprio le basi... chissà se un giorno potrò permettermi di andare all'università o fare dei corsi, perchè 'studiare' su internet, almeno per me, risulta molto dispersivo ![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:58.