Menu
Coddy logo textTech

Récap : Modifier une structure - Ptr

Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 49 sur 63.

challenge icon

Défi

Facile

Créez un programme C qui illustre un système complet de gestion des employés utilisant l'allocation dynamique de mémoire, des pointeurs de structure et des fonctions. Votre programme doit :

  1. Définir une struct nommée Employee avec les membres suivants :
    • Un entier id pour stocker l'ID 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 département
    • 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 un pointeur vers une structure Employee en paramètre
    • Lit les informations de l'employé à partir de l'entrée dans cet ordre : ID, nom, département, salaire, années de service
    • Assigne les valeurs aux membres de la structure en utilisant l'opérateur flèche
    • Calcule un bonus basé sur les années de service : si years >= 5, le bonus est de 10% du salaire, sinon il est de 5% du salaire
    • Ajoute le bonus au salaire : empPtr->salary += bonus;
  3. Écrire une fonction nommée displayEmployee qui :
    • Prend un pointeur vers une structure Employee en paramètre
    • Affiche les informations de l'employé exactement dans ce format :
      • Employee Details:
      • ID: [id]
      • Name: [name]
      • Department: [department]
      • Salary: [salary]
      • Years of Service: [yearsOfService]
  4. Écrire une fonction nommée promoteEmployee qui :
    • Prend un pointeur vers une structure Employee en paramètre
    • Augmente le salaire de 15% en utilisant 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
      • Si elle réussit, afficher Memory allocated successfully
    • Appeler fillEmployeeData pour remplir 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 displayEmployee à nouveau pour afficher les informations mises à jour
    • Libérer la mémoire allouée dynamiquement en utilisant free(empPtr)
    • Afficher Memory freed successfully

Ce défi combine tous les concepts clés du chapitre : la définition de structures, l'allocation dynamique de mémoire avec malloc(), la vérification des échecs d'allocation, le passage de pointeurs de structure aux fonctions, l'utilisation de l'opérateur flèche pour accéder et modifier les membres d'une structure, et le nettoyage approprié de la mémoire avec free(). Les fonctions démontrent comment les pointeurs permettent la modification directe des données de la structure originale.

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 Logic & Flow