Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di naki
    Registrato dal
    Feb 2009
    Messaggi
    52

    Aiuto vb 6 Creare delle combinazioni

    Scusate per prima :d non sapevo

    In breve questo mi serve per creare giornate del calendario di serie A senza ripetizioni ovviamente
    Ecco quello che ho scritto io :
    codice:
    On Error GoTo GestioneErrori
    Dim incontri(1 To 20) As String
    Dim archivio, archivio2, ritorno1 As String
    Dim o, k, y As Byte
    Randomize
    o = 0
    y = 1
    k = Int(Rnd * 19 + 1)
    r = Int(Rnd * 19 + 1)
    incontri(1) = "JUVENTUS": incontri(2) = "INTER"
    incontri(3) = "LECCE": incontri(4) = "CATANIA"
    incontri(5) = "MILAN": incontri(6) = "UDINESE"
    incontri(7) = "LAZIO": incontri(8) = "REGGINA"
    incontri(9) = "ROMA": incontri(10) = "PALERMO"
    incontri(11) = "CHIEVO": incontri(12) = "NAPOLI"
    incontri(13) = "ATALANTA": incontri(14) = "CAGLIARI"
    incontri(15) = "TORINO": incontri(16) = "SIENA"
    incontri(17) = "SAMPDORIA": incontri(18) = "BOLOGNA"
    incontri(19) = "FIORENTINA": incontri(20) = "GENOA"
    Do
        For i = 1 To 38
        archivio = "C:\Calendario\Serie A\Giornata " & i & "°.fnv"
        If FileLen(archivio) = 0 Then
        End If
        trovato = False
        Open archivio For Input As #1
        Do
        k = Int(Rnd * 19 + 1)
        r = Int(Rnd * 19 + 1)
        Line Input #1, partite
            If k = r Then
            k = Int(Rnd * 9 + 1)
            r = Int(Rnd * 9 + 1)
            End If
            If partite = UCase(Trim(incontri(k) & " - " & incontri(r))) Then
                k = Int(Rnd * 9 + 1)
                r = Int(Rnd * 9 + 1)
                trovato = True
                i = 1
            End If
            If partite = UCase(Trim(incontri(r) & " - " & incontri(k))) Then
                k = Int(Rnd * 9 + 1)
                r = Int(Rnd * 9 + 1)
                trovato = True
                i = 1
            End If
            If Left(partite, Len(incontri(k))) = Trim(UCase(incontri(k))) Then
                k = Int(Rnd * 9 + 1)
                r = Int(Rnd * 9 + 1)
                trovato = True
                i = 1
            End If
            If Left(partite, Len(incontri(r))) = Trim(UCase(incontri(r))) Then
                k = Int(Rnd * 9 + 1)
                r = Int(Rnd * 9 + 1)
                trovato = True
                i = 1
            End If
        Loop Until EOF(1)
        Close #1
        Next i
    GestioneErrori:
        If Err.Number = 53 Then
        Close #1
        End If
        If trovato = False Then
        o = o + 1
        archivio2 = "C:\Calendario\Serie A\Giornata " & y & "°.fnv"
        ritorno1 = "C:\Calendario\Serie A\Giornata " & y + 19 & "°.fnv"
        Open archivio2 For Append As #1
        Print #1, incontri(k) & " - " & incontri(r)
        Close #1
        Open ritorno1 For Append As #1
        Print #1, incontri(r) & " - " & incontri(k)
        Close #1
            If o >= 10 Then y = y + 1: o = 0
            End If
    Loop Until y > 19
    questo codice pero mi da ancora ripetizioni negli archivi creati con le partite.

    aiuto

    grazie

  2. #2
    Utente di HTML.it L'avatar di naki
    Registrato dal
    Feb 2009
    Messaggi
    52
    Questo sara piu semplice :

    codice:
    Dim incontri(1 To 20) As String
    Dim archivio, archivio2, ritorno1 As String
    Dim usciti(1 To 380), usciti2(1 To 380), usciti3(1 To 21) As Byte
    Dim o, k, y, p As Integer
    incontri(1) = "JUVENTUS": incontri(2) = "INTER"
    incontri(3) = "LECCE": incontri(4) = "CATANIA"
    incontri(5) = "MILAN": incontri(6) = "UDINESE"
    incontri(7) = "LAZIO": incontri(8) = "REGGINA"
    incontri(9) = "ROMA": incontri(10) = "PALERMO"
    incontri(11) = "CHIEVO": incontri(12) = "NAPOLI"
    incontri(13) = "ATALANTA": incontri(14) = "CAGLIARI"
    incontri(15) = "TORINO": incontri(16) = "SIENA"
    incontri(17) = "SAMPDORIA": incontri(18) = "BOLOGNA"
    incontri(19) = "FIORENTINA": incontri(20) = "GENOA"
    k = Int(Rnd * 19 + 1)
    r = Int(Rnd * 19 + 1)
    Randomize
    p = 0
    o = 0
    y = 1
    i = 0
    trovato = False
    Do
        For y = 1 To i
            Select Case k
            Case k = usciti(y) Or r = usciti2(y)
            trovato = True
            Case r = usciti(y) Or k = usciti2(y)
            trovato = True
            Case k = usciti(y) And r = usciti2(y)
            trovato = True
            Case r = usciti(y) And k = usciti2(y)
            trovato = True
            End Select
            If k = r Then
            trovato = True
            End If
        Next y
        For y = 1 To 20
        If k = usciti3(y) Or r = usciti3(y) Then
        trovato = True
        End If
        Next y
        If trovato = False Then
        i = i + 1
        o = o + 1
        p = p + 1
        usciti(i) = k
        usciti2(i) = r
            If p < 21 Then
            usciti3(p) = k
            usciti3(p + 1) = r
            Else
            p = 0
            End If
        End If
        If o >= 10 Then
        o = 0
            For v = 1 To 20
            usciti3(v) = 0
            Next v
        End If
    k = Int(Rnd * 19 + 1)
    r = Int(Rnd * 19 + 1)
    trovato = False
    Loop Until i = 380

  3. #3
    Utente di HTML.it L'avatar di naki
    Registrato dal
    Feb 2009
    Messaggi
    52
    Praticamente devo riuscire a creare un calendario di calcio casuale
    ovvero, facendo giocare tutte le squadre (20) in una giornata ma, ogni partita diversa dalle altre

    Grazie in anticipo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.