none
[VB 2010] Sviluppo di combinazioni senza ripetizioni RRS feed

  • 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?

    sabato 26 gennaio 2013 13:37

Risposte

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
    sabato 26 gennaio 2013 14:13
  • 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 :
    13

    14

    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))



     
    sabato 26 gennaio 2013 14:34
  • 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 saluto

    Ruggiero


    Ruggiero Lovreglio
    www.ruggierolovreglio.altervista.org


    sabato 26 gennaio 2013 14:50
  • Ok... Posso chiederti un'ultima cosa? sai come si realizza la funzione "scarto" di excel in vb  tramite codice?

    sabato 26 gennaio 2013 15:35
  • 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.

    http://social.msdn.microsoft.com/Forums/it-IT/visualbasicit/thread/e338ec6f-367d-4a09-983b-185376df9128

    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

    sabato 26 gennaio 2013 20:22
  • Hello Mathy1,
    in qualità di moderatore ti invito a leggere il manifesto del forum (se non
    sbaglio 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 dopo
    e 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.
     
     
    domenica 27 gennaio 2013 17:09
    Moderatore