Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2012
    Messages : 13
    Points : 0
    Points
    0

    Par défaut Tournoi de football [matchs de poule]

    Désolé d'abuser à ce point de votre gentillesse mais je passe sur un autre exercice et pour le coup je n'ai même pas un but de code à vous proposer, je cale à 100%. Voici l'énoncé:

    On souhaite implémenter une gestion (fortement simplifiée) des tableaux de classement lors d’un tournoi de foot. On se concentre à la phase dite des “matchs de poule”.
    On ne regardera qu’un seul groupe avec quatre équipes participantes (#define N 4).
    Les équipes de cette poule sont représentées par un tableau de chaînes de caractères intitulé équipes. On l’initialise avec les noms de quatre équipes au début du programme principal. Une équipe est ainsi associée à un numéro qui correspond à sa place dans le tableau équipes (0 à 3).

    1. Ecrivez le code pour initialiser le tableau équipes avec les noms des quatre équipes de la même poule.
    Aide : Utilisez le type string pour les noms des équipes qui sont des chaînes de caractère constantes.
    Un deuxième tableau intitulé classement stockera le nombre de points. Il contiendra une case par équipe. Ce tableau sera mis à jour après chaque match. Le gagnant se placera en première position, le deuxième en deuxième position, etc. du tableau. On affichera ce tableau après chaque match, en associant les noms d’équipes à la bonne place dans le classement.

    2. Ecrivez une fonction initialiser_classement qui initialise les points dans le classement à zéro.

    3. Ecrivez une fonction afficher_classement qui prend en argument le tableau d’équipes et le tableau de classement et affiche, à un moment donné, le nom de l’équipe, sa position dans le classement et le nombre de points obtenus jusque-là.
    L’affichage souhaité est donné ci-dessous.
    Code :
    1
    2
    3
    4
    angleterre no. : 1 : 6
    espagne no. : 2 : 4
    france no. : 3 : 3
    grece no. : 4 : 1
    4. Quel type d’algorithme sera nécessaire pour mettre en place la mise à jour du tableau ? Ecrivez une fonction mise_a_jour qui met à jour le tableau et insérez-la au bon endroit dans la fonction match.

    5. Ecrivez une fonction match qui attribue des points.
    On modélise l’issue d’un match par les index des deux équipes (entre 0 et 3) et par un entier 0,1,2 indiquant s’il s’agit d’un match nul (égalité entre équipes) ou si la première ou la deuxième a gagné. Cet entier est tiré au hasard (utiliser la fonction de la bibliothèque CINI prévue à ce propos).
    Un match gagné apportera 3 points, un match nul apportera un point, un match perdu aucun point. Ce nouveau score sera attribué aux deux équipes impliquées dans le match. Il faut prévoir l’affichage du score qui s’effectuera dans le programme principal. Il faut également mettre à jour le classement pour prendre en compte le nouveau score (appel de la fonction mise_a_jour).

    6. Ecrivez le programme principal. Il faut faire de sorte que chaque équipe joue contre chaque autre équipe. L’affichage souhaité est le suivant :

    Code :
    1
    2
    3
    4
    5
    6
    Match angleterre contre espagne : 0
    Match france contre espagne : 2
    Match france contre angleterre : 0
    Match grece contre espagne : 2
    Match grece contre angleterre : 2
    Match grece contre france : 1
    7. On souhaite étendre la gestion à plusieurs groupes de poules (par exemple, quatre groupes intitulés A,B,C et D). Répondez aux questions suivantes, en donnant des bouts de code C :
    – Comment en tenir compte ? Faut-il modifier la structure des boucles ?
    – Comment faut-il modifier le tableau représentant le classement ?
    – Comment faire (sans disposer de tableau ASCII) pour afficher une lettre majuscule représentant le groupe dans la fonction afficher_tableau ?


    Donc des la première question je n'ai aucune idée de comment intégrer ma suite de caractère à un tableau. En me renseignant par si par là je suis tombé sur une fonction strcopy il me semble mais je ne suis pas censé l'utiliser je pense. comment implémenter que telle case d'un tableau (numéro d'équipe) représente telle chaîne de caractère ?

    Et plus ou moins pareil pour le reste j'ai des bribes d'idées mais je n'arrive pas à les mettre en place j'ai l'impression qu'il me manque quelque chose.

    Donc serait possible qu'une âme charitable me donne quelques conseils sur la marche à suivre ? ( je ne demande absolument pas que l'on écrive le code à ma place bien entendu mais que l'on me mette sur la bonne voie).

    Merci d'avance,

  2. #2
    Membre expérimenté Avatar de LinuxUser
    Inscrit en
    avril 2007
    Messages
    806
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 806
    Points : 506
    Points
    506

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2012
    Messages : 13
    Points : 0
    Points
    0

    Par défaut

    Je vous montre mon état d'avancement:

    Code :
    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
    #include <cini.h>
    #define N 4
     
    void initialiser_classement (int classement[], int taille) {
    	int i;
     
    	for (i = 0; i < taille; i++) {
    		classement[i]=0;
    	}
    }
     
    void afficher_classement (string equipes[], int classement[],int ordre[], int taille) {
    	int i;
     
    	for (i = 0; i < taille; i++) {
    		printf("%s : ", equipes[i]);
    		printf("%d : ", ordre[i]);
    		printf("%d \n", classement[i]);
    	}
    }
     
     
    int main() {
     
    	string equipes[N] = {"France","Allemagne","Angleterre","Espagne"};
    	int ordre[N] = {1,2,3,4};
    	int classement[N] = {4,0,0,0};
     
    	initialiser_classement(classement, N);
     
    	afficher_classement(equipes, classement,ordre, N);
     
    	return 0;
    }
    Je suis donc à a question 4 sans aucune conviction car je ne pense pas que lorsque mes tableaux auront des valeurs, ma fonction Afficher_classement me l'affichera dans l'ordre. Ensuite je suppose que pour la mise à jour il faut que j'utilise l'algorithme de Tri par insertion, mais je ne vois pas comment attribuer un ordre ( de 1 à 4) en fonction du classement (points reçu).

    Encore merci d'avance,

    PS: Merci beaucoup LinuxUser car même si je t'avoue que tes liens sur du C++ ne m'ont pas vraiment débloqué, ils m'ont tout de même permis de vérifier plusieurs de mes syntaxes et de me rendre compte que j'avais fait une faute de frappe sur mon code.

  4. #4
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2012
    Messages : 13
    Points : 0
    Points
    0

    Par défaut

    vraiment personne pour m'aider a attribuer une equipe à un ordre et à un score ? car pour le moment j'ai mes fonctions:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void echanger(string equipes[], int classement[], int i, int j) {
    	int aux; 
     
    	aux = classement[i];
    	equipes[i] = equipes[j];
    	classement[i] = classement[j];
    	equipes[j] = equipes[i];
    	classement[j] = aux;
     
    }
    et

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    void mise_a_jour (string equipes[], int classement[], int taille) {
     
    	int i, ifin, i_max; 
    	for (ifin = taille-1 ; ifin > 0 ; ifin--) {
         /* recherche de l’indice de la case contenant 
          le max dans un tableau d'indices [0.. ifin] */ 
          i_max = 0; 
          for (i = 1 ; i <= ifin ; i++) { 
             if (classement[i] < classement[i_max]) { 
                i_max = i;
    		}
    	}
    	if (i_max != ifin) {
            /* le max n’est pas dans la derniere case */
             echanger(equipes, classement, i_max, ifin);
    	 } 
     }
    }
    Ces fonctions me trient mon classement mais pas du tout mon tableau d’équipe, donc soit j'ai commis une erreur, soit je dois utiliser mon tableau ordre d'une autre façon.

    Merci,

  5. #5
    Expert Confirmé Sénior Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    23 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 23 813
    Points : 31 652
    Points
    31 652

    Par défaut

    Ta fonction d'échange est incorrecte quant aux noms d'équipe.
    Code C++ :
    1
    2
    3
    4
    5
    6
    7
    8
    #include <algorithm>
    #include <string>
    using namespace std;
     
    void echanger(string equipes[], int classement[], size_t i, size_t j) {
    	swap(classement[i], classement[j]);
    	equipes[i].swap(equipes[j]);
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •