一道C++的编程题,关于一元二次方程的,有题目有代码,求解我的代码哪里错了!求高手看看哪里做错了!!

题目链接:http://noi.openjudge.cn/ch0104/20/
题目内容(建议点开链接):
20:求一元二次方程的根

查看
提交
统计
提问

总时间限制:
1000ms
内存限制:
65536kB

描述
利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。

输入
输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程ax2 + bx + c =0的系数。
输出
输出一行,表示方程的解。
若两个实根相等,则输出形式为:x1=x2=...。
若两个实根不等,则输出形式为:x1=...;x2 = ...,其中x1若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,其中x1,x2满足以下两个条件中的一个:
1. x1的实部大于x2的实部
2. x1的实部等于x2的实部且x1的虚部大于等于x2的虚部

所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
样例输入
1.0 2.0 8.0

样例输出
x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

我的代码:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main() {
double a,b,c;
cin>>a>>b>>c;

double delta=b*b-4*a*c;

if(delta>=0) {
double x1=(-1*b+sqrt(delta))/(2*a);
double x2=(-1*b-sqrt(delta))/(2*a);
if(x1==x2) printf("x1=x2=%.5lf\n",x1);
else {
printf("x1=%.5lf;x2=%.5lf\n",x1,x2);
}
} else {
double shibu=-1*b/(2*a);
double xubu=sqrt(-1*delta)/(2*a);
printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi\n",shibu,xubu,shibu,xubu);
}
return 0;
}

求高手看看哪里做错了!悬赏的!

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main() {
    double a,b,c;
    while(cin>>a>>b>>c) {
    
      double delta=b*b-4*a*c;
    
      if(delta>=0) {
        double x1=(-1*b+sqrt(delta))/(2*a);
        double x2=(-1*b-sqrt(delta))/(2*a);
        if(x1==x2) printf("x1=x2=%.5lf\n",x1);
        else {
            printf("x1=%.5lf;x2=%.5lf\n",x1,x2);
        }
      } else {
        double shibu=-1*b/(2*a);
        double xubu=sqrt(-1*delta)/(2*a);
        printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi\n",shibu,xubu,shibu,xubu);
      }
    }
    return 0;
}

你有什么问题?

追问

就总是显示答案错误。我也找不出来

追答

若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i,其中x1,x2满足以下两个条件中的一个:
1. x1的实部大于x2的实部
2. x1的实部等于x2的实部且x1的虚部大于等于x2的虚部
这个你没比较吧

追问

我是没比较,谢谢你帮助我找出问题

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-10
其实这种问题,你用单步执行,看看各个变量里面的值就知道结果了。

直接告诉你没什么意思的。

其实这就是单步执行,DEBUG一下就出来的问题。。。

这个编程题其实更多的是在最短时间之内解决才是关键。。计算机中你用乘法还不如用加法代替,这样计算机就不会用浮点乘法去计算,用浮点加减法补码计算,自己掂量一下吧。。。追问

那我现在告诉你,我的Windows10不支持debug了

追答

你不会用虚拟机?

还有你用什么编程工具?没有DEBUG?还是说你没有仔细查找如何DEBUG?

就算没有,退一万步说,你可以利用打印函数,将每一步的结果打印出来,其实也相当于debug。。。

追问

已经找到了问题。虚拟机可以用,也会用。令外最近打算换软件,应该可以。

相似回答