C++求一元二次方程的根利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a) 40

下面是我的代码,提交后总是Wronganswer,VS上样例输出没问题,求大神找找错,谢谢超出最大字数了,题目要求在图里,程序如果不好看请私信我#include<iost... 下面是我的代码,提交后总是Wrong answer,VS上样例输出没问题,求大神找找错,谢谢
超出最大字数了,题目要求在图里,程序如果不好看请私信我

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

class complex
{
private:
float a[1000],b[1000],c[1000];
double p,q,x1,x2,delta; //p为实部,q为虚部
int m,n,i; //m为设定值,分别对应不同根的个数,n为输入样例组数
int o[1000]; //o[]数组的作用和m类似
public:
void input();
void root();
};

void complex::input()
{
cin>>n;
for (i=0;i<=n-1;i++)
{
cin>>a[i]>>b[i]>>c[i];
}
}

void complex::root()
{
for (i=0;i<=n-1;i++)
{
delta=b[i]*b[i]-4*a[i]*c[i];
if (delta<0)
{
m=0;
o[i]=0;
p=-b[i]/(2*a[i]);
q=sqrt(-delta)/(2*a[i]); //存在虚部的时候的根
}
else if (delta==0)
{
x1=-b[i]/(2*a[i]);
x2=x1; //存在1个根的时候
m=1;
o[i]=1;
}
else if (delta>0)
{
x1=(-b[i] + sqrt(b[i]*b[i]-4*a[i]*c[i]))/(2*a[i]);
x2=(-b[i]-sqrt(delta))/(2*a[i]); //存在两个实根的时候
m=2;
o[i]=2;
}
switch(o[i])
{
case 2:
{
if (x1>x2)
{
cout.setf(ios::fixed);
cout.setf(ios::showpoint); //输出精确到小数点后5位
cout.precision(5);
cout<<"x1="<<x1<<";"<<"x2="<<x2<<endl;
}
else
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(5);
cout<<"x1="<<x2<<";"<<"x2="<<x1<<endl;
break;
}
case 1:
{
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(5);
cout<<"x1=x2="<<x1<<endl;
break;
}
case 0:
{
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(5);
cout<<"x1="<<p<<"+"<<q<<"i"<<";"<<"x2="<<p<<"-"<<q<<"i"<<endl;
break;
}
}
}
}

int main()
{
complex f;
f.input();
f.root();
return 0;
}
展开
 我来答
糖不咸
2020-03-02
知道答主
回答量:3
采纳率:0%
帮助的人:1669
展开全部
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
double a,b,c,d,x1,x2;
cin>>a>>b>>c;
d=b*b-4*a*c;
if(d==0)
{
x1=-b/(2*a);
printf("x1=x2=%0.5f",x1);
}
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%0.5f;x2=%0.5f",x1,x2);
}
if(d<0)
{
x1=-b/(2*a);
if (x1==0) x1=0;
x2=sqrt(-d)/(2*a);
printf("x1=%0.5f+%0.5fi;x2=%0.5f-%0.5fi",x1,x2,x1,x2);
}
}

#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,s,x;
scanf("%f %f %f",&a,&b,&c);
s=(-b/(2*a));
x=sqrt(4*a*c-b*b)/(2*a);
if((b*b)==(4.0*a*c)){

printf("x1=x2=%0.5f",s);
}
else if((b*b)>(4*a*c)){
s=(-b+sqrt(b*b-4*a*c))/(2*a);
x= (-b - sqrt(b*b-4*a*c))/(2*a);
printf("x1=%0.5f;x2=%0.5f",s,x);
}
else if((b*b)<(4*a*c)){
if(s==0) s=0;
printf("x1=%.5f+%.5fi,x2=%.5f-%.5fi",s,x,s,x);
}
return 0;
}

两个答案一样,下面那个我打的,搞不懂为什么通过不了
半刀永生
2014-02-23 · 超过26用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:49.2万
展开全部
输出部分,else下面的得用括号括起来,望采纳
更多追问追答
追问
不对啊,还是wrong answer
追答
你能发个测试结果的截图吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vi百里笙歌
2019-03-04 · 超过12用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:4.1万
展开全部
你的代码怎么这么长?我只写了三十来行啊……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式