| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 827 人关注过本帖
标题:急~~~会C++的大侠来帮忙看看~小弟新学C++两天..
只看楼主 加入收藏
lerncav
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-7-26
结帖率:0
收藏
已结贴  问题点数:5 回复次数:8 
急~~~会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;
}






搜索更多相关主题的帖子: include 表达式 二次函数 字母 
2010-07-26 17:42
leftwing
Rank: 1
等 级:新手上路
帖 子:16
专家分:8
注 册:2009-6-10
收藏
得分:0 
楼主的sqrt(temp);这句有问题,他是需要用一个变量来接收返回值的,光是调用这句sqrt()是不能改变temp的值的。所以这里导致后面都错了吧应该
2010-07-26 18:27
slamjam
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2009-3-6
收藏
得分:0 
  楼上说的也对 ,补充一点,我记得 sqrt 好像只能接受 浮点数作参数, 你试一下 吧 temp 定义成double的,
2010-07-27 14:23
gq198718
Rank: 4
等 级:业余侠客
威 望:1
帖 子:86
专家分:200
注 册:2010-6-6
收藏
得分:0 
程序代码:
#include"iostream"
#include"cmath"
using namespace std;
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;
  double temp;
  cin>>a>>b>>c>>y;
  temp=b*b-4*a*c;
  if(temp>=0)
  {
   sqrt(temp);//sqrt参数的类型要注意
   x=(0-b-temp)/2*a;
   x2=(temp-b);
   cout<<x<<x2;
  }
  else
  {
   cout<<"Error!";
  }
}
else
{
  cout<<"Error!";
}
return 0;
}
sqrt参数的类型:
double sqrt(double x);
float sqrtf(float x);
long double sqrtl(long double x);
2010-07-27 14:43
dream_one
Rank: 2
等 级:论坛游民
帖 子:6
专家分:21
注 册:2008-6-22
收藏
得分:0 
   sqrt(temp);
   x=(0-b-temp)/2*a;
   x2=(temp-b);
可以改为:
temp=sqrt(temp);
   x=(-b-temp)/(2*a);
   x2=(temp-b)/(2*a);
2010-08-01 08:00
xxlovemf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:49
专家分:88
注 册:2009-8-6
收藏
得分:0 
学c++两天就能写出这样
怀疑?
2010-08-01 18:41
xxlovemf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:49
专家分:88
注 册:2009-8-6
收藏
得分:0 
不过 说实话 你这写的也够基础的了了
2010-08-01 18:42
ragnaros
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:15
专家分:105
注 册:2010-7-26
收藏
得分:0 
程序代码:
#include"iostream"
#include"cmath"
using namespace std;
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;
  double temp;           //temp定义为double类型
  cin>>a>>b>>c>>y;
  temp=b*b-4*a*c;
  if(temp>=0)
  {
   temp=sqrt(temp);      //sqrt参数的类型要注意
   x=(0-b-temp)/(2*a);   //这里2*a要加括号,x=(-b-sqrt(temp))/(2*a)
   x2=(temp-b)/(2*a);   //这里要除以2*a,并且要加括号,x=(-b+sqrt(temp))/(2*a)
   cout<<x<<x2;
  }
  else
  {
   cout<<"Error!";
  }
}
else
{
  cout<<"Error!";
}
return 0;
}
2010-08-02 16:47
lerncav
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-7-26
收藏
得分:0 
谢谢指导..
2010-08-03 15:05
快速回复:急~~~会C++的大侠来帮忙看看~小弟新学C++两天..
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019745 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved