# TD : Structures et Énumérations en C (Niveau Avancé)
## Exercice 1 : Gestion d'un inventaire professionnel
**Contexte :**
Vous devez développer un module de gestion d'inventaire pour un système de stockage
professionnel. Chaque article possède des caractéristiques techniques et des informations de suivi.
**Problème :**
1. Créez une structure `Article` comprenant :
- Un identifiant unique (entier)
- Un nom (chaîne de 50 caractères)
- Une quantité en stock (entier)
- Un prix unitaire (flottant)
- Une date de dernière mise à jour (sous-structure `Date` avec jour, mois, année)
- Un statut (énumération avec valeurs : DISPONIBLE, RUPTURE, COMMANDE)
2. Implémentez les fonctions :
- `ajouterArticle()` qui permet de saisir un nouvel article
- `afficherArticles()` qui liste tous les articles avec leurs détails
- `mettreAJourStatut()` qui modifie le statut d'un article selon son ID
**Questions avancées :**
- Comment optimiseriez-vous la gestion mémoire pour un inventaire de 10 000 articles ?
- Quelle structure de données utiliseriez-vous pour un accès rapide par ID ?
- Comment géreriez-vous les accès concurrents dans une application multi-thread ?
## Exercice 2 : Système de gestion d'employés
**Contexte :**
Développez un système RH pour gérer les employés d'une entreprise avec leurs compétences,
salaires et historique.
**Problème :**
1. Définissez une structure `Employe` contenant :
- ID (entier)
- Nom complet (structure avec nom, prénom)
- Poste (énumération : DEV, MANAGER, RH, etc.)
- Salaire (flottant)
- Compétences (tableau de chaînes)
- Années d'ancienneté (entier)
2. Créez une structure `Equipe` contenant :
- Nom de l'équipe
- Tableau d'employés
- Manager (pointeur vers un employé)
3. Implémentez :
- Une fonction pour calculer la masse salariale d'une équipe
- Une fonction pour trouver l'employé le plus ancien
- Une fonction pour promouvoir un employé (changement de poste et salaire)
**Questions avancées :**
- Comment implémenteriez-vous une hiérarchie managériale complexe ?
- Quelle solution proposez-vous pour gérer les compétences dynamiquement ?
- Comment optimiseriez-vous les recherches d'employés par critères ?
## Exercice 3 : Système de réservation de salles
**Contexte :**
Concevez un système de réservation de salles de réunion pour une entreprise.
**Problème :**
1. Définissez :
- Une structure `Salle` avec numéro, capacité, équipements (énumération : VIDEO, TABLEAU,
etc.)
- Une structure `Reservation` avec salle (pointeur), horaire (sous-structure), organisateur
- Une structure `Calendrier` contenant un tableau de réservations
2. Implémentez :
- Une fonction pour vérifier la disponibilité d'une salle à un créneau donné
- Une fonction pour ajouter/modifier une réservation
- Une fonction pour lister toutes les réservations d'un jour
- Une fonction pour trouver la salle la plus adaptée à un nombre de participants
3. Ajoutez un système de conflits avec énumération : CONFLIT_HORAIRE, CAPACITE, etc.
**Questions avancées :**
- Comment géreriez-vous les réservations récurrentes ?
- Quelle structure de données serait la plus efficace pour les recherches temporelles ?
- Comment implémenteriez-vous une persistance des données entre les exécutions ?
**Note pour l'enseignant :**
Ces exercices permettent d'aborder :
- Les structures imbriquées
- Les énumérations complexes
- La gestion de pointeurs
- Les problématiques d'optimisation mémoire
- Les cas réels du monde professionnel
- Les choix d'architecture logicielle