Oppure

Loading
01/02/11 15:21
carmine
salve ragazzi ho una procedura nel quale genero numeri random casualmente senza che essi si ripetano.
Inoltre essa la rikiamo in un'altra procedura poiche la devo richiamare più volte con parametri diversi,..
il problema è che quando la rikiamo più volte essa verifica anke per i numeri gia usciti nella precedente chiamata...mi spiego meglio...sto sviluppando una tombola, e genero numeri senza ripetizioni sia per l'estrazione che per le cartelle,
(ho 3 cartelle) se genero per la prima cartella, tuttobene, quando genero la seconda o il tabellone, la procedura mi controlla che nn escano anke i numeri usciti nelle cartelle gia generate!! spero di essermi spiegato! comunque ekko il codice:

la prima mi serve per vedere quando attuare la generazione delle cartelle e quando per il tabellone, cioè quando fare il ciclo per generarli tutti insieme e quindo estrarre uno alla volta

' procedura per chiamare cartelle o tombola
Sub mat(ByVal matrice, ByVal n As Long, ByVal m As Long, ByVal tabella As MSFlexGrid)

d = 0
g = 0
If f = True Then  'se scegli la cartella ciclo
    i = 0
    j = 0
    For d = 0 To n - 1
        For g = 0 To m - 1
            Call estrai(matrice, n, m, tabella)
        Next g
    Next d
    f = False
Else             'se scegli la tombola una alla volta
    If y = True Then
        i = 0
        j = 0
        y = False
    End If
        Call estrai(matrice, n, m, tabella)
End If

End Sub

la seconda mi genera i numeri senza ripetizioni:

'procedura per l'estrazione dei numeri senza ripetizioni
Sub estrai(ByVal matrice, ByVal n As Integer, ByVal m As Integer, ByVal tabella As MSFlexGrid)
    cont = cont + 1
    If cont <= 90 Then
estrai:
        
        Call genera2
        t = False
        For k = 0 To n - 1
            For h = 0 To m - 1
                If num = matrice(k, h) Then
                    t = True
                    GoTo estrai
                End If
            Next h
        Next k
        If t = False Then
            matrice(i, j) = num
            tabella.CellFontBold = True
            tabella.Row = i
            tabella.Col = j
            tabella.Text = matrice(i, j)
            If a = True Then
               'MsgBox ("numero Estratto " + CStr(num))
                a = False
            End If
            j = j + 1
            If j = m Then
                j = 0
                i = i + 1
            End If   
        End If
    End If
End Sub


Ringrazio Anticipatamente
aaa
01/02/11 19:59
carmine
ragaa ho risolto grz lo stessoooo....dove azzerare un contatore...
aaa