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
|
#include <stdio.h>
#include <math.h>
int secondDegre (double a, double b, double c, double *x1, double *x2)
{
int nbRacines=0;
double delta;
delta = b * b - 4 * a * c;
if (delta < 0)
{
nbRacines = -2;
*x1 = (((-1) * b) / (2 * a));
*x2 = ((pow ((4 * a * c - b * b), 0.5)) / (2 * a));
}
else if (delta == 0)
{
nbRacines = 1;
*x1 = (((-1) * b) / (2 * a));
*x2 = *x1;
}
else if (delta > 0)
{
nbRacines = 2;
*x1 = (((-1) * b - pow (delta, 0.5)) / (2 * a));
*x2 = (((-1) * b + pow (delta, 0.5)) / (2 * a));
}
return nbRacines;
}
/*
je ne comprend pas pourquoi je n'obtien pasles bonne solutions...
par exemple pour x²+x-6 je devrais avoir 2 et 3 et au lieu de cela
j'obtient 0 et -6....[/QUOTE]
*/
int main (void)
{
double x1;
double x2;
int nb = secondDegre (2, 1, -6, &x1, &x2);
switch (nb)
{
case 1:
printf ("x = %f\n", x1);
break;
case -2:
case 2:
printf ("x1 = %f x2 = %f\n", x1, x2);
break;
default:
puts ("pas de racines");
}
return 0;
} |
Partager