IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Tirage au sort


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Tirage au sort
    Bonjour,
    Je suis sur une application de tirage au sort de compétition de judo.
    Le principe c'est de faire un tirage selon 2 paramètres de base:
    1. Mettre des têtes de séries au départ
    2. Faire un tirage sans que les judokas d'un même club ne puissent se rencontrer dès les premiers tours.
    Voici ce que j'ai comme module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    tableau_Temp    = allouer un tableau dynamique de nbe entiers
    z est un entier
    POUR TOUT Fichier_pour_Tirages SUR IDF_lgn_Tirages
    	HSupprime(Fichier_pour_Tirages)
    FIN
    TableAffiche(Table_des_Tirages)
     
    InitHasard()
    b = 1
    s = 1
     
    TANTQUE s <= nbe
    	x = Hasard(1, nbe)
    	SI TableauCherche(tableau_Temp,tcLinéaire ,tableau_Equipes[x]) <= 0 ALORS
    		tableau_Temp[s] = tableau_Equipes[x]
    		{"Fichier_pour_Tirages.IDF_equipes"+NumériqueVersChaîne(b)}=tableau_Equipes[x]
    	   		SI b = 1 ALORS
     
    					HAjoute(Fichier_pour_Tirages)	
     
    		SINON
    			HModifie(Fichier_pour_Tirages)	
    		FIN
     
    		b=1+b
    		s++
    	FIN
    FIN
    TableAffiche(Table_des_Tirages)
    FichierVersEcran()
    Mon problème c'est que je ne suis pas arrivé à faire éloigner les têtes de séries (comme au tennis) et les judokas d'un même club.
    Je demande votre aide
    Merci
    Turkijudo

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Salut..

    Voici un petit bout de code qui peut peut-être t'aider..
    Une très grosse partie du travail est faite mais il te reste à faire de même pour tes têtes de série.
    En gros tu fais un tirage pour les premier du classement puis un tirage pour les autres

    Une petite idée test de le nombre de fois ou il te reste que deux candidat du même club et fait un test car si il n'y a que des personnes du même club le programme va tourner en boucle..

    Il y a encore plein de test à faire sur la liste des participants.
    En gros si il y a un nombre inpair de candidat, si il sont du même club,
    et à mon avis plein d'autres cas qui feront tourner le prog en boucle..

    Bon courage et bon dev..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    Participant est une structure
    	Nom est une chaîne
    	Classement est un entier
    	Club est une chaîne
    	PrisParTirage est un booléen = Faux	//	permet de savoir si le participant est déjà sélectionner par le tirage au sort
     
    FIN
    Listeparticipant est tableau de Participant
    NbParticipant est entier
    NbParticipantPrisPartirage est entier
    NumTirageParticipant1,NumTirageParticipant2 sont des entiers
    Rencontre est tableau de * par 2 Participant
    TirageOk est un booléen = Faux
    //	incription des participants
    //
     
    TableauAjouteLigne(Listeparticipant,["NomParticipant1",12,"Club1",Faux])
    TableauAjouteLigne(Listeparticipant,["NomParticipant2",2,"Club1",Faux])
    TableauAjouteLigne(Listeparticipant,["NomParticipant3",1,"Club1",Faux])
    TableauAjouteLigne(Listeparticipant,["NomParticipant4",18,"Club1",Faux])
    TableauAjouteLigne(Listeparticipant,["NomParticipant5",16,"Club2",Faux])
    TableauAjouteLigne(Listeparticipant,["NomParticipant6",17,"Club2",Faux])
    TableauAjouteLigne(Listeparticipant,["NomParticipant7",5,"Club2",Faux])
    TableauAjouteLigne(Listeparticipant,["NomParticipant8",4,"Club3",Faux])
     
     
    //	Tirage ou sort des équipes
    NbParticipant = TableauOccurrence(Listeparticipant)
     
    BorneMin est un entier
    BorneMax est entier
     
    NbParticipantPrisPartirage = 0
    // Initialise le générateur de nombres aléatoires
    //InitHasard()
    //	A toi de faire les test si tu ne peux pas faires des équipes de deux
    //
    //
    TANTQUE NbParticipantPrisPartirage < NbParticipant
     
    	//Tirage au sort
        TirageOk = Faux
    	//Définition de borne min
    	POUR i = 1 A NbParticipant
    		BorneMin = i
    		SI PAS Listeparticipant[i].PrisParTirage ALORS
    			SORTIR
    		FIN
    	FIN
     
    	POUR i = NbParticipant A 1 PAS -1
    		BorneMax = i
    		SI PAS Listeparticipant[i].PrisParTirage ALORS
    			SORTIR
    		FIN
    	FIN
    	Trace(BorneMin,BorneMax)
        // On teste si il ne reste pas que deux participant
        SI NbParticipant - NbParticipantPrisPartirage > 2 ALORS
    	    TANTQUE PAS TirageOk
    			NumTirageParticipant1 = Hasard(BorneMin, BorneMax)
    			// on test si il n'est pas déjà pris
    			TANTQUE Listeparticipant[NumTirageParticipant1].PrisParTirage
    				NumTirageParticipant1 = Hasard(BorneMin, BorneMax)
    			FIN
    			NumTirageParticipant2 = Hasard(BorneMin, BorneMax)
    			// on test si il n'est pas déjà pris
    			TANTQUE Listeparticipant[NumTirageParticipant2].PrisParTirage OU NumTirageParticipant1 = NumTirageParticipant2
    				NumTirageParticipant2 = Hasard(BorneMin, BorneMax)
    			FIN
     
    			// on test si c'est pas le même numéro, si il ne sont pas du même club
    			//
    			//	A toi de faire ta séparation pour les têtes de série
    			//	pour ça utilise 2 listeparticipant une pour les têtes et une pour les autres ainsi tu lancera deux tirage au sort
    			//
    			SI Listeparticipant[NumTirageParticipant1].club = Listeparticipant[NumTirageParticipant2].club ALORS
    				TirageOk = Faux
    			SINON
    				TirageOk = Vrai
    			FIN	
    		FIN
     
    		//	on ajoute la sélection à rencontre
    		//
    		TableauAjouteLigne(Rencontre,Listeparticipant[NumTirageParticipant1],Listeparticipant[NumTirageParticipant2])
    		//on indique que les participant font sont déjà sélectionner
    		Listeparticipant[NumTirageParticipant1].PrisParTirage = Vrai	
    		Listeparticipant[NumTirageParticipant2].PrisParTirage = Vrai
    		NbParticipantPrisPartirage+=2
     
     
    	SINON
    		//	Il ne reste que deux candidat
    		//
    		NumTirageParticipant1 = BorneMin
    		NumTirageParticipant2 = BorneMax
    		// on test si il ne sont pas du même club.
    		// si c'est le cas on réinitialise tout le tirage
    		SI Listeparticipant[NumTirageParticipant1].club = Listeparticipant[NumTirageParticipant2].club ALORS
     
    			POUR i = 1 A TableauOccurrence(Listeparticipant)
    				Listeparticipant[i].PrisParTirage = Faux
    			FIN
    			TableauSupprimeTout(Rencontre)
    			NbParticipantPrisPartirage = 0
    		SINON
    			//	on ajoute la sélection à rencontre
    			//
    			TableauAjouteLigne(Rencontre,Listeparticipant[NumTirageParticipant1],Listeparticipant[NumTirageParticipant2])
    			//on indique que les participant font sont déjà sélectionner
    			Listeparticipant[NumTirageParticipant1].PrisParTirage = Vrai	
    			Listeparticipant[NumTirageParticipant2].PrisParTirage = Vrai
    			NbParticipantPrisPartirage+=2
    		FIN
    	FIN
     
    FIN
     
    POUR i= 1 A TableauOccurrence(Rencontre)
    	Trace(Rencontre[i][1].Nom + " du club " + Rencontre[i][1].club, "vas rencontrer " ,Rencontre[i][2].Nom + " du club " + Rencontre[i][2].club)
     
    FIN
    Trace("")
    Trace("")
    Bon Dév.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Tirage au sort
    Merci pour votre réponse mais je crois qu'il y a encore des bugs
    Merci
    Turkijudo

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Citation Envoyé par turkijudo Voir le message
    mais je crois qu'il y a encore des bugs
    Normale qu'il y ai des BUGS ce n'est qu'une idée du déroulement.
    Maintenant il faut que tu fasse des tests.
    A Savoir si il n'y as pas assez de participants de club différents pour faire des équipe qui ne soit pas dans le même club.
    --> dans ce cas tu fais quoi??

    Si il te manque des participants pour faire des équipes de deux comment tu fais ???

    Comment fais tu ta séparation des "têtes de séries" sur quel critère??


    J'ai pas mis la notion de premier tour, dans ce cas fait sauter les testes sur le club..

    Je veux bien t'aider mais je vais pas faire le dév à ta place
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

Discussions similaires

  1. Quelle fonction pour faire un tirage au sort de noms
    Par Sofie109 dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/06/2007, 14h52
  2. Tirage au sort
    Par Titeuf82 dans le forum Ada
    Réponses: 5
    Dernier message: 17/04/2007, 11h05
  3. Tirage au sort d'un mot
    Par Dav-D dans le forum C
    Réponses: 39
    Dernier message: 04/01/2007, 17h04
  4. [VBA-E] Tirage au sort avec probabilité
    Par clarisse dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/05/2006, 11h01
  5. Tirage au sort
    Par clampin dans le forum Langage
    Réponses: 2
    Dernier message: 19/12/2005, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo