会C++的大侠来帮忙看看~小弟新学C++两天,今天试着编个小程序~出现了错误,希望大侠帮忙看看~~

我前两天看那个《易学C++》,今天没事试着做,然后想做个关于二次函数,就是Y=AX^2+BX+C的。我的意思是,创建一个字符变量M,然后让别人输入“Y,X,A,B,C”其... 我前两天看那个《易学C++》,今天没事试着做,
然后想做个关于二次函数,就是Y=AX^2+BX+C的。

我的意思是,创建一个字符变量M,然后让别人输入“Y,X,A,B,C”其中一个字母的,
然后就判断去求哪个,再通过表达式求出来,比如说别人输入字符Y,就是求Y,然后让别人再输入A,B,C,X,就能求出来Y的值。

我试着执行了一下,求A,B,C,Y的值都行,而求X的值时候求出来的就不对,希望哪位大侠可以帮忙纠正一下错误,然后告诉我这样做的原因,小弟谢谢了!!!!

以下是小弟写的:

#include"iostream.h"
#include"math.h"
int main()
{
char m;
cin>>m;
double a,b,c,x,y;
if(m=='y')
{
cin>>a>>b>>c>>x;
y=a*x*x+b*x+c;
cout<<y<<endl;
}
if(m=='a')
{
cin>>b>>c>>x>>y;
a=(y-b*x-c)/(x*x);
cout<<a<<endl;
}
if(m=='b')
{
cin>>a>>c>>x>>y;
b=(y-a*x*x-c)/x;
cout<<b<<endl;
}
if(m=='c')
{
cin>>a>>b>>x>>y;
c=y-a*x*x-b*x;
cout<<c<<endl;
}
if(m=='x')
{
int x2,temp;
cin>>a>>b>>c>>y;
temp=b*b-4*a*c;
if(temp>=0)
{
sqrt(temp);
x=(0-b-temp)/2*a;
x2=(temp-b);
cout<<x<<x2;
}
else
{
cout<<"Error!";
}
}
else
{
cout<<"Error!";
}
return 0;
}
展开
 我来答
断的刃
2010-07-26 · TA获得超过287个赞
知道小有建树答主
回答量:493
采纳率:71%
帮助的人:130万
展开全部
1、求X那里Y没有参与计算:temp=b*b-4*a*c;改为temp=b*b-4*a*(c-y);
2、还有每次运行到最后(除了求X时temp大于等于零的情况)不论对不对都会出现“Error!”;这是因为每个else都会与与它最近的if语句配对,因此最后一个else与倒数第二个if配对;因而在求Y,A,B,时最后那条else语句都会执行。
3、(1)建议可以用else if语句,如:if(xxx){xxxxx}
else if(xxx) {xxxxx}
else if(xxx) {xxxxx}
else {xxx}
这样就避免了上述情况。
(2)建议为了使程序更具可读性可以加些帮助理解的输出语句,如:
你的程序中 char m; char m;
cin>>m; =》 cout<<"请输入所要求的字母";
double a,b,c,x,y; cin>>m;
double a,b,c,x,y;

4、当然这只是两个建议,方法还有很多种自己可以慢慢研究。
失落的声音
2010-07-26
知道答主
回答量:19
采纳率:0%
帮助的人:12.7万
展开全部
if(m=='x')
{
int x2,temp;
cin>>a>>b>>c>>y;
temp=b*b-4*a*c;
if(temp>=0)
{
sqrt(temp);
x=(0-b-temp)/2*a;
x2=(temp-b);
cout<<x<<x2;
}
else
{
cout<<"Error!";
}
}
这里输入的y没有参与计算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sky_baofish
2010-07-26 · TA获得超过468个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:153万
展开全部
if(m=='x')
{
int x2,temp;
cin>>a>>b>>c>>y;
temp=b*b-4*a*c;
if(temp>=0)
{
其中temp应该等于b*b-4*a*(c-y),y要移到方程同侧,不要漏了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nieben5210
2010-07-26 · TA获得超过481个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:141万
展开全部
程序没有错误,计算X的时候你赋值给y,y并没有参与计算,可能是你把y写错成某一字母导致运算结果和你自己运算的有差别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式