2025-05-12 08:17:47 +00:00

218 lines
6.7 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265358979323846
// Prototypes des fonctions de calcul
float surfaceCarre(int cote);
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);
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;
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) {
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) {
return 0.5 * diagonale1 * diagonale2;
}
float surfaceTrapeze(float base1, double base2, float hauteur) {
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) {
// Formule: (3√3/2) * cote²
return (3.0 * sqrt(3.0) / 2.0) * cote * cote;
}