Examen i133 structures de donnees en langage c fst 2020 2021
Télécharger PDFCe document décrit la modélisation et la gestion des informations de vaccination au sein d'un centre contre la COVID-19. La campagne de vaccination cible les citoyens âgés de plus de 17 ans, suivant un schéma vaccinal en deux injections.
Représentation des Données
Les informations des personnes éligibles à la vaccination sont représentées sous forme d'une liste doublement chaînée. Chaque nœud de cette liste représente une Personne, caractérisée par les informations suivantes :
- Code (identifiant unique, par exemple le CIN).
- Nom et Prénom.
- Âge.
- Catégorie de la personne, indiquant la population ciblée en priorité : "autorités publiques", "armée", "santé", "enseignement", "Âgée de plus de 75 ans", "Autres".
- Vaccin, déterminant le laboratoire du vaccin ("Sinopharm" ou "AstraZeneca").
- Injection, précisant l'état des deux injections programmées (reçue ou non).
Déclaration des Structures C
La structure Injection représente l'état des deux doses de vaccin :
typedef struct {
int J1; // J1 = 1 si la personne a reçu la première injection, et 0 sinon.
int J2; // J2 = 1 si la personne a reçu la deuxième injection, et 0 sinon.
} Injection;
La structure Personne regroupe les informations détaillées d'un individu :
typedef struct {
char code[12]; // Le code d'identification de la personne (ex: CIN)
char nom_prenom[30]; // Nom et prénom de la personne
int age; // Âge de la personne
char categorie[20]; // Catégorie de population ciblée
char vaccin[20]; // "Sinopharm" ou "AstraZeneca"
Injection inj; // État des injections réalisées
} Personne;
La structure Liste (ou element) définit un nœud de la liste doublement chaînée :
typedef struct element {
Personne P;
struct element *suivant;
struct element *precedent;
} Liste;
Fonctionnalités à Implémenter
1. Création d'une Personne et Allocation de Nœud
Écrire une fonction qui permet de créer et de retourner une structure Personne dont les informations personnelles sont lues au clavier.
Personne lire_personne();
Écrire une deuxième fonction qui permet d'allouer de l'espace mémoire pour un nouveau nœud. Cette fonction retourne l'adresse du nouveau nœud en cas de succès et NULL en cas d'échec.
Liste *allouer_noeud();
2. Ajout d'une Personne en Fin de Liste
Écrire une fonction qui permet d'ajouter une personne à la fin de la liste. Il est important de noter que seules les personnes âgées de plus de 17 ans sont éligibles à la vaccination contre la COVID-19.
Liste *ajouter_fin(Liste *L, Personne nv);
3. Suppression des Personnes Non Éligibles
Écrire une fonction qui permet de supprimer de la liste les personnes non éligibles à la vaccination contre la COVID-19, c'est-à-dire celles âgées de moins de 17 ans, si de telles personnes s'y trouvent.
Liste *supprimer_non_eligibles(Liste *L);
4. Tri des Personnes par Âge
Écrire une fonction qui permet de trier toutes les personnes de la liste par âge, du plus vieux au plus jeune.
Liste *trier_par_age(Liste *L);
5. Division des Personnes par Laboratoire de Vaccin
Écrire une fonction qui permet de diviser les personnes de la liste principale en deux sous-groupes (deux nouvelles listes) selon le laboratoire du vaccin : "Sinopharm" pour L1 et "AstraZeneca" pour L2.
void diviser(Liste *L, Liste **L1, Liste **L2);
6. Recherche des Personnes Ayant Reçu les Deux Injections
Écrire une fonction qui permet de vérifier si une personne identifiée par son code a bénéficié des deux injections de vaccin. La fonction retourne 1 si c'est le cas, et 0 sinon.
int rechercher_deux_injections(Liste *L, char *code);
7. Affichage Inverse des Personnes de la Catégorie "Enseignement"
Écrire une fonction qui affiche à l'envers toutes les personnes de la liste dont la catégorie est "enseignement".
void afficher_personnes_enseignement_inverse(Liste *L);
Foire Aux Questions (FAQ)
Quel est l'objectif principal de ce système ?
L'objectif est de modéliser et gérer les informations de vaccination des personnes dans un centre, en utilisant une structure de données de liste doublement chaînée.
Quels sont les critères d'éligibilité pour la vaccination ?
La campagne de vaccination cible les citoyens âgés de plus de 17 ans.
Quelles informations sont stockées pour chaque personne vaccinée ?
Pour chaque personne, le système stocke son code (CIN), nom et prénom, âge, catégorie de population prioritaire, le type de vaccin reçu (Sinopharm ou AstraZeneca), et l'état de ses deux injections.