无法在 C++ 中找到三次方程的实根
Unable find real root for Cubic Equation in C++
我正在写一个C++程序求三次方程的实根x 〖ax〗^3+〖bx〗^2+ cx+d=0 where a≠0 and b=0.
不幸的是,我无法输出“测试用例 1 和 4”(ps。下面提供了示例输出 link)。 Perhaps 我的编码中有任何逻辑语法吗?如果有人能告诉我正确的方法,我将不胜感激。
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main (){
int a , b, c , d;
double x , y;
double interval1, interval2;
bool stop;
b = 0;
x = 0;
stop = true;
cin >> a;
cin >> c;
cin >> d;
interval1 = a * pow(x , 3) + b * pow(x , 2) + c * x + d;
if (interval1 < 0){
interval2 = interval1 *-1;
}else{
interval2 = interval1;
interval1 = interval2 * -1;
}
while (stop=true){
x = interval1;
y = a * pow(x , 3) + b * pow(x , 2) + c * x + d;
if(y>0 && y<0.001){
break;
}else{
if (x<interval2) {
interval1 = x + 0.000001;
}else{
stop = false;
}
}
}
if (x==-0){
x = 0;
}
if(a==0){
cout << "NOT VALID" << endl;
}else{
std::cout << std::fixed << std::setprecision(3) << x;
}
return 0;
}
The sample output
Pseudocode for the program
您的代码即将完成。你需要改进一些点。
将int a , b, c , d;
改为double a , b, c , d;
将条件 while (stop=true)
更改为 while (stop==true)
我测试过,它可以作为你的例子。
我正在写一个C++程序求三次方程的实根x 〖ax〗^3+〖bx〗^2+ cx+d=0 where a≠0 and b=0.
不幸的是,我无法输出“测试用例 1 和 4”(ps。下面提供了示例输出 link)。 Perhaps 我的编码中有任何逻辑语法吗?如果有人能告诉我正确的方法,我将不胜感激。
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main (){
int a , b, c , d;
double x , y;
double interval1, interval2;
bool stop;
b = 0;
x = 0;
stop = true;
cin >> a;
cin >> c;
cin >> d;
interval1 = a * pow(x , 3) + b * pow(x , 2) + c * x + d;
if (interval1 < 0){
interval2 = interval1 *-1;
}else{
interval2 = interval1;
interval1 = interval2 * -1;
}
while (stop=true){
x = interval1;
y = a * pow(x , 3) + b * pow(x , 2) + c * x + d;
if(y>0 && y<0.001){
break;
}else{
if (x<interval2) {
interval1 = x + 0.000001;
}else{
stop = false;
}
}
}
if (x==-0){
x = 0;
}
if(a==0){
cout << "NOT VALID" << endl;
}else{
std::cout << std::fixed << std::setprecision(3) << x;
}
return 0;
}
The sample output Pseudocode for the program
您的代码即将完成。你需要改进一些点。
将
int a , b, c , d;
改为double a , b, c , d;
将条件
while (stop=true)
更改为while (stop==true)
我测试过,它可以作为你的例子。