#include #include typedef struct { double a; double b; double c; } equationSecondDegre; double calculerY(equationSecondDegre e, double x) { return e.a * x * x + e.b * x + e.c; } void afficherEquationSecondDegre(equationSecondDegre e) { printf("f(x) = %lf x2 + %lf x + %lf", e.a, e.b, e.c); } double calculerDelta(equationSecondDegre e) { return e.b * e.b - 4.0 * e.a * e.c; } int calculerRacines(equationSecondDegre e,double *r1,double *r2) { double delta = calculerDelta(e); if (delta < 0.0) { return 0; } if (delta < 0.0) { *r1 = -e.b / (2.0 * e.a); return 1; } double sqrtDelta = sqrt(delta); *r1 = (-e.b - sqrtDelta) / (2.0 * e.a); *r2 = (-e.b + sqrtDelta) / (2.0 * e.a); return 2; } int main(void) { equationSecondDegre eq = { 1.2,-2.3,-6.4 }; afficherEquationSecondDegre(eq); printf("\n"); printf("\n"); printf("Pour x = %lf, f(x) = %lf\n", 2.3, calculerY(eq, 2.3)); printf("\n"); double r1; double r2; int nbRacines = calculerRacines(eq, &r1, &r2); switch (nbRacines) { case 0: { printf("La fonction f n'a pas de racine reelle\n"); } break; case 1: { printf("La fonction f a une racine reelle : %lf\n", r1); printf("Pour x = %lf, f(x) = %lf\n", r1, calculerY(eq, r1)); } break; case 2: { printf("La fonction f a deux racines reelles : %lf et %lf\n", r1, r2); printf("Pour x = %lf, f(x) = %lf\n", r1, calculerY(eq, r1)); printf("Pour x = %lf, f(x) = %lf\n", r2, calculerY(eq, r2)); } break; } return 0; }