Principale utente con più risposte
[VB 2010] Sviluppo di combinazioni senza ripetizioni

Domanda
-
Come molti sanno, per conoscere o, per meglio dire, calcolare il numero di combinazioni possibili date da un numero "K" ed uno "N" utilizziamo la seguente formula : !N / ( !K * !(N-K) )
Adesso la mia domanda è: come si possono sviluppare le combinazioni possibili date dal calcolo, in una datagridview?
C'è qualcuno che mi può aiutare?
Risposte
-
Ciao Mathy1,
devi costruirti una funzione che faccia il calcolo a te necessario. Ti posto il link di una pagina dove trovi del codice per calcolare il fattoriale di un numero mediante ricorsione:
http://forum.gamesvillage.it/showthread.php?267664-Fattoriale-in-VB
se i tuoi numeri sono presenti all'interno della datagridview ti suggerisco di utilizzare gli appositi metodi e proprietà per selezionare il contenuto delle celle. Ti posto un altro link all'interno del quale trovi esempi di codice:
http://forum.masterdrive.it/visual-basic-net-18/recupero-dati-cella-datagridview-35414/
Ciò detto ti risulterà molto semplice costruire la funzione che esegue l'espressione da te indicata ( !N / ( !K * !(N-K) ))
Per ulteriori dettagli non esitare a chiedere!
Un saluto
Ruggiero
Ruggiero Lovreglio
www.ruggierolovreglio.altervista.org- Proposto come risposta Irina Turcu mercoledì 30 gennaio 2013 16:36
- Contrassegnato come risposta Irina Turcu mercoledì 31 luglio 2013 15:23
Tutte le risposte
-
Ciao Mathy1,
devi costruirti una funzione che faccia il calcolo a te necessario. Ti posto il link di una pagina dove trovi del codice per calcolare il fattoriale di un numero mediante ricorsione:
http://forum.gamesvillage.it/showthread.php?267664-Fattoriale-in-VB
se i tuoi numeri sono presenti all'interno della datagridview ti suggerisco di utilizzare gli appositi metodi e proprietà per selezionare il contenuto delle celle. Ti posto un altro link all'interno del quale trovi esempi di codice:
http://forum.masterdrive.it/visual-basic-net-18/recupero-dati-cella-datagridview-35414/
Ciò detto ti risulterà molto semplice costruire la funzione che esegue l'espressione da te indicata ( !N / ( !K * !(N-K) ))
Per ulteriori dettagli non esitare a chiedere!
Un saluto
Ruggiero
Ruggiero Lovreglio
www.ruggierolovreglio.altervista.org- Proposto come risposta Irina Turcu mercoledì 30 gennaio 2013 16:36
- Contrassegnato come risposta Irina Turcu mercoledì 31 luglio 2013 15:23
-
Ciao Ruggiero grazie di avermi dato il consiglio. Comunque io ho già calcolato i fattoriale e applicato la formula per calcolare le possibili combinazioni. So anche i codici per il riferimento cella.
Adesso però voglio svilupparle in datagridview; ovvero se io ho K = 2 ed N = 4, posso sviluppare 6 combinazioni :
1314
23
24
34
Di recente però ho visto una formula (valida per excel) in un sito di google:
https://sites.google.com/site/e90e50/user/calcolo-combinatorio#TOC-Combinazioni-semplici-senza-ripetizioni-
Purtroppo però excel non esegue calcoli abbastanza grandi, ad esempio se io vorrei K= 10 ed N=20 non mi farebbe sviluppare tutte le combinazioni, perché il programma s'intasa. Avevo avuto intenzione di usare le stesse basi con vb in una datagridview ma mi sembra un pò troppo complicato, e che magari riuscendo a convertire le formule(excel) in vb non ottengo i risultati richiesti.
La formula è:
=PICCOLO(SE((MATR.PRODOTTO(--((RESTO(INT((RIF.RIGA(SCARTO($A$1;;;n^k))-1)/(n^(RIF.COLONNA(SCARTO($A$1;;;;k-1))-1)));n))<(RESTO(INT((RIF.RIGA(SCARTO($A$1;;;n^k))-1)/(n^(RIF.COLONNA(SCARTO($B$1;;;;k-1))-1)));n)));RIF.RIGA(SCARTO($A$1;;;k-1))^0)=(k-1));(MATR.PRODOTTO(1+RESTO(INT((RIF.RIGA(SCARTO($A$1;;;n^k))-1)/(n^(RIF.COLONNA(SCARTO($A$1;;;;k))-1)));n);0,1^(RIF.RIGA(SCARTO($A$1;;;k))-k))));RIF.RIGA(A1))
-
Ciao Mathy1,
sinceramente dalla tua risposta non ho capito cosa ti serve realizzare: se un generatore di numeri o una funzione in grado di risolvere la formuletta ( !N / ( !K * !(N-K) )) (dalla domanda che hai postato avevo capito la seconda opzione). Se ti è possibile cerca di spiegar meglio cosa ti serve.
Se invece a partire da una serie di numeri vuoi realizzare le varie combinazioni credo che per te non dovrebbe essere troppo difficile realizzare il codice utilizzando cicli e magari seguendo qualche codice già presente in rete. In questo caso per semplificarti la cita ti suggerire di trovare tutte le combinazioni con ripetizioni per poi utilizzare ulteriore codice per eliminare le copie.
Un salutoRuggiero
Ruggiero Lovreglio
www.ruggierolovreglio.altervista.org- Modificato Ruggiero Lovreglio sabato 26 gennaio 2013 14:56
-
-
Ciao Mathy1,
questo argomento è fuori tema inoltre hai già presente una discussione su questo tema da te proposta. Su questo secondo thread ti ho già dato la mia risposta.
Se vuoi più dettagli possiamo proseguire li la conversazione.
Mentre in questo thread ti suggerisco di proseguire con il tema scelto. Se hai trovato la soluzione potresti postarla per metterla in comune con gli altri utenti.
Un saluto
Ruggiero
Ruggiero Lovreglio
www.ruggierolovreglio.altervista.org -
Hello Mathy1,in qualità di moderatore ti invito a leggere il manifesto del forum (se nonsbaglio qualcun'altro te lo ha già consigliato in un altro forum ma, deduco,senza successo :-) ).Il forum non è ad uso e consumo personale, se hai già un thread con una domanda,non la porre nuovamente in un altro thread perchè, coloro che verranno dopoe che effettueranno la ricerca per verificare che il quesito ci sia già,non capiranno mai quale dei due thread è quello corretto.Inoltre, sempre da regolamento del forum, ogni thread copre una domanda.Grazie dell'attenzione.