0

我正在编写一个 C++ 程序来找到真正的根,x 用于三次方程 〖ax〗^3+〖bx〗^2+ cx+d=0 其中 a≠0 和 b=0。

不幸的是,我无法输出“测试用例 1 和 4”(ps. 链接下方提供的示例输出)。也许我的编码中有任何逻辑语法?如果有人能告诉我正确的方法,将不胜感激。

#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;
}

程序的示例输出 伪代码

4

1 回答 1

0

你的代码几乎完成了。你需要改进一些点。

  1. 更改int a , b, c , d;double a , b, c , d;

  2. 将条件更改while (stop=true)while (stop==true)

我进行了测试,它可以作为您的示例。

于 2022-02-16T03:23:06.960 回答