NezEnMoins
Messages postés100Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention 9 mai 2008
-
20 déc. 2005 à 12:35
cs_69chris
Messages postés318Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention30 décembre 2005
-
20 déc. 2005 à 13:55
Bonjour à tous!
Le logiciel que je suis en train de développer est un logiciel de gestion de concours de belote. Lors de la première manche, les équipes sont tirées au sort. Il y a nbEquipes inscrites au tournoi, nbEquipes est obligatoirement un nombre pair.
Je suis sous VB 2005 et j'ai un problème dans ce code :
Dim equNum As Integer = 0
Dim equNum1 As Integer = 0
Dim equNum2 As Integer = 0
Dim nbEquipesTMP As Integer = nbEquipes
Dim TabEquipes(nbEquipes) As Integer
Dim nI As Integer = 0
Dim nJ As Integer = 0
Dim nK As Integer = 0
For nI = 0 To nbEquipes - 1
TabEquipes(nI) = nI + 1
Next
For nI = 1 To nbEquipes / 2
For nJ = 1 To 2
equNum = TabEquipes(Int((Rnd() * nbEquipesTMP)) + 1)
For nK = equNum To nbEquipesTMP - 1
TabEquipes(nK) = TabEquipes(nK + 1)
nbEquipesTMP -= 1
If nJ = 1 Then
equNum1 = equNum
Else
equNum2 = equNum
End If
Next nK
Next nJ
frmConcours.lstConfront.Items.Add("e" & equNum1 & " vs e" & equNum2)
Next nI
Avec ce code, cela me tire plusieurs fois une même équipe ce qui n'est pas bon!
Exemple de résultat pour nbEquipes = 8 :
e6 - e8
e7 - e5
e1 - e1
e1 - e2
Si quelqu'un pouvais m'aider ça serait super !!!
Merci d'avance et bonne journée
cs_69chris
Messages postés318Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention30 décembre 20051 20 déc. 2005 à 13:55
Salut,
Comme je cherche pas trop à comprendre ton algo, je te propose un truc un peu différent.
Tu crée une ArrayList à partir de ton tableau d'équipe (comme ça, ça marche toujours si tu utilise une classe équipe plutôt qu'un tableau d'entier).
dim arlEqipes as ArrayList = new ArrayList()
For iCptEquipe = 1 To nbEquipes
arlEqipes.Add(iCptEquipe)
Next
Ensuite, on utilise le même principe de tirage au sort mais on supprime de la liste les éléments déjà tirés.
dim iIndice as Integer
For nbPaire = 1 To nbEquipes / 2
iIndice = Math.Round(Rnd() * (arlEqipes.Count-1))
equ1 = arlEqipes(iIndice)
arlEqipes.RemoveAt(iIndice)