您的位置:首页 > 移动开发 > IOS开发

第九周上机任务3

2012-04-16 20:06 344 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:renwu.cpp
* 作    者:宋本一
* 完成日期:2012 年 4 月 16 日
* 版 本 号:9.3
* 对任务及求解方法的描述部分
* 输入描述:略
* 问题描述:略
* 程序输出:略
* 程序头部的注释结束
*/
#include <iostream>
using namespace std;

class CFraction
{
private:
int nume;  // 分子
int deno;  // 分母
int gcd(int m, int n);
public:
//构造函数及运算符重载的函数声明
CFraction(int n=1, int d=1){if(d==0) return;nume=n,deno=d;}
friend CFraction operator +(CFraction &c1,CFraction &c2);
friend CFraction operator -(CFraction &c1,CFraction &c2);
friend CFraction operator *(CFraction &c1,CFraction &c2);
friend CFraction operator /(CFraction &c1,CFraction &c2);
friend CFraction operator -(CFraction &c);
bool operator >(CFraction &c);
bool operator <(CFraction &c);
bool operator >=(CFraction &c);
bool operator <=(CFraction &c);
bool operator ==(CFraction &c);
bool operator !=(CFraction &c);
friend ostream& operator << (ostream&,CFraction &);
friend istream& operator >> (istream&,CFraction &);
void simplify();
void display();
};

istream& operator >> (istream& input,CFraction & c)
{
input>>c.nume>>c.deno;
return input;
}
ostream& operator << (ostream& output,CFraction & c)
{
output<<c.nume<<'/'<<c.deno<<endl;
return output;
}

void CFraction::simplify()
{
int n=gcd(deno,nume);
deno/=n;
nume/=n;
}

int CFraction::gcd(int m,int n)
{
int r;
if(m<n)
{
r=m;
m=n;
n=r;
}
while(r=m%n)
{
m=n;
n=r;
}
return n;
}

void CFraction::display()
{
cout<<nume<<"/"<<deno<<endl;
}

CFraction operator +(CFraction &c1,CFraction &c2)
{
CFraction c;
c.deno=c1.deno*c2.deno;
c.nume=c1.nume*c2.deno+c2.nume*c1.deno;
c.simplify();
return c;
}

CFraction operator -(CFraction &c1,CFraction &c2)
{
CFraction c;
c.deno=c1.deno*c2.deno;
c.nume=c1.nume*c2.deno-c2.nume*c1.deno;
c.simplify();
return c;
}

CFraction operator *(CFraction &c1,CFraction &c2)
{
CFraction c;
c.deno=c1.deno*c2.deno;
c.nume=c1.nume*c2.nume;
c.simplify();
return c;
}

CFraction operator /(CFraction &c1,CFraction &c2)
{
CFraction c;
c.deno=c1.deno*c2.nume;
c.nume=c1.nume*c2.deno;
c.simplify();
return c;
}

CFraction operator -(CFraction &c)
{
return CFraction(-c.nume,c.deno);
}

bool CFraction::operator >(CFraction &c)
{
CFraction cf(*this/c);
if(cf.nume/cf.deno>1)
return true;
else
return false;
}

bool CFraction::operator <(CFraction &c)
{
CFraction cf(*this/c);
if(cf.nume/cf.deno<1)
return true;
else
return false;
}

bool CFraction::operator >=(CFraction &c)
{
CFraction cf(*this/c);
if(cf.nume/cf.deno>=1)
return true;
else
return false;
}

bool CFraction::operator <=(CFraction &c)
{
CFraction cf(*this/c);
if(cf.nume/cf.deno<=1)
return true;
else
return false;
}

bool CFraction::operator ==(CFraction &c)
{
CFraction cf(*this/c);
if(cf.nume/cf.deno==1)
return true;
else
return false;
}

bool CFraction::operator !=(CFraction &c)
{
CFraction cf(*this/c);
if(cf.nume/cf.deno!=1)
return true;
else
return false;
}
//重载函数的实现及用于测试的main()函数
int main()
{
CFraction c1(1,3),c2(3,6),c3(6,10);
cout<<"c1=";
c1.display();
cout<<"c2=";
c2.display();
cout<<"c3=";
c3.display();
if(c1>c2)
cout<<"c1>c2"<<endl;
if(c2<c1)
cout<<"c2<c1"<<endl;
if(c2>=c3)
cout<<"c2>=c3"<<endl;
if(c2<=c3)
cout<<"c2<=c3"<<endl;
if(c2==c3)
cout<<"c2==c3"<<endl;
if(c1!=c2)
cout<<"c1!=c2"<<endl;
cout<<"c1+c2=";
(c1+c2).display();
cout<<"c1-c2=";
(c1-c2).display();
cout<<"c1*c2=";
(c1*c2).display();
cout<<"c1/c2=";
(c1/c2).display();
cout<<"c3=-c3=";
c3=-c3;
c3.display();
system("pause");
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息