From 1e3bded528598bf02e4f6a0fb16110e88d20594c Mon Sep 17 00:00:00 2001 From: bastien Date: Sun, 11 May 2025 19:25:46 +0000 Subject: [PATCH] Ajouter exo1/main.c --- exo1/main.c | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 exo1/main.c diff --git a/exo1/main.c b/exo1/main.c new file mode 100644 index 0000000..4925751 --- /dev/null +++ b/exo1/main.c @@ -0,0 +1,218 @@ +#include +#include +#include + +#define PI 3.14159265358979323846 + +// Prototypes des fonctions de calcul +float surfaceCarré(float côté); +float surfaceRectangle(float longueur, float largeur); +float surfaceCercle(float rayon); +float surfaceTriangle(float base, float hauteur) +float surfaceParallélogramme(float base, float hauteur); +float surfaceLosange(float diagonale1, float diagonale2); +float surfaceTrapèze(float base1, float base2, float hauteur); +float surfaceEllipse(float demiAxeA, float demiAxeB); +float surfacePentagoneRégulier(float côté); +float surfaceHexagoneRégulier(float côté); + +// 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. Carré\n"); + printf("2. Rectangle\n"); + printf("3. Cercle\n"); + printf("4. Triangle\n"); + printf("5. Parallélogramme\n"); + printf("6. Losange\n"); + printf("7. Trapèze\n"); + printf("8. Ellipse\n"); + printf("9. Pentagone régulier\n"); + printf("10. Hexagone régulier\n") + printf("0. Quitter\n"); + printf("Votre choix : "); +} + +int obtenirChoix() { + int choix; + scanf("%d", &choix); + return choix; +} + +void traiterChoix(int choix) { + float surface = 0.0; + + switch (choix) { + case 1: { + float côté; + printf("\nCalcul de la surface d'un carré\n"); + printf("Entrez la longueur du côté : "); + scanf("%f", &côté); + surface = surfaceCarré(côté); + printf("La surface du carré 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 parallélogramme\n"); + printf("Entrez la base : "); + scanf("%f", &base); + printf("Entrez la hauteur : "); + scanf("%f", &hauteur); + surface = surfaceParallélogramme(base, hauteur); + printf("La surface du parallélogramme 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 trapèze\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 = surfaceTrapèze(base1, base2, hauteur); + printf("La surface du trapèze 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 côté; + printf("\nCalcul de la surface d'un pentagone régulier\n"); + printf("Entrez la longueur du côté : "); + scanf("%f", &côté); + surface = surfacePentagoneRégulier(côté); + printf("La surface du pentagone régulier est : %.2f\n", surface); + break; + } + case 10: { + float côté; + printf("\nCalcul de la surface d'un hexagone régulier\n"); + printf("Entrez la longueur du côté : "); + scanf("%f", &côté); + surface = surfaceHexagoneRégulier(côté); + printf("La surface de l'hexagone régulier est : %.2f\n", surface) + break; + } + } +} + +// Implémentations des fonctions de calcul +float surfaceCarré(float côté) { + return côté * côté; +} + +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 surfaceParallélogramme(float base, float hauteur) { + return base * hauteur; +} + +float surfaceLosange(float diagonale1, float diagonale2) { + return 0.5 * diagonale1 * diagonale2; +} + +float surfaceTrapèze(float base1, float base2, hauteur) { + return 0.5 * (base1 + base2) * hauteur; +} + +float surfaceEllipse(float demiAxeA, float demiAxeB) { + return PI * demiAxeA * demiAxeB; +} + +float surfacePentagoneRégulier(float côté) { + // Formule: (5/4) * côté² * 1/tan(π/5) + return (5.0 / 4.0) * côté * côté * (1.0 / tan(PI / 5.0)); +} + +float surfaceHexagoneRégulier(float côté) { + // Formule: (3√3/2) * côté² + return (3.0 * sqrt(3.0) / 2.0) * côté * côté; +} \ No newline at end of file