会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;
} 展开
然后想做个关于二次函数,就是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;
} 展开
4个回答
展开全部
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、当然这只是两个建议,方法还有很多种自己可以慢慢研究。
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、当然这只是两个建议,方法还有很多种自己可以慢慢研究。
展开全部
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没有参与计算。
{
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没有参与计算。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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要移到方程同侧,不要漏了
{
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要移到方程同侧,不要漏了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序没有错误,计算X的时候你赋值给y,y并没有参与计算,可能是你把y写错成某一字母导致运算结果和你自己运算的有差别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询