Exercice langage C : Résolution d'équation de deuxième degré

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

/* 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 {
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;
}
}

Article publié le 23 Février 2012 Mise à jour le Lundi, 07 Novembre 2022 15:23 par BENKIRANE Fatima Ezzahra