一个奇怪的问题,sum自动变成了0
  • 板块学术版
  • 楼主Stevehim
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/4/9 21:58
  • 上次更新2023/10/23 18:50:57
查看原帖
一个奇怪的问题,sum自动变成了0
759274
Stevehim楼主2023/4/9 21:58

rt,我没对sum有任何清零的操作,怎么加着加着就成0了..???

#include <bits/stdc++.h>
using namespace std;
double a,b,c,d;
double ans[3];
int sum = 0;
double dis(double x){
    return a *x *x * x + b * x * x + c * x + d;
}


void solve(double l,double r){ //可以认为其递增
    while(r - l > 0.0000001){
        double mid = (r + l) / 2;
        if(dis(mid) == 0){
            ans[++sum] = mid;
            return;
        }else if(dis(mid) > 0){
            r = mid - 0.000001;
        }else{
            l = mid;
        }
    }
}

int main(){
    cin >>a >> b >> c >>d;
    for(int l = -100,r = -99; r <= 100;r++){
        // cout << dis(r) <<endl;
        if(dis(l) > 0 && dis(r) < 0){
            // cout << 1 << endl;
            solve(r,l);
            l = r + 1,r = l;
        }
        if(dis(r) > 0 && dis(l) < 0){
            // cout <<2 << endl;
            solve(l,r);
            l = r + 1;
            r = l;
        }
        if(dis(l) == 0){
            // cout << 3 << endl;
            ans[++sum] = l;
            l = r;
            r = l;
        }
        if(dis(r) == 0){
            // cout << 4 << endl;
            ans[++sum] = r;
            cout << sum << endl;
            l = r + 1;
            r = l;
        }
    }
    cout << sum << endl;
    sort(ans+1,ans+1+sum);
    for(int i = 1; i <= sum; i++){
        printf("%.2lf ",ans[i]);
    }
    return 0;
}
2023/4/9 21:58
加载中...