Récapitulatif : Pratique de typedef et enum
Fait partie de la section Logic & Flow du Journey C de Coddy. Leçon 60 sur 63.
Défi
FacileCréez un programme en C qui combine enum et typedef pour construire un calculateur de formes géométriques simple. Votre programme doit :
- Définir une
enumnomméeShapeTypeavec les constantes suivantes dans cet ordre exact :CIRCLERECTANGLETRIANGLE
- Utiliser
typedefpour créer un alias de type nomméShapepour l'enum ShapeType - Écrire une fonction nommée
calculateAreaqui :- Prend un paramètre
Shapenomméshape - Prend deux paramètres
floatnommésdimension1etdimension2 - Retourne un
floatreprésentant l'aire calculée - Utilise une instruction
switchpour 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)
- Pour
- Prend un paramètre
- Écrire une fonction nommée
printShapeInfoqui :- Prend un paramètre
Shapenomméshape - Ne retourne rien (void)
- Utilise une instruction
switchpour afficher les informations de la forme :- Pour
CIRCLE: afficheShape: Circle - Pour
RECTANGLE: afficheShape: Rectangle - Pour
TRIANGLE: afficheShape: Triangle
- Pour
- Prend un paramètre
- Dans la fonction main :
- Déclarer une variable de type
ShapenomméeselectedShape - Déclarer deux variables
floatnomméesdim1etdim2 - 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 à
selectedShapeen fonction de l'entrée - Assigner les valeurs de dimension à
dim1etdim2 - Appeler la fonction
printShapeInfoavecselectedShape - 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
- Si l'aire est inférieure à 10.0 : affiche
- Déclarer une variable de type
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
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères7Structures (structs)
Qu'est-ce qu'une Struct ?Déclarer une StructCréer des variables de type StructAccéder aux membres d'une StructInitialiser des StructsRécapitulatif : Struct de données étudiant10Énumérations et typedef
enum pour les constantes nomméesDéclarer et utiliser des énumérationsLes énumérations dans les instructions switchUtiliser typedef pour les alias de typestypedef avec les structuresRécapitulatif : Pratique de typedef et enum2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînesEntraînez-vous par vous-même : Compilateur C en ligne