
我用C++编了一个求一元二次方程的根的程序.但有错误,不会修改
#include"iostream.h"#include"math.h"classFindRoot{private:floata,b,c,d;doublex1,x2;pu...
#include"iostream.h"
#include"math.h"
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
return;
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
return;
}
else
{
x1=(-b)/(2*a);
x2=sqrt(-d)/(2*a);
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
return;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
return;
}
else
{
cout<<"x1="<<x1<<'+'<<x2<<'i'<<endl;
cout<<"x2="<<x1<<'-'<<x2<<'i'<<endl;
}
}
void main()
{
float a,b,c;
cout<<"这是一个求方程ax2+bx+c=0的根的程序。"<<endl;
for(;;)
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0)
{
getchar();
return;
}
cout<<"输入方程系数b:";
cin>>b;
cout<<"输入方程系数c:";
cin>>c;
FindRoot sbj(a,b,c);
obj.Find();
sbj.Display();
}
} 展开
#include"math.h"
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
return;
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
return;
}
else
{
x1=(-b)/(2*a);
x2=sqrt(-d)/(2*a);
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
return;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
return;
}
else
{
cout<<"x1="<<x1<<'+'<<x2<<'i'<<endl;
cout<<"x2="<<x1<<'-'<<x2<<'i'<<endl;
}
}
void main()
{
float a,b,c;
cout<<"这是一个求方程ax2+bx+c=0的根的程序。"<<endl;
for(;;)
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0)
{
getchar();
return;
}
cout<<"输入方程系数b:";
cin>>b;
cout<<"输入方程系数c:";
cin>>c;
FindRoot sbj(a,b,c);
obj.Find();
sbj.Display();
}
} 展开
4个回答
展开全部
结构化编程方法:
//for two roots
#include <iostream.h>
#include <math.h>
int main()
{
double a,b,c,rp,ip;//方程系数
double x1,x2;//方程的根
double d;//根的判别式
cout<<"input a,b,c(方程系数):";
cin>>a>>b>>c;
if(a==0)
cout<<"这不是二元一次方程";
else
{
d = b * b - 4 * a * c;
if(d >= 0)
{
if (d==0)
{
x1 = -b / (2*a);
cout<<"只有一个实根:"<<x1<<endl;
}
else
{
x1 = ( -b + sqrt ( d ) ) / ( 2 * a );
x2 = ( -b - sqrt ( d ) ) / ( 2 * a );
cout<<"有二个实根:"<<x1<<"and"<<x2<<endl;
}
}
else
{rp = -d/(2*a);
ip = sqrt ( -d ) /(2*a);
x1 = rp + ip ;
x2 = rp - ip ;
cout<<"有二个虚根:"<<x1<<"i"<<"and"<<x2<<"i"<<endl;
}
}
return 0;
}
简单的类对象:
#include"iostream.h"
#include"math.h"
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public:
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
}
else
{
double rp = -d/(2*a);
double ip = sqrt ( -d ) /(2*a);
x1=rp + ip;
x2=rp - ip;
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
}
else
{
cout<<"x1="<<x1<<'i'<<endl;
cout<<"x2="<<x2<<'i'<<endl;
}
}
void main()
{
FindRoot obj(1,2,3);
obj.Find();
obj.Display();
}
//for two roots
#include <iostream.h>
#include <math.h>
int main()
{
double a,b,c,rp,ip;//方程系数
double x1,x2;//方程的根
double d;//根的判别式
cout<<"input a,b,c(方程系数):";
cin>>a>>b>>c;
if(a==0)
cout<<"这不是二元一次方程";
else
{
d = b * b - 4 * a * c;
if(d >= 0)
{
if (d==0)
{
x1 = -b / (2*a);
cout<<"只有一个实根:"<<x1<<endl;
}
else
{
x1 = ( -b + sqrt ( d ) ) / ( 2 * a );
x2 = ( -b - sqrt ( d ) ) / ( 2 * a );
cout<<"有二个实根:"<<x1<<"and"<<x2<<endl;
}
}
else
{rp = -d/(2*a);
ip = sqrt ( -d ) /(2*a);
x1 = rp + ip ;
x2 = rp - ip ;
cout<<"有二个虚根:"<<x1<<"i"<<"and"<<x2<<"i"<<endl;
}
}
return 0;
}
简单的类对象:
#include"iostream.h"
#include"math.h"
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public:
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
}
else
{
double rp = -d/(2*a);
double ip = sqrt ( -d ) /(2*a);
x1=rp + ip;
x2=rp - ip;
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
}
else
{
cout<<"x1="<<x1<<'i'<<endl;
cout<<"x2="<<x2<<'i'<<endl;
}
}
void main()
{
FindRoot obj(1,2,3);
obj.Find();
obj.Display();
}
展开全部
我简单改了一小下,很多都是粗心的错误。你运行一下,应该好用了。
#include <iostream>
#include "math.h"
using namespace std;
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public :
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
return;
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
return;
}
else
{
x1=(-b)/(2*a);
x2=sqrt(-d)/(2*a);
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
return;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
return;
}
else
{
cout<<"x1="<<x1<<'+'<<x2<<'i'<<endl;
cout<<"x2="<<x1<<'-'<<x2<<'i'<<endl;
}
}
int main()
{
float a,b,c;
cout<<"这是一个求方程ax2+bx+c=0的根的程序。"<<endl;
for(;;)
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0)
{
getchar();
return 0;
}
cout<<"输入方程系数b:";
cin>>b;
cout<<"输入方程系数c:";
cin>>c;
FindRoot sbj(a,b,c);
sbj.Find();
sbj.Display();
}
}
#include <iostream>
#include "math.h"
using namespace std;
class FindRoot
{
private:
float a,b,c,d;
double x1,x2;
public :
FindRoot(float x,float y,float z);
void Find();
void Display();
};
FindRoot::FindRoot(float x,float y,float z)
{
a=x;
b=y;
c=z;
d=b*b-4*a*c;
}
void FindRoot::Find()
{
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(a*a);
return;
}
else if(d==0)
{
x1=x2=(-b)/(2*a);
return;
}
else
{
x1=(-b)/(2*a);
x2=sqrt(-d)/(2*a);
}
}
void FindRoot::Display()
{
if(d>0)
{
cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
return;
}
else if(d==0)
{
cout<<"x1=x2="<<x1<<endl;
return;
}
else
{
cout<<"x1="<<x1<<'+'<<x2<<'i'<<endl;
cout<<"x2="<<x1<<'-'<<x2<<'i'<<endl;
}
}
int main()
{
float a,b,c;
cout<<"这是一个求方程ax2+bx+c=0的根的程序。"<<endl;
for(;;)
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0)
{
getchar();
return 0;
}
cout<<"输入方程系数b:";
cin>>b;
cout<<"输入方程系数c:";
cin>>c;
FindRoot sbj(a,b,c);
sbj.Find();
sbj.Display();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
语法上的错误我就不说了 重要的是你定义的类的结构 和具体实现都有缺陷 数据成员的初始化用构造函数就可以了 建议你以后写程序把类的声明和实现分开 形成一个良好的风格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
3个错误 :
1.要用getchar(),就要#include "stdio.h"
2.class FindRoot 里面的public后少了冒号
3.倒数第4行 obj.find(); 应该是sbj.find();
已在VC下测试通过
1.要用getchar(),就要#include "stdio.h"
2.class FindRoot 里面的public后少了冒号
3.倒数第4行 obj.find(); 应该是sbj.find();
已在VC下测试通过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |