Menu
Coddy logo textTech

Récap : Modifier une structure - Ptr

Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 49 sur 63.

challenge icon

Défi

Facile

Créez un programme C qui démontre un système complet de gestion des employés à l’aide de l’allocation dynamique de mémoire, de pointeurs vers des structures et de fonctions. Votre programme doit :

  1. Définir une struct nommée Employee avec les membres suivants :
    • Un entier id pour stocker l’identifiant de l’employé
    • Un tableau de caractères name de taille 50 pour stocker le nom de l’employé
    • Un tableau de caractères department de taille 30 pour stocker le nom du service
    • Un flottant salary pour stocker le salaire de l’employé
    • Un entier yearsOfService pour stocker les années de service
  2. Écrire une fonction nommée fillEmployeeData qui :
    • Prend en paramètre un pointeur vers une structure Employee
    • Lit les informations de l’employé depuis l’entrée dans cet ordre : identifiant, nom, service, salaire, années de service
    • Affecte les valeurs aux membres de la structure à l’aide de l’opérateur flèche
    • Calcule une prime en fonction des années de service : si les années >= 5, la prime correspond à 10 % du salaire, sinon à 5 % du salaire
    • Ajoute la prime au salaire : empPtr->salary += bonus;
  3. Écrire une fonction nommée displayEmployee qui :
    • Prend en paramètre un pointeur vers une structure Employee
    • Affiche les informations de l’employé dans ce format exact :
      • Employee Details:
      • ID: [id]
      • Name: [name]
      • Department: [department]
      • Salary: [salary]
      • Years of Service: [yearsOfService]
  4. Écrire une fonction nommée promoteEmployee qui :
    • Prend en paramètre un pointeur vers une structure Employee
    • Augmente le salaire de 15 % à l’aide de l’opérateur flèche
    • Incrémente les années de service de 1
    • Affiche Employee promoted successfully!
  5. Dans la fonction main :
    • Déclarer un pointeur vers une structure Employee nommé empPtr
    • Utiliser malloc() pour allouer dynamiquement de la mémoire pour une structure Employee
    • Vérifier si l’allocation de mémoire a réussi :
      • Si empPtr est NULL, afficher Memory allocation failed et quitter le programme
      • En cas de réussite, afficher Memory allocated successfully
    • Appeler fillEmployeeData pour renseigner les données de l’employé
    • Afficher Initial employee data:
    • Appeler displayEmployee pour afficher les informations initiales de l’employé
    • Appeler promoteEmployee pour promouvoir l’employé
    • Afficher After promotion:
    • Appeler à nouveau displayEmployee pour afficher les informations mises à jour
    • Libérer la mémoire allouée dynamiquement à l’aide de free(empPtr)
    • Afficher Memory freed successfully

Ce défi combine tous les concepts clés du chapitre : définir des structures, effectuer une allocation dynamique de mémoire avec malloc(), vérifier l’échec de l’allocation, transmettre des pointeurs vers des structures aux fonctions, utiliser l’opérateur flèche pour accéder aux membres d’une structure et les modifier, ainsi qu’effectuer un nettoyage correct de la mémoire avec free(). Les fonctions démontrent comment les pointeurs permettent de modifier directement les données de la structure d’origine.

Essayez vous-même

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// TODO: Définir la structure Employee ici

// TODO: Implémenter la fonction fillEmployeeData ici

// TODO: Implémenter la fonction displayEmployee ici

// TODO: Implémenter la fonction promoteEmployee ici

int main() {
    // TODO: Déclarer empPtr et allouer de la mémoire
    
    // TODO: Vérifier si l'allocation de mémoire a réussi
    
    // TODO: Remplir les données de l'employé, afficher les données initiales, promouvoir et afficher après la promotion
    
    // TODO: Libérer la mémoire et afficher un message de succès
    
    return 0;
}

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur C en ligne