下面是我的代码,提交后总是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;
}
不对啊,还是wrong answer
追答你能发个测试结果的截图吗?
追问。。。。是编译出错,还是计算结果错误?你这截图不完备啊
追问应该是不符合输出,计算结果出错;
是不是因为当一个数如果在(-0.000005,0)之间,输出精确到小数点后5位,就是0而不是期望的0.000.。,所以需要判断处理一下输出数据?
我还是不明白你的计算结果出错,错的是个什么情况,你应该把输出的命令窗口截个图;应该不是精度问题,5位精度一下的可以认为是0.编译通过了应该就没错了。
追问我输入样例是没有问题的,但在online judge提交后就显示wrong answer
追答。。。。
这个我就不太明白,如果计算没错的话,那么就得看你的输出格式是否满足题目要求。