0

In this code if I dont define "f" in the if else stat then the output comes out wrong. Why is it imp to define it in the stats??

cout<<"Coeff for x^2 = "; float a,b,c; cin>>a; cout<<"Coeff for x = "; cin>>b; cout<<"Constant = "; cin>>c; float d; float e=pow(b,2); float f=sqrt(d); if((e-4*a*c)>=0) { d=(e-(4*a*c)); f=sqrt(d); cout<<"Roots are = \n"; cout<<"\t\t"<<(-b+f)/(2*a)<<endl; cout<<"\t\t"<<(-b-f)/(2*a)<<endl; } else if(e-(4*a*c)<0) { d=((4*a*c)-e); f=sqrt(d); cout<<"Roots are = \n"; cout<<"\t\t"<<(-b/(2*a))<<"+"<<f/(2*a)<<"i"<<endl; cout<<"\t\t"<<(-b/(2*a))<<"-"<<f/(2*a)<<"i"<<endl;

13th Sep 2016, 11:01 PM
Sarvagya
2 Answers
+ 2
Because you need to calculate d first, and because the value of f depends on whether you are in the if case or the else one. #include <iostream> #include <cmath> using namespace std; int main() { float a, b, c, d, f; cout << "Solving ax^2 + bx + c = 0" << endl; cout << "Enter a: "; cin>>a; cout << a << endl; cout << "Enter b: "; cin >> b; cout << b << endl; cout << "Enter c: "; cin >> c; cout << c << endl; d = b*b - 4*a*c; cout << "Roots are: " << endl; if(d >= 0) { f=sqrt(d); cout << "\t\t" << (-b+f)/(2*a) << endl; cout << "\t\t" << (-b-f)/(2*a) << endl; } else { f=sqrt(-d); cout << "\t\t" << (-b/(2*a)) << " + " << f/(2*a) << "i" << endl; cout << "\t\t" << (-b/(2*a)) << " - " << f/(2*a) << "i" << endl; } return 0; }
14th Sep 2016, 8:46 AM
Zen
Zen - avatar
0
Thank you for the answer. I knew it could be made simpler. sqrt(-d), that's what I was missing. Thanks again.
15th Sep 2016, 3:16 PM
Sarvagya