Her er et bud på den ønskede, trinvise forfinelse af solveQuadraticEquation:#include <stdio.h>
#include <math.h>
void solveQuadraticEquation(double a, double b, double c);
double discriminant(double a, double b, double c);
double root1(double a, double b, double discr);
double root2(double a, double b, double discr);
int main(void) {
double a, b, c;
printf("Enter coeficients a, b, and c: ");
scanf("%lf %lf %lf", &a, &b, &c);
while (!((a == 0) && (b == 0) && (c == 0))){
if (a != 0)
solveQuadraticEquation(a, b, c);
else
printf("Coeficent a is not allowed to be 0\n");
printf("Enter coeficients a, b, and c: ");
scanf("%lf %lf %lf", &a, &b, &c);
}
return 0;
}
void solveQuadraticEquation(double a, double b, double c){
double d;
d = discriminant(a, b, c);
if (d < 0)
printf("No roots\n");
else if (d == 0)
printf("One root: %f\n", root1(a, b, d));
else
printf("Two roots: %f and %f\n",
root1(a, b, d), root2(a, b, d));
}
double discriminant(double a, double b, double c){
return b * b - 4 * a * c;
}
double root1(double a, double b, double discr){
return (-b + sqrt(discr))/(2*a);
}
double root2(double a, double b, double discr){
return (-b - sqrt(discr))/(2*a);
}