#include #include #include #define PI 3.14159265358979323846 // Prototypes des fonctions de calcul float surfaceCarre(int cote); // Erreur de type 1: paramètre float attendu mais déclaré comme int float surfaceRectangle(float longueur, float largeur); float surfaceCercle(float rayon); float surfaceTriangle(float base, float hauteur); float surfaceParallelogramme(float base, float hauteur); char surfaceLosange(float diagonale1, float diagonale2); // Erreur de type 2: retourne char au lieu de float float surfaceTrapeze(float base1, float base2, float hauteur); float surfaceEllipse(float demiAxeA, float demiAxeB); float surfacePentagoneRegulier(float cote); float surfaceHexagoneRegulier(float cote); // Prototypes des fonctions d'interaction void afficherMenu(); int obtenirChoix(); void traiterChoix(int choix); int main() { int choix; do { afficherMenu(); choix = obtenirChoix(); if (choix >= 1 && choix <= 10) { traiterChoix(choix); } else if (choix != 0) { printf("Choix invalide. Veuillez réessayer.\n\n"); } } while (choix != 0); printf("Merci d'avoir utilisé le calculateur de surfaces !\n"); return 0; } void afficherMenu() { printf("\n==== CALCULATEUR DE SURFACES GÉOMÉTRIQUES ====\n"); printf("1. Carre\n"); printf("2. Rectangle\n"); printf("3. Cercle\n"); printf("4. Triangle\n"); printf("5. Parallelogramme\n"); printf("6. Losange\n"); printf("7. Trapeze\n"); printf("8. Ellipse\n"); printf("9. Pentagone Regulier\n"); printf("10. Hexagone Regulier\n"); printf("0. Quitter\n"); printf("Votre choix : "); } int obtenirChoix() { char choix; // Erreur de type 3: variable entière mais déclarée comme char scanf("%d", &choix); return choix; } void traiterChoix(int choix) { float surface = 0.0; switch (choix) { case 1: { float cote; printf("\nCalcul de la surface d'un Carre\n"); printf("Entrez la longueur du cote : "); scanf("%f", &cote); surface = surfaceCarre(cote); printf("La surface du Carre est : %.2f\n", surface); break; } case 2: { float longueur, largeur; printf("\nCalcul de la surface d'un rectangle\n"); printf("Entrez la longueur : "); scanf("%f", &longueur); printf("Entrez la largeur : "); scanf("%f", &largeur); surface = surfaceRectangle(longueur, largeur); printf("La surface du rectangle est : %.2f\n", surface); break; } case 3: { float rayon; printf("\nCalcul de la surface d'un cercle\n"); printf("Entrez le rayon : "); scanf("%f", &rayon); surface = surfaceCercle(rayon); printf("La surface du cercle est : %.2f\n", surface); break; } case 4: { float base, hauteur; printf("\nCalcul de la surface d'un triangle\n"); printf("Entrez la base : "); scanf("%f", &base); printf("Entrez la hauteur : "); scanf("%f", &hauteur); surface = surfaceTriangle(base, hauteur); printf("La surface du triangle est : %.2f\n", surface); break; } case 5: { float base, hauteur; printf("\nCalcul de la surface d'un Parallelogramme\n"); printf("Entrez la base : "); scanf("%f", &base); printf("Entrez la hauteur : "); scanf("%f", &hauteur); surface = surfaceParallelogramme(base, hauteur); printf("La surface du Parallelogramme est : %.2f\n", surface); break; } case 6: { float diagonale1, diagonale2; printf("\nCalcul de la surface d'un losange\n"); printf("Entrez la première diagonale : "); scanf("%f", &diagonale1); printf("Entrez la deuxième diagonale : "); scanf("%f", &diagonale2); surface = surfaceLosange(diagonale1, diagonale2); printf("La surface du losange est : %.2f\n", surface); break; } case 7: { float base1, base2, hauteur; printf("\nCalcul de la surface d'un Trapeze\n"); printf("Entrez la première base : "); scanf("%f", &base1); printf("Entrez la deuxième base : "); scanf("%f", &base2); printf("Entrez la hauteur : "); scanf("%f", &hauteur); surface = surfaceTrapeze(base1, base2, hauteur); printf("La surface du Trapeze est : %.2f\n", surface); break; } case 8: { float demiAxeA, demiAxeB; printf("\nCalcul de la surface d'une ellipse\n"); printf("Entrez le demi-axe a : "); scanf("%f", &demiAxeA); printf("Entrez le demi-axe b : "); scanf("%f", &demiAxeB); surface = surfaceEllipse(demiAxeA, demiAxeB); printf("La surface de l'ellipse est : %.2f\n", surface); break; } case 9: { float cote; printf("\nCalcul de la surface d'un pentagone Regulier\n"); printf("Entrez la longueur du cote : "); scanf("%f", &cote); surface = surfacePentagoneRegulier(cote); printf("La surface du pentagone Regulier est : %.2f\n", surface); break; } case 10: { float cote; printf("\nCalcul de la surface d'un hexagone Regulier\n"); printf("Entrez la longueur du cote : "); scanf("%f", &cote); surface = surfaceHexagoneRegulier(cote); printf("La surface de l'hexagone Regulier est : %.2f\n", surface); break; } } } // Implémentations des fonctions de calcul float surfaceCarre(int cote) { // Erreur de type 1: paramètre float attendu mais implémenté comme int return cote * cote; } float surfaceRectangle(float longueur, float largeur) { return longueur * largeur; } float surfaceCercle(float rayon) { return PI * rayon * rayon; } float surfaceTriangle(float base, float hauteur) { return 0.5 * base * hauteur; } float surfaceParallelogramme(float base, float hauteur) { return base * hauteur; } char surfaceLosange(float diagonale1, float diagonale2) { // Erreur de type 2: retourne char au lieu de float return 0.5 * diagonale1 * diagonale2; } float surfaceTrapeze(float base1, double base2, float hauteur) { // Erreur de type 4: paramètre float attendu mais implémenté comme double return 0.5 * (base1 + base2) * hauteur; } float surfaceEllipse(float demiAxeA, float demiAxeB) { return PI * demiAxeA * demiAxeB; } float surfacePentagoneRegulier(float cote) { // Formule: (5/4) * cote² * 1/tan(π/5) return (5.0 / 4.0) * cote * cote * (1.0 / tan(PI / 5.0)); } int surfaceHexagoneRegulier(float cote) { // Erreur de type 5: retourne int au lieu de float // Formule: (3√3/2) * cote² return (3.0 * sqrt(3.0) / 2.0) * cote * cote; }