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

C++ Discussion :

Génération d'un calendrier de football !


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut Génération d'un calendrier de football !
    Bonjour, Je vais brievement vous exposer mon probleme !!

    Je suis en BTS info, et nous avons des PTI à réaliser !
    Cela concerne la PTI C++ ( Logique vu le forum )

    En fait, je suis en train de creer un projet qui permettra de gerer une saison de football en passant par le calendrier, le report des résultats de match etc ...

    Le probleme c'est que je n'arrive pas à gerer le calendrier !

    Je voudrais le réaliser comme tous les calendriers des championnats normaux ! C'est à dire, que pour une journée, une équipe ne peut jouer qu'une seule fois, et qu'elle ne peut pas jouer contre la meme equipe sur d'autres journées ... !

    Un petit aperçu du TabRencontre !


    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


    TabRencontre initialisé ! A gauche les NumEquipe, en haut les Journées !



    Je vous laisse un petit bout de code que j'ai réalisé à la va vite !

    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
    srand((unsigned) time(&t));
    NumEquipe = 1;
    do
    {
          Adversaire = rand()%21;
          if (TabRencontre[NumEquipe][Journee].Adversaire != 0)
          {
               NumEquipe = NumEquipe +1;
          }
          else
          {
                if(NumEquipe == Adversaire)
                {
                     Adversaire = rand()%21;
                }
                else
                {
                     TabRencontre[NumEquipe][Journee].Adversaire = Adversaire;
                     TabRencontre[Adversaire][Journee].Adversaire = NumEquipe;
                     Match = Match +1;
                     NumEquipe = NumEquipe +2;
                }
          }
    }while ((Match < Matchparjournee) && (NumEquipe < NbEquipe));

    En espérant avoir des idées de votre part !

    Merci !


    balise [code] rajoutée par r0d. Merci d'y penser la prochaine fois.

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue sur developpez.com

    Il manque quelque chose dans ton post: la question!
    Quel est ton problème?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Bonjour et merci !!

    Et bien je voudrais tout simplement avoir des idées pour pouvoir générer aléatoirement mon calendrier !

    Merci.

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    c'est typiquement de la programmation par contrainte: un nombre fini de restriction, un nombre infini (théorique) de solution.

    http://fr.wikipedia.org/wiki/Program...ar_contraintes
    http://bat710.univ-lyon1.fr/~csolnon...ge-ppc-som.htm
    il y a du linge sur la corde à linge

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Eh beh ya pas bcp d'idées lol !

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Je suis désolé, je ne comprends pas ce que tu veux faire.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Et bien je veux que pour un championnat, une equipe rencontre toutes les autres equipes dans les 19 journées de ce championnat !

    Mais je veux que par journée, une équipe ne peut jouer 2 fois ! Et que ds le championnat, 2 équipes ne peuvent se rencontrer ! Je ne gere pas les matches retour !!

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par doudou62
    Eh beh ya pas bcp d'idées lol !
    oui d'accord mais quelqu'un t'a donné déja une marche à suivre ( La Drogue C'est Mal ).
    Sinon c'est un peu trivial comme problème ; il suffit d'appliquer une logique réductrice un peu comme avec les calculs sur les probabilités.
    Si une équipe a joué un tel jour alors faire ceci etc...
    tu peux utiliser des arbres binaires de recherche c'est + adapté ( sur le site il ya un bon tuto la dessus de P Romuald je crois )
    Sinon cela tient plus de l'algorithmie que du C++

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par doudou62
    Et bien je veux que pour un championnat, une equipe rencontre toutes les autres equipes dans les 19 journées de ce championnat !

    Mais je veux que par journée, une équipe ne peut jouer 2 fois ! Et que ds le championnat, 2 équipes ne peuvent se rencontrer ! Je ne gere pas les matches retour !!
    Typique calcul d'analyse combinatoire ( euh je crois que cela s'appelle comme cela )
    Prends tes cours de maths sur les probas et les permutations cela t'aidera je pense
    Encore une fois les structures avec arbres binaires conviennent parfaitement

  10. #10
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Okay eh ben merci bien ! Je vais voir avec les arbres binaires !!

    Merci de toutes vos réponses ! A moi de me demerder maintenant !!!

    Kiss ! LoL !

  11. #11
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Si vous avez d'autres idées, N'hésitez pas !!!

  12. #12
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Par exemple, (avant 10h j'suis jamais trop réveillé)

    Pour générer les matchs (sans hasard):
    jour 1 : 1 contre 20, 2 contre 19, ...., 9 contre 10
    jour 2 : 1 contre 19, 2 contre 18, ...., 9 contre 20
    ...

    pas besoin de hasard dans la génération des matchs
    mais juste dans la numérotation des équipes.

    Remarque pour les matchs, tu n'as pas besoin des 20jours puisque que c'est symétrique avec les 10 premiers seul le lieu de la rencontre change.

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    J'ai implémenté un algorithme de génération d'un calendrier de football à partir de l'organigramme suivant :



    C : Colonnes de ton tableau (journées)
    L : Lignes de ton tableau (équipes)

    J'y suis arrivé donc tu ne devrais pas avoir de problèmes.
    Ca te génère uniquement les matches aller.

    A toi d'utiliser les structures qui vont bien.

    Bon courage

  14. #14
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Merci Speedster !
    Mais j'ai une question ?! Tu as réussi à le faire en C++ ???
    Pke le il me reste 5 semaines avant que je rende ma PTI et j'ai pas d'idée !! C'est vraiment trop dur ! Meme le prof galere mdr !

    Merci.

  15. #15
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par doudou62
    Meme le prof galere mdr !
    Merci.
    sic ! Si le prof galère c'est qu'il n'a pas les compétences pour donner des cours C++ je m'excuse.
    Si tu n'as que 5 semaines alors je m'excuse laisser tomber les arborescences ce serait trop complexe à mettre en oeuvre..
    L'algorithme qu' a donné Speedster est simple à mettre en oeuvre au travail !

  16. #16
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    5 semaines pour faire une fonction d'une ligne ???
    (MatchJournee)
    Edit:J'ai volontairement supprimé la partie aléatoire parce que faut pas exagérer quand même


    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
     
    #include <iostream>
    #include <string>
    using namespace std;
     
    // Les équipes
    string Equipes[] = {
        "Olympique Lyonnais",       "RC Lens",
        "Olympique de Marseille",   "FC Sochaux",
        "Lille OSC",                "Saint-Etienne",
        "AS Nancy",                 "Girondins de Bordeaux",
        "Toulouse FC",              "Le Mans",
        "AJ Auxerre",               "Rennes",
        "FC Lorient",               "Valenciennes",
        "AS Monaco",                "FC Nantes",
        "Paris Saint-Germain",      "ES Troyes AC",
        "OGC Nice",                 "CS Sedan Ardennes"
    };
     
    const int NombreEquipes = sizeof( Equipes ) /sizeof( Equipes[0] );
     
    // -----------------------------------------------------------
    pair< int, int > MatchJournee( int numEquipe, int journee )
    {
        return pair<int, int>( numEquipe, 
                               NombreEquipes - 1 - ( numEquipe + journee - 1 ) % NombreEquipes );
    }
     
    // -----------------------------------------------------------
    int main()
    {
        for ( int journee = 1; journee <= NombreEquipes-1; ++journee )
        {
            cout << "----------------------------------\n";
            for ( int equipe = 0; equipe < NombreEquipes; ++equipe )
            {
                pair< int, int > match = MatchJournee( equipe, journee );
                cout << "Jour " << journee << " : ["
                     << Equipes[ match.first ] << "] joue contre [" 
                     << Equipes[ match.second ] << "]"
                     << endl;
            }
        }
    }

  17. #17
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Non j'ai pas 5 semaines pour seulement faire ca ! Apres il faudra faire la rentrée des scores, affichage des journees, enregistrement dans un fichier, chargement, etc ...

    Ps : Y'as plein de trucs que j'ai jamais vu en cours dans ton code :s
    J'suis qu'en premiere année de BTSInfo lol :p

    Merci quand meme !

    Mon Fichier => Mon Fichier

    J'ai Essayé avec la fonction Recherche mais apparemment cela ne fonctionne pas ! Ca bug au niveau de la planification :s

  18. #18
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Ok..
    Bon courage en tout cas

  19. #19
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 142
    Points : 80
    Points
    80
    Par défaut
    Non, je l'ai implémenté en Java mais là tu as ce qu'il te faut pour remplir ton tableau de rencontres.

    Après il te faut simpler exploiter ce tableau.

    Citation Envoyé par Mat.M
    L'algorithme qu' a donné Speedster est simple à mettre en oeuvre au travail !
    Tout à fait d'accord Il n'y a qu'à suivre l'organigramme...

    Le plus dur est de connaître l'algorithme. Mais maintenant que tu l'as, tu n'as plus d'excuses

  20. #20
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Bah oue j'veux bien mais j'connais pas du tt comment on traduit cet algo !

    :s

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/07/2012, 15h06
  2. [2.x] [Twig] Génération d'un calendrier
    Par DreamCatcher89 dans le forum Symfony
    Réponses: 3
    Dernier message: 20/04/2012, 12h20
  3. Génération d'un calendrier Postgres
    Par patrick21 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/12/2010, 16h40
  4. Génération d'un calendrier sportif
    Par pikmin dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 25/03/2008, 22h50

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