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
|
#include <stdio.h>
#include <math.h>
#include <string.h>
int saisie(double* coeff,char c)
{
int ok;
char buffer[1024];
char other[1024];
char *c;
printf("Entrez le coefficient %c : ",c);
fgets(buffer,1023,stdin);
if (c=strchr(buf, '\n')) *c='\0';
if (sscanf(buffer, "%lf", coeff) == 0 || (sprintf(other, "%lf", *coeff), strcmp(buffer, other) != 0))
{
printf("La saisie n'est pas valide.");
return (-1);
}
return 0;
}
void racines_polynome (double a,double b,double c,int* nbracines,double* x1,double* x2)
{
double delta;
if(a==0)
if (b==0)
if(c!=0)
*nbracines=-2;
else
*nbracines=-1;
else
{
*nbracines=1;
*x1=-c/b;
}
else
{
delta=b*b-4*a*c;
if(delta<0)
*nbracines=0;
else
{
*nbracines=2;
*x1=(-b+sqrt(delta))/(2*a);
*x2=(-b-sqrt(delta))/(2*a);
}
}
}
int main()
{
double a,b,c,x1,x2;
int nbracines,ok;
char rep;
do
{
printf("Entrez les coefficients a,b et c du polynome ax2+bx+c : \n");
if(saisie(&a,'a')==-1 || saisie(&b,'b')==-1 || saisie(&c,'c')==-1)
exit(-1);
racines_polynome(a,b,c,&nbracines,&x1,&x2);
switch (nbracines)
{
case -2 : printf("Le polynome est constant et n'a pas de racines.\n");break;
case -1 : printf("Le polynome est nul et a une infinite de racines.\n");break;
case 0 : printf("Le polynome n'a pas de racines dans R.\n");break;
case 1 : printf("Le polynome est du premier degre; racine=%lf.\n",x1);break;
case 2 : { if ( x1 == x2 )
printf( "Le polynome a une racine double; racine = %lf\n" , x1 );
else
printf( "Le polynome a 2 racines;x1 = %lg; x2 = %lf\n" , x1 , x2 );
}
}
printf("Voulez-vous recommencer ? o/n");
scanf("%c",&rep);
while(getchar()!='\n');
} while (tolower(rep)!='n');
return 0;
} |
Partager