Ecrire une fonction saisie qui permet de saisir A, B et C.
Ecrire une fonction résoudre qui permet de résoudre l'équation AX2+ BX + C = 0 ET retourne
0 si l'équation n'a pas de solution
1 si l'équation n'a qu'une solution
2 si l'équation possède deux solutions
3 si R est l'ensemble de solutions
Ecrire une fonction affiche qui permet d'afficher pas de solution réelle si la valeur retournée par la fonction resoudre est 0 la valeur X1 si la valeur retournée par la fonction resoudre est 1 les valeurs X1 et X2 si la valeur retournée par la fonction resoudre est 2 l'ensemble de solution est R si la valeur retournée par la fonction resoudre est 3
Ecrire le programme principal qui fait appel à ces fonctions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
/* Resolution d'une equation du second degre dans R */ #include #include /* Saisie des coefficients de l'equation */ void saisie (double *a, double *b, double *c); /* resolution de l'equation: la valeur retournee donne le nombre de solutions, * qui se trouvent dans *x1 et *x2, la valeur 3 indique que tout R * est solution */ int resoudre (double a, double b, double c, double *x1, double *x2); /* Affichage de la resolution avec la convention de la fonction resoudre */ void affiche (int v, double x1, double x2); int main() { int val; double a, b, c, x1,x2; saisie(&a, &b, &c); val = resoudre(a, b, c, &x1, &x2); affiche(val, x1, x2); return 0; } void saisie(double *a, double *b, double *c) { printf("a = "); scanf("%lf",a); printf("b = "); scanf("%lf",b); printf("c = "); scanf("%lf",c); } int resoudre(double a, double b, double c, double *x1, double *x2) { double delta; if (a == 0.0) { if (b == 0.0) { if (c == 0.0) { return 3; } else { return 0; } } else { *x1 = -c/b; return 1; } } else { delta = b*b - 4*a*c; if (delta < 0) { return 0; } else if (delta == 0) { *x1 = -b / 2*a; return 1; } else { *x1 = (-b + sqrt(delta)) / 2*a; *x2 = (-b - sqrt(delta)) / 2*a; return 2; } } } void affiche(int v, double x1, double x2) { switch(v) { case 0: printf("pas de solution reelle\n"); break; case 1: printf("une seule solution: x1 = %f\n", x1); break; case 2: printf("deux solutions: x1 = %f et x2 = %f\n", x1, x2); break; case 3: printf("l\'ensemble de solutions est R\n"); break; } } |