Newsgroup: it.comp.lang.visual-basic
Titolo: Generazione calendari di calcio

Vi sarei molto grato se qualcuno mi facesse pervenire la routine per la
generazione del calendario di calcio (max 10 squadre).Io ho provato in tutte
le maniere ma non trovo la soluzione. Con gli array mi generano incontri
doppi per squadra,nella stessa giornata.
Vi ringrazio sin da ora. Ciao Marco

 doppi per squadra,nella stessa giornata.
Ti lascio il piacere di scrivere la semplicissima routine e di capire perché
funziona. Lo schema che ti accenno dovrebbe essere sufficientemente chiaro
(soprattutto se usi font non proporzionali ;)
A 1       A 2       A 3        A 7
7 2       1 3       2 4   ...  6 1
6 3       7 4       1 5        5 2
5 4       6 5       7 6        4 3
Ciao, Silv:o)


wrote:

la soluzione del problema servirebbe anche a me...
perň non ho capito una mazza dello schemino che silvio ha mandato...
puoi essere piů chiaro... e magari inserire la Semplicissima
Routine... anche perchč se uno chiede aiuto... per lui proprio
semplice non č..
grazie e ciao clodoveo

 semplice non č..
E' come chiedere di costruire un aereo e poi andare da qualcun altro a farselo fare
perche' non ne siamo capaci. Prima di cominciare con l'aereo, iniziate coi modellini di
auto...

 semplice non è..
se uno scrive in questo ng, una routine come quella che serve per questo
problema se la sa fare benissimo da solo, a patto di aver capito come si fa
"a mano".
Su questo punto posso essere ripreso, anche se mi pareva che lo schema fosse
chiaro. Sul problema della pappa pronta proprio no!
Ripeto lo schema.
Si fissa una squadra, la "A", che farà da perno e giocherà sempre la prima
partita di ogni giornata.
Le altre le numeriamo 1,2,3...
La prima giornata le partite sono (l'esempio è con 8 squadre, ma è facile
generalizzare ad un qualunque numero pari di squadre):
A-1
7-2
6-3
5-4
Poi tengo fissa la A e alla catena dei 7 numeri faccio fare una rotazione
ciclica:
A-7
6-1
5-2
4-3
ed ecco la seconda giornata. Per la terza, altro scatto di una posizione
della catena 1,2,3,4,5,6,7
A-6
5-7
4-1
3-2
devo andare avanti?
Ripeto quanto avevo detto: una volta capito il meccanismo (e spero ora si
sia capito), non è difficile capire perché funziona e come implementarlo.
Ciao, Silv:o)


nel primo schema ho ruotato in senso antiorario, nel secondo in senso
orario. E' equivalente, scusate la distrazione...
per farmi perdonare scrivo una possibile funzione che, data la giornata e la
posizione in schedina, restituisce la partita.
Private Function partita(giornata As Integer, posizione As Integer) As
String
    If posizione = 1 Then
        partita = Squadre(0)
    Else
        partita = Squadre((numSquadre+giornata-posizione-1) Mod
(numSquadre-1) + 1)
    End If
    partita = partita & "-" & Squadre((posizione+giornata-2) Mod
(numSquadre-1) + 1)
End Function
Prima di richiamare la funzione bisogna impostare la variabile numSquadre e
riempire la matrice delle squadre Squadre() [la squadra 0 è il perno]
Una Sub che stampa il calendario potrebbe essere la seguente:
Private Sub StampaCalendario()
 Dim i As Integer, j As Integer
    numSquadre = 8
    Squadre(0) = "zero"
    Squadre(1) = "uno"
    Squadre(2) = "due"
    Squadre(3) = "tre"
    Squadre(4) = "quattro"
    Squadre(5) = "cinque"
    Squadre(6) = "sei"
    Squadre(7) = "sette"
    For i = 1 To numSquadre - 1
        Debug.Print "giornata " & i
        Debug.Print
        For j = 1 To numSquadre / 2
            Debug.Print partita(i, j)
        Next j
        Debug.Print "-----------------------"
    Next i
End Sub
Ciao, Silv:o)