回 帖 发 新 帖 刷新版面

主题:会C++的大侠来帮忙看看~小弟新学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;
}

回复列表 (共2个回复)

沙发

你公式用的都不对吧。a*x^2+b*x+c=y;
所以x=(-b+sqrt(b^2-4*a*(c-y)))/(2*a)或x=(-b+sqrt(b^2-4*a*(c-y)))/(2*a);  而且sqrt(temp);并不会改变temp的值。除非你用temp = sqrt(temp);

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.会打字.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册