Hello all,

I'm trying to write a program that will compute the real roots of the quadratic equation ax^2 + bx + c = 0 given by:

x1 = (- b + sqrt (b^2 - 4ac)) / 2a and x2 = (- b - sqrt (b^2 - 4ac)) / 2a.

Based on the values of "a", "b", and "c" entered by a user, the roots will be calculated based on the following set of rules:

1. if a and b are zero, there are no solutions.
2. if a is zero, then there in one real root (-c / b).
3. if the discriminate (sqrt(b^2 - 4ac)) is negative, then there are no real roots.
4. for all other combinations, there are two real roots.

I figured I could accomplish this with a series of "if" statements....no else statements....

The code I came up with is as follows:

``````int main()
{
float a;
float b;
float c;
float x1;
float x2;
float one_root;

scanf("%f", &a);

scanf("%f", &b);

scanf("%f", &c);

if (a == 0 && b ==0)
{
printf("There are no solutions.");
}
if (a == 0)
{
one root = -c / b;
printf("There is one root of %f.);
}
if (sqrt(pow (b ,2)) - (4 * a * c)) < 0)
{
printf("There are no real roots.");
}
if (a < 0 && a > 0 && b < 0 && b > 0)
{
x1 = (-b + sqrt ((pow (b, 2)) - (4 * a * c))) / (2 * a);
x2 = (-b + sqrt ((pow (b, 2)) - (4 * a * c))) / (2 * a);
printf("The two real roots are %f and %f.", x1, x2);
}

return 0;
}``````

I haven't had a chance to try it to see if it works because I can't get to a computer with software that will let me do it right now. What I really want to know right now is that it's ok to write the code just using "if" statements and leaving out the "else".

Thanks

Use else if statement. According to your code, if a=0 and b=0 then both the first and the second if statements will be executed. And the output will be
"There are no solutions"
"There is one solution x"

use this

``````if (a == 0 && b ==0)
{
printf("There are no solutions.");
}
else if (a == 0)
{
one root = -c / b;
printf("There is one root of %f.);
}
else if (sqrt(pow (b ,2)) - (4 * a * c)) < 0)
{
printf("There are no real roots.");
}
else if (a < 0 && a > 0 && b < 0 && b > 0)
{
x1 = (-b + sqrt ((pow (b, 2)) - (4 * a * c))) / (2 * a);
x2 = (-b + sqrt ((pow (b, 2)) - (4 * a * c))) / (2 * a);
printf("The two real roots are %f and %f.", x1, x2);
}``````

Thanks, hammer! Seems to be working.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.