Menu
Coddy logo textTech

Récapitulatif : Pratique de typedef et enum

Fait partie de la section Logic & Flow du Journey C de Coddy. Leçon 60 sur 63.

challenge icon

Défi

Facile

Créez un programme en C qui combine enum et typedef pour construire un calculateur de formes géométriques simple. Votre programme doit :

  1. Définir une enum nommée ShapeType avec les constantes suivantes dans cet ordre exact :
    • CIRCLE
    • RECTANGLE
    • TRIANGLE
  2. Utiliser typedef pour créer un alias de type nommé Shape pour l'enum ShapeType
  3. Écrire une fonction nommée calculateArea qui :
    • Prend un paramètre Shape nommé shape
    • Prend deux paramètres float nommés dimension1 et dimension2
    • Retourne un float représentant l'aire calculée
    • Utilise une instruction switch pour calculer l'aire en fonction du type de forme :
      • Pour CIRCLE : aire = 3.14159 * dimension1 * dimension1 (dimension1 est le rayon)
      • Pour RECTANGLE : aire = dimension1 * dimension2 (longueur × largeur)
      • Pour TRIANGLE : aire = 0.5 * dimension1 * dimension2 (0.5 × base × hauteur)
  4. Écrire une fonction nommée printShapeInfo qui :
    • Prend un paramètre Shape nommé shape
    • Ne retourne rien (void)
    • Utilise une instruction switch pour afficher les informations de la forme :
      • Pour CIRCLE : affiche Shape: Circle
      • Pour RECTANGLE : affiche Shape: Rectangle
      • Pour TRIANGLE : affiche Shape: Triangle
  5. Dans la fonction main :
    • Déclarer une variable de type Shape nommée selectedShape
    • Déclarer deux variables float nommées dim1 et dim2
    • Lire trois valeurs depuis l'entrée : un entier représentant le choix de la forme (0, 1 ou 2), et deux valeurs flottantes pour les dimensions
    • Assigner la valeur enum correspondante à selectedShape en fonction de l'entrée
    • Assigner les valeurs de dimension à dim1 et dim2
    • Appeler la fonction printShapeInfo avec selectedShape
    • Afficher les dimensions dans ce format exact : Dimensions: [dim1] [dim2]
    • Calculer l'aire en appelant la fonction calculateArea
    • Afficher l'aire calculée avec exactement 2 décimales dans ce format exact : Area: [area]
    • Déterminer et afficher la catégorie de la forme en fonction de l'aire calculée :
      • Si l'aire est inférieure à 10.0 : affiche Category: Small
      • Si l'aire est comprise entre 10.0 et 50.0 (inclus) : affiche Category: Medium
      • Si l'aire est supérieure à 50.0 : affiche Category: Large

Ce défi démontre la puissante combinaison de enum et typedef travaillant ensemble. Le typedef crée un nom de type propre et lisible Shape au lieu d'écrire de manière répétée enum ShapeType. Les constantes enum rendent les instructions switch auto-documentées, montrant clairement ce que chaque cas représente. Vous vous entraînerez à définir ces deux concepts, à les utiliser dans les paramètres de fonction et à implémenter une logique qui dépend des valeurs de l'énumération.

Essayez vous-même

#include <stdio.h>

// TODO: Définissez votre enum ShapeType et votre typedef ici

// TODO: Implémentez la fonction calculateArea ici

// TODO: Implémentez la fonction printShapeInfo ici

int main() {
    // Lire l'entrée
    int shapeChoice;
    float dim1, dim2;
    scanf("%d", &shapeChoice);
    scanf("%f", &dim1);
    scanf("%f", &dim2);
    
    // TODO: Écrivez votre code ci-dessous
    // Déclarer la variable selectedShape et l'assigner en fonction de shapeChoice
    // Appeler la fonction printShapeInfo
    // Afficher les dimensions
    // Calculer et afficher l'aire
    // Déterminer et afficher la catégorie
    
    return 0;
}

Toutes les leçons de Logic & Flow

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