Un club sportif du football comporte un ensemble de joueurs de différents âges qui sont divisés en trois catégories. Mineur (âge ≤ 10),  Cadet (10 < âge ≤ 18),  Junior (âge > 18). Chaque joueur est identifié par les informations suivantes : code,  Nom, prénom, date de naissance et catégorie. Ces informations représentent les champs de trois structures suivantes.

typedef struct  {  
int  jour ; 
int  mois ;  
int  annee ;  
} Date ;

typedef struct  { 
int age ; 
char groupe [10] 
} Ctegorie ;
 
typedef struct   {  
int code ; 
char  nom_prenom[30] ;  
Date naissance  ;  
Ctegorie  type  ; 
 } Joueur ; 

#define max 100

typedef  Joueur  Club[max] ;
 

Le club gère ces joueurs à l’aide d’un tableau de type Joueur en se basant sur les fonctions suivantes :


1)  void  lecture (Club C,int N )    permet de saisir les informations  ( code, nom , prénom et date de naissance) de  N  joueurs .  Et remplir les autres champs (Age et Groupe) automatiquement sans utiliser le clavier.   
  
2) void   afficher  (Club C, int N )   permet d’afficher la liste de N  joueurs  qui  sont enregistrés dans le tableau C.
 
3) void   supprimer_junior (Joueur   J [max]  , int  * N )   cette fonction permet de 
supprimer les joueurs dont le type  est  «Junior »  et dont  l’âge est supérieur strictement Ã  30 ans. 

4) Joueur *  rechercher_junior   (Joueur   J [max] , int   N ,  int * NJ )  cette fonction 
permet  de rechercher  et retourner un tableau contenant uniquement les joueurs dont le type est « junior ». Et le troisième argument  NJ  est utilisé pour stocker  la taille du tableau retourné. 

5) void  groupe_junior (Joueur   J [max] ,  int N )  cette fonction  permet de classer et 
afficher les joueurs de type « Junior » qui ont un âge inférieur ou égal à 30 ans dans 
l’ordre   décroissant selon l’âge. 

6) void  trier_joueurs  (Joueur   J [max] ,  int N )  cette fonction  permet de trier le 
tableau de telle façon   que tous les joueurs de type  « Mineur »  apparaissent au début, suivis des joueurs de type  « Cadet»  puis des joueurs de  type  « Junior ».

                                              Correction
                                                       
1)

void saisir (Club C,int N){
 int i;
  for ( i=0; i<N ; i++)
   { printf("Entrer le code :");   scanf("%d",&C[i].code);
     printf("Entrer Nom et prenom :");   scanf("%s",C[i].nom_prenom);
     printf("Entrer la naissance \n");
     printf(" jours: ");     scanf("%d",&C[i].naissance.jour);  
     printf(" mois: ");      scanf("%d",&C[i].naissance.mois);
     printf(" annee: ");     scanf("%d",&C[i].naissance.annee);
     C[i].type.age =(12-C[i].naissance.mois+3+(30-C[i].naissance.jour+23)/30-1)/12
      + 2021-C[i].naissance.annee-1;
      if( C[i].type.age <= 10 ) strcpy (C[i].type.groupe, "Mineur");
      if( 10 < C[i].type.age && C[i].type.age <= 18 ) 
        strcpy (C[i].type.groupe, "Cadet");
      if( C[i].type.age > 18 ) strcpy (C[i].type.groupe, "Junior");
   }
 }


2)
void  afficher (Club C,int N){
 int i;
  for ( i=0; i<N ; i++)
   { printf("==> %d  %s  %d/%d/%d   %d ans   %s ",C[i].code,C[i].nom_prenom,
            C[i].naissance.jour,C[i].naissance.mois,C[i].naissance.annee,
            C[i].type.age,C[i].type.groupe); 
     printf("\n**************************\n");
   }
 }

3)

void  supprimer_junior(Joueur J[max],int *N)  
{ int i,j;
   for ( i=0; i<*N ; i++)
     {if(J[i].type.age>30)
        {    
           for (j=i;j<*N ;j++)   J[j] = J[j+1];
              (*N)--;   i--; 
        }
    }
 }


4)

Joueur * rechercher_junior(Joueur J[max] ,int N,int *NJ)
{  Joueur tab[max];
   int i;
     *NJ = 0 ;
  for ( i=0; i<N ; i++)
    { if(J[i].type.age > 18)
      {  tab[*NJ] = J[i];
         (*NJ)++ ; 
      }
    } 
  return tab;
}

5)

void groupe_junior(Joueur J[max] ,int N)
{  Joueur tab[max],aide;
   int i,j,NJ=0;
  for ( i=0; i<N ; i++)
    { if(18 < J[i].type.age && J[i].type.age <= 30 )
      {  tab[NJ] = J[i];
         NJ++ ; 
      }
    }
     
  for( i=0; i <NJ-1; i++)
   {  for( j=i+1; j <NJ; j++)
       {
          if(tab[i].type.age < tab[j].type.age) 
           { aide = tab[i]; tab[i] = tab[j] ;  
              tab[j]= aide ;}
         
       } 
    } 
     
    afficher (tab,NJ);
}


6)