第九周任务五:一元一次方程类

* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作者:吴瑕
* 完成日期: 2012年 04月 16日
* 版本号:
*对任务及求解方法的描述部分
* 输入描述:

设计一元一次方程类,求形如ax+b=0的方程的解。

例如:输入3x-8=0时,输出的方程的解为x=2.66667;

再如:输入5s+18=0时,输出的方程的解为s=-3.6;

 

#include "iostream"
using namespace std;
class CEquation
{
private:
 double a;     // 未知数系数
 double b;     // 常数项
 char unknown; // 未知数的符号
public:
 CEquation(double aa=0,double bb=0);
 friend istream &operator >> (istream &in,CEquation &e);
 friend ostream &operator << (ostream &out,CEquation &e);
 double Solve();
 char getUnknown();
};
CEquation ::CEquation(double aa,double bb)//构造函数的定义
{
 aa=a;
 bb=b;
}
istream &operator >> (istream &input,CEquation &e)
{
 char c;
 int v;
 while(1)
 {
  input>>e.a>>e.unknown>>e.b>>c>>v;
  if(c!='='||v!=0)
  {
   cout<<"格式不正确,请重新输入";
}
  else
  {
   break;
  }
 }
 return input;
}
ostream &operator << (ostream &output,CEquation &e)
{
 if(e.b>0)
 {
  output<<e.a<<e.unknown<<"+"<<e.b<<"=0";
 }
 else
 {
  output<<e.a<<e.unknown<<e.b<<"=0";
 }
 return output;
}
double CEquation :: Solve()
{

 double c;

 if(b<0)
 {
  c=b/a;
 }
 else
 {
  c=(-b)/a;
 }

 return c;
}
char CEquation ::getUnknown()
{
 return unknown;
}
int main()
{
 CEquation e1,e2
  ;
 cout<<"请输入一元一次方程(输入格式:3x-8=0):";
 cin>>e1;   //在两次测试中,分别输入3x-8=0和5s+18=0
 cout<<"方程为:"<<e1;
 cout<<"方程的解为:"<<e1.getUnknown()<<"="<<e1.Solve()<<endl; //对两次测试,分别输出x=...和s=...
 e1.Solve();

    cout<<"请输入一元一次方程(输入格式:3x-8=0):";
 cin>>e2;   //在两次测试中,分别输入3x-8=0和5s+18=0
 cout<<"方程为:"<<e2;
 cout<<"方程的解为:"<<e2.getUnknown()<<"="<<e2.Solve()<<endl; //对两次测试,分别输出x=...和s=...
 e2.Solve();

 system("pause");
 return 0;
}





运行结果:

上机感言:

编写程序的要时候一个函数一个函数的编,其实我觉得还是友元函数好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值