Tableau de rencontre

Planification des rencontres sportives avec mon code

Le programme que j’ai réalisé en langage C permet de planifier et d’afficher les rencontres sportives entre 20 équipes, en veillant à ce que chaque équipe affronte une autre différente chaque semaine. Voici une description détaillée de ce code, étape par étape, pour mieux comprendre son fonctionnement et les concepts appliqués.


1. Initialisation des variables

#define NB_CASES 20

int t[NB_CASES][NB_CASES], nb, nbcases, nbequipe, week, repos[NB_CASES], nbrepos;

nbcases = NB_CASES;
nb = 1;  // Compteur pour les équipes.
nbequipe = 20;  // Nombre total d'équipes.
week = 0;  // Numéro de la semaine.

Dans cette section :

  • Le tableau t[20][20] représente les matchs entre les équipes sur 20 semaines.

  • Les variables comme nb et week gèrent respectivement l’attribution des équipes et le suivi des semaines.

  • repos[20] stocke les équipes en repos pour chaque semaine.


2. Génération du tableau des rencontres

for (int l = 0; l < nbcases; l++, nb--) {
    for (int c = 0; c < nbcases; c++, nb++) {
        if (nb > nbequipe) nb = 1;
        t[l][c] = nb;
    }
}
  • Ce code remplit le tableau t ligne par ligne et colonne par colonne.

  • Chaque cellule t[l][c] contient le numéro d’une équipe que la ligne (équipe actuelle) rencontrera lors de la semaine correspondante (colonne).

  • Lorsque le numéro d’équipe dépasse 20, il revient à 1 grâce à cette ligne :

    if (nb > nbequipe) nb = 1;

Ainsi, le tableau est rempli de manière circulaire pour garantir que toutes les équipes jouent.


3. Affichage du tableau

for (int l = 0; l < nbcases; l++) {
    for (int c = 0; c < nbcases; c++) {
        printf("%5d", t[l][c]);
    }
    printf("\n");
}
  • Une double boucle imbriquée affiche le tableau complet sous forme tabulaire.

  • Chaque cellule montre quelle équipe sera rencontrée par une autre lors d’une semaine donnée.

Exemple d’affichage du tableau :

    1    2    3    4    5 ...
    2    3    4    5    6 ...
    3    4    5    6    7 ...

4. Affichage des rencontres semaine par semaine

for (int c = 0; c < nbcases; c++) {
    week++;
    nbrepos = 0;
    printf("Semaine %d\n\n", week);
    for (int l = 0; l < nbcases; l++) {
        if (l + 1 < t[l][c]) {
            printf("%d contre %d\n", l + 1, t[l][c]);
        }
        if (l + 1 == t[l][c]) {
            repos[nbrepos] = l + 1;
            nbrepos++;
        }
    }
    if (nbrepos > 0) {
        printf("Equipes au repos :");
        for (int i = 0; i < nbrepos; i++) {
            printf(" %d", repos[i]);
        }
    }
    printf("\n\n");
}

Cette partie gère l’affichage détaillé des matchs semaine par semaine :

  1. Pour chaque semaine (colonne) :

    • Une boucle interne parcourt toutes les lignes (équipes) pour déterminer les rencontres.

    • Si une équipe rencontre une autre (différente), le match est affiché :

      printf("%d contre %d\n", l + 1, t[l][c]);
    • Si une équipe est en repos (elle se rencontre elle-même), son numéro est enregistré dans le tableau repos.

  2. Les équipes en repos sont affichées séparément :

    if (nbrepos > 0) {
       printf("Equipes au repos :");
       for (int i = 0; i < nbrepos; i++) {
           printf(" %d", repos[i]);
       }
    }

Résultats du programme

Pour chaque semaine, le programme affiche les matchs ainsi que les équipes en repos.

Exemple de sortie pour une semaine :

Semaine 1

1 contre 2
3 contre 4
5 contre 6
...

Equipes au repos : 20

Concepts appliqués

Ce programme met en œuvre plusieurs notions fondamentales en algorithmique :

  1. Tableaux multidimensionnels :

    • Un tableau 2D est utilisé pour organiser les données des matchs.

    • Chaque cellule représente une rencontre entre deux équipes.

  2. Boucles imbriquées :

    • Les boucles imbriquées servent à parcourir et à remplir le tableau, ainsi qu’à afficher les résultats.

  3. Conditions :

    • Les conditions gèrent les cas où une équipe est en repos ou doit affronter une autre.

  4. Affichage structuré :

    • Les sorties sont organisées pour une lisibilité optimale, avec un tableau pour les données brutes et un affichage hebdomadaire pour les rencontres.


Mon apprentissage

En réalisant ce projet, j’ai appris à :

  • Manipuler efficacement les tableaux multidimensionnels pour résoudre des problèmes complexes.

  • Organiser un programme en étapes logiques pour atteindre un objectif précis.

  • Concevoir un algorithme pratique pour gérer une situation réaliste, comme la planification de rencontres sportives.

Ce code reflète ma compréhension des notions algorithmiques vues en cours, tout en mettant en œuvre des compétences en programmation pour un cas concret. Je suis fier de cette réalisation, car elle montre ma capacité à traduire des concepts théoriques en un programme fonctionnel et structuré.

Date

29/12/2024

Catégorie

Auteur

Olivier

Commentaires

Aucun commentaire pour le moment.

Ajouter un commentaire