所以我试着编写一个计算二次方程根的程序。这就是我提出的。第一种可能性(D> 0)起作用,但其他可能不起作用。我在代码中找不到错误。请你帮助我好吗?谢谢!
#include <iostream>
#include <cmath>
using namespace std;
int main(){
float a;
float b;
float c;
float x1;
float x2;
float D=b*b-4*a*c;
float realPart;
float imaginaryPart;
cout << "Write a: " << endl;
cin >> a;
cout << "Write b: " << endl;
cin >> b;
cout << "Write c: " << endl;
cin >> c;
//first possibility D > 0
if (D > 0){
x1=(-b+sqrt(D))/(2*a);
x2=(-b-sqrt(D))/(2*a);
cout << "Results are: x1: " << x1 << " and x2 " << x2 << endl;
}
//second possibility D < 0
else if (D < 0){
realPart = -b/(2*a);
imaginaryPart = (sqrt(-D))/(2*a);
cout << "First result: " << realPart << " + " << imaginaryPart << "i"
<<endl;
cout << "Second result: " << realPart << " - " << imaginaryPart << "i"
<< endl;
}
else if (D == 0){
x1=(-b)/(2*a);
cout << "Result is: " << x1 << endl;
}
else
cout << "THERE'S A MISTAKE!" << endl;
return 0;
}
答案 0 :(得分:1)
虽然你可以达到预定义结果的意图
D = b * b - 4 * a * c;
在 a
之前 ,b
和c
已知 1 ,这不是您的情况。
这里最简单的方法是在知道D
,a
和b
之后计算判定c
。即在你的程序中进一步发表声明。目前,程序的行为未定义。
1 一种方法是使用演员。