/////////////////////////////////////// // Sylvain Marechal // // Resolution d'equation du 2 degre // // // /////////////////////////////////////// #include #include #include void Saisie( double & a, double & b, double & c ) { float saisieScanf; clrscr(); printf( "Resolution de ax2 + bx + c=0 :\n" ); printf( "Rentrer a, b et c\n :\n" ); scanf( "%f", &saisieScanf ); a = saisieScanf; scanf( "%f", &saisieScanf ); b = saisieScanf; scanf( "%f", &saisieScanf ); c = saisieScanf; } void EquationDegeneree(double c) { printf( "a=b=0 - C'est une equation degeneree\n" ); if( c == 0 ) { printf( "Solution indeterminee\n" ); } else { printf( "Pas de solution\n" ); } } void EquationPremierDegre( double b, double c) { printf( "Equation du premier degre\n" ); printf( "La solution est -c/b=%f\n", (float)-c/b); } double Discriminant( double a, double b, double c ) { double delta = b * b - 4 * a * c; return delta; } void EquationDeuxiemeDegre( double a, double b, double c ) { double delta; double x1,x2; // Calcul du discriminant delta = Discriminant( a, b, c ); printf( "Equation du deuxieme degre\n" ); if( delta == 0 ) { x1 = x2 = -b/(2*a); printf( "Racines doubles x1=x2=%f\n", (float)x1 ); } else if( delta > 0 ) { x1 = (-b - sqrt(delta))/(2*a); x2 = (-b + sqrt(delta))/(2*a); printf( "Racines x1=%f, x2=%f\n", (float)x1, (float)x2 ); } else // if( delta < 0) { double reel = (-b )/(2*a); double im = ( sqrt(-delta))/(2*a); printf( "Racine imaginaires x1=%f+%fi, x2=%f-%fi\n", (float)reel, (float)im, (float)reel, (float)im ); } } void main() { do { double a, b, c; // Saisie; Saisie( a, b, c ); if( a == 0 && b == 0 ) { EquationDegeneree( c ); } else if( a == 0 ) { EquationPremierDegre( b, c ); } else { EquationDeuxiemeDegre(a, b, c ); } // Fin ?? printf( "\n\n\nq pour quitter"); } while( getch() != 'q' ); }