#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main(){
double a, b, c, disc, x1, x2, root1, root2, imrt1, imrt2, disc2;
char i;
cout<<"Enter a, b and c ";
cin >> a >> b >> c ;
if(disc == 0.0 && b == 0.0)
cout<<"The equation is degenerate and has no real roots. \n";
else if(a == 0.0)
cout<<"The equation has one real root x = "<< -c/b <<endl;
else
{
disc = pow(b,2.0)-4*a*c;
if (disc > 0.0)
{
disc = sqrt(disc);
root1 = (-b+disc)/(2*a);
root2 = (-b-disc)/(2*a);
cout<<"The two real roots are "<<root1<<" and "<<root2<<endl;
}
else if(disc < 0.0)
disc2 = pow(b,2.0)-4*a*c;
disc2 = sqrt(disc2);
imrt1 = (-b+disc2)/(2*a);
imrt2 = (-b-disc2)/(2*a);
cout<<"The two imaginary roots are "<<"i"<<imrt1<<" and "<<"i"<<imrt2<<"\n";
else
cout<<"Both roots are equal to "<<-b/(2*a)<<endl;
}//End of compound statement for the outer else
system("PAUSE");
return 0;
}
вот ваш код с отступом (30 секунд под блокнотом ++)
и становится очевидным (опубликовано vinothkr), что вы пропустили скобки
иначе, если (диск <0.0) </p>
Также Диск в первом тесте не инициализируется ...
И я бы также рекомендовал всегда использовать {} с if else. Даже если это сэкономит 5 секунд, чтобы не записать его, вы потеряете 1 / 2h отладки любых изменений.
для сравнения
int main(){
double a, b, c, disc, x1, x2, root1, root2, imrt1, imrt2, disc2;
char i;
cout<<"Enter a, b and c ";
cin >> a >> b >> c ;
//Disc never init...
if(disc == 0.0 && b == 0.0){
cout<<"The equation is degenerate and has no real roots. \n";
}else if(a == 0.0){
cout<<"The equation has one real root x = "<< -c/b <<endl;
}else{
disc = pow(b,2.0)-4*a*c;
if (disc > 0.0){
disc = sqrt(disc);
root1 = (-b+disc)/(2*a);
root2 = (-b-disc)/(2*a);
cout<<"The two real roots are "<<root1<<" and "<<root2<<endl;
}else if(disc < 0.0){
disc2 = pow(b,2.0)-4*a*c;
disc2 = sqrt(disc2);
imrt1 = (-b+disc2)/(2*a);
imrt2 = (-b-disc2)/(2*a);
cout<<"The two imaginary roots are "<<"i"<<imrt1<<" and "<<"i"<<imrt2<<"\n";
}else{
cout<<"Both roots are equal to "<<-b/(2*a)<<endl;
}
}//End of compound statement for the outer else
system("PAUSE");
return 0;
}