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

题目链接:http://noi.openjudge.cn/ch0104/20/题目内容(建议点开链接):20:求一元二次方程的根查看提交统计提问总时间限制:1000ms内... 题目链接: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;
}

求高手看看哪里做错了!悬赏的!
展开
 我来答
百度网友fc027fc
2015-08-10 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3160
采纳率:83%
帮助的人:750万
展开全部
#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的虚部
这个你没比较吧
匿名用户
2015-08-10
展开全部
其实这种问题,你用单步执行,看看各个变量里面的值就知道结果了。

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

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

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

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

就算没有,退一万步说,你可以利用打印函数,将每一步的结果打印出来,其实也相当于debug。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式