您的位置:首页 > 编程语言 > PHP开发

第9周实验报告3

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

class CFraction
{
private:
int nume;  // 分子
int deno;  // 分母
public:
CFraction(int nu=0,int de=1):nume(nu),deno(de){}
void simplify();
void display();
CFraction operator+(const CFraction &c);  //两个分数相加,结果要化简
CFraction operator-(const CFraction &c);  //两个分数相减,结果要化简
CFraction operator*(const CFraction &c);  //两个分数相乘,结果要化简
CFraction operator/(const CFraction &c);  //两个分数相除,结果要化简
CFraction operator+();  //取正一目运算
CFraction operator-();  //取反一目运算
bool operator>(const CFraction &c);
bool operator<(const CFraction &c);
bool operator==(const CFraction &c);
bool operator!=(const CFraction &c);
bool operator>=(const CFraction &c);
bool operator<=(const CFraction &c);

friend istream &operator>>(istream &input, CFraction &d);
friend ostream &operator<<(ostream &output, CFraction &d);
};

// 分数化简
void CFraction::simplify()
{
int m, n, r;
m=abs(deno);
n=abs(nume);
while(r=m%n)
{
m=n;
n=r;
}
deno /= n;
nume /= n;
if (deno < 0)
{
deno =- deno;
nume =- nume;
}
}

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

CFraction CFraction::operator+ (const CFraction &c)
{
CFraction t;

t.nume = nume * c.deno + c.nume * deno;

t.deno = deno * c.deno;

t.simplify();

return t;
}

CFraction CFraction:: operator- (const CFraction &c)
{
CFraction t;

t.nume = nume * c.deno - c.nume * deno;

t.deno = deno * c.deno;

t.simplify();

return t;
}

CFraction CFraction:: operator* (const CFraction &c)
{
CFraction t;

t.nume = nume * c.nume;

t.deno = deno * c.deno;

t.simplify();

return t;
}

CFraction CFraction:: operator/(const CFraction &c)
{
CFraction t;

if (!c.nume)
{
return *this;
}
t.nume = nume * c.deno;

t.deno = deno * c.nume;

t.simplify();

return t;
}

CFraction CFraction:: operator+()
{
return *this;
}

CFraction CFraction:: operator-()
{
CFraction x;

x.nume = -nume;

x.deno = deno;

return x;
}

bool CFraction::operator>(const CFraction &c)
{
int n, a, d;

n = nume * c.deno;

a = c.nume * deno;

d = deno * c.deno;

if (n > a && d > 0 || n < a && d < 0)
{
return true;
}

return false;
}

bool CFraction::operator<(const CFraction &c)
{
int n, a, d;

n = nume * c.deno;

a = c.nume * deno;

d = deno * c.deno;

if ((n - a) * d < 0)
{
return true;
}
else
{
return false;
}
}

bool CFraction::operator==(const CFraction &c)
{
if (*this!=c)
{
return false;
}
else
{
return true;
}
}

bool CFraction::operator!=(const CFraction &c)
{
if (*this > c || *this < c)
{
return true;
}
else
{
return false;
}
}

bool CFraction::operator>=(const CFraction &c)
{
if (*this<c)
{
return false;
}
else
{
return true;
}
}

bool CFraction::operator<=(const CFraction &c)
{
if (*this > c)
{
return false;
}
else
{
return true;
}
}

//改函数
istream &operator>>(istream &input, CFraction &d)
{
char c;

input >> d.nume;

cin >> c;

input >> d.deno;

return input;
}

ostream &operator << (ostream &output, CFraction &d)
{
char c = '/';

output << d.nume << c << d.deno;

return output;
}

int main()
{
CFraction x(1,3),y(-5,10),s;
cin >> s;

cout << x << endl << y << endl << s << endl;
system("pause");
return 0;
}

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