/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 李超
* 完成日期: 2012 年 4 月 10 日
* 版 本 号: 01.08.03
* 对任务及求解方法的描述部分
* 问题描述: 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
* 程序头部的注释结束
主函数CFraction.cpp
编出来一个,全都出来了,感觉好爽!
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 李超
* 完成日期: 2012 年 4 月 10 日
* 版 本 号: 01.08.03
* 对任务及求解方法的描述部分
* 问题描述: 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
* 程序头部的注释结束
*/
头文件CFraction.h
#include <iostream>
using namespace std;
class CFraction
{
private:
int nume; // 分子
int deno; // 分母
public:
//构造函数,初始化用
CFraction(int nu=0,int de=1): nume(nu), deno(de) {};
//加减乘除四则运算
CFraction operator + (CFraction &c);
CFraction operator - (CFraction &c);
CFraction operator * (CFraction &c);
CFraction operator / (CFraction &c);
//取正反
CFraction operator + ();//取正
CFraction operator - ();//取反
//判断
bool operator > (CFraction &c);
bool operator < (CFraction &c);
bool operator >= (CFraction &c);
bool operator <= (CFraction &c);
bool operator == (CFraction &c);
bool operator !=(CFraction &c);
void display(); //化简、输出
};
//加减乘除四则运算
CFraction CFraction::operator + (CFraction &c)
{
return CFraction (nume * c.deno + deno * c.nume , deno * c.deno);
}
CFraction CFraction::operator - (CFraction &c)
{
return CFraction (nume * c.deno - deno * c.nume , deno * c.deno);
}
CFraction CFraction::operator * (CFraction &c)
{
return CFraction (nume * c.nume , deno * c.deno);
}
CFraction CFraction::operator / (CFraction &c)
{
return CFraction (nume * c.deno , deno * c.nume);
}
//取正反
CFraction CFraction::operator + ()//取正
{
return *this;
}
CFraction CFraction::operator - ()//取反
{
CFraction c;
c.nume = -nume;
c.deno = deno;
return c;
}
//判断
bool CFraction::operator > (CFraction &c)
{
if (nume * c.deno > c.nume * deno)
return true;
else
return false;
}
bool CFraction::operator < (CFraction &c)
{
if (nume * c.deno < c.nume * deno)
return true;
else
return false;
}
bool CFraction::operator >= (CFraction &c)
{
if (nume * c.deno >= c.nume * deno)
return true;
else
return false;
}
bool CFraction::operator <= (CFraction &c)
{
if (nume * c.deno <= c.nume * deno)
return true;
else
return false;
}
bool CFraction::operator == (CFraction &c)
{
if (nume * c.deno == c.nume * deno)
return true;
else
return false;
}
bool CFraction::operator !=(CFraction &c)
{
if (nume * c.deno != c.nume * deno)
return true;
else
return false;
}
void CFraction::display() //化简(使分子分母没有公因子)
{
int nu = nume, de = deno,temp, a;
if(nu > de)
{
temp = nu;
nu = de;
de= temp;
}
while(nu != 0)
{
a = de % nu;
de = nu;
nu = a;
}
deno = deno / de;
nume = nume / de;
cout <<nume <<'/' <<deno <<endl;
}
主函数CFraction.cpp
#include <iostream>
#include "CFraction.h"
using namespace std;
void main()
{
CFraction x(5, 9), y(-4, 7), z;
cout <<"分数x=5/9" <<'\t' <<"y=-4/7" <<endl;
z = +x + y;
cout <<"+x+y=";
z.display ();
cout <<"-x-y=";
z = -x - y;
z.display ();
z = x - y;
cout <<"x-y=";
z.display ();
z = x * y;
cout <<"x*y=";
z.display ();
z = x / y;
cout <<"x/y=";
z.display ();
z = -x + y;
cout <<"-x+y=";
z.display ();
x.display();
if (x > y)
cout <<"大于"<<endl;
if (x<y)
cout<<"小于"<<endl;
if (x==y)
cout<<"等于"<<endl;
y.display ();
cout<<endl;
system("PAUSE");
}
编出来一个,全都出来了,感觉好爽!
欢迎大家多给评语