一道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;
}
求高手看看哪里做错了!悬赏的! 展开
题目内容(建议点开链接):
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的虚部
这个你没比较吧
2015-08-10
展开全部
其实这种问题,你用单步执行,看看各个变量里面的值就知道结果了。
直接告诉你没什么意思的。
其实这就是单步执行,DEBUG一下就出来的问题。。。
这个编程题其实更多的是在最短时间之内解决才是关键。。计算机中你用乘法还不如用加法代替,这样计算机就不会用浮点乘法去计算,用浮点加减法补码计算,自己掂量一下吧。。。
直接告诉你没什么意思的。
其实这就是单步执行,DEBUG一下就出来的问题。。。
这个编程题其实更多的是在最短时间之内解决才是关键。。计算机中你用乘法还不如用加法代替,这样计算机就不会用浮点乘法去计算,用浮点加减法补码计算,自己掂量一下吧。。。
更多追问追答
追问
那我现在告诉你,我的Windows10不支持debug了
追答
你不会用虚拟机?
还有你用什么编程工具?没有DEBUG?还是说你没有仔细查找如何DEBUG?
就算没有,退一万步说,你可以利用打印函数,将每一步的结果打印出来,其实也相当于debug。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询