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

第八周实验报告(任务3)

2012-04-10 20:03 363 查看
程序头部注释开始

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

* All rights reserved.

* 文件名称: 分数的四则运算    

* 作    者:     郭广建                       

* 完成日期:  2012年    04  月   10    日

* 版 本 号:  1.0

源程序:

#include <iostream>

using namespace std;

class CFraction
{
private:
int nume;  // 分子

int deno;  // 分母

public:

CFraction(int nu = 0, int de = 1);   //构造函数,初始化用

CFraction operator+(CFraction &c2);       //运算符的重载

CFraction operator-(CFraction &c2);

CFraction operator*(CFraction &c2);

CFraction operator/(CFraction &c2);

void Simplify();                             //化简

void Output();
};
int gcd(int de1,int de2);           //求最大公约数

CFraction::CFraction(int nu , int de)
{
if(de != 0)
{
nume = nu;

deno = de;
}
else
{
cout << "输入错误!" <<endl;

exit(0);
}
}
CFraction CFraction::operator+(CFraction &c2)
{
CFraction c;

int Max_r = gcd(deno, c2.deno);

c.deno = (deno / Max_r) * (c2.deno / Max_r);

c.nume = (nume * (c.deno / deno)) + (c2.nume * (c.deno / c2.deno));

return c;
}

CFraction CFraction::operator-(CFraction &c2)
{
CFraction c;

int Max_r = gcd(deno, c2.deno);

c.deno = (deno / Max_r) * (c2.deno / Max_r);

c.nume = (nume * (c.deno / deno)) - (c2.nume * (c.deno / c2.deno));

return c;
}

CFraction CFraction::operator*(CFraction &c2)
{
return CFraction(nume * c2.nume , deno * c2.deno);
}

CFraction CFraction::operator/(CFraction &c2)
{
return CFraction(nume * c2.deno , deno * c2.nume);
}

void CFraction::Simplify()
{
int m, n, r;

m = abs(nume);

n = abs(deno);

r = gcd(m, n);

deno /= r;

nume /= r;

if(deno < 0)
{
deno = -deno;

nume = -nume;
}
}

void CFraction::Output()
{
cout << nume << '/' << deno <<endl;
}

void main()
{

CFraction c1(3,5), c2(2,8),c3;

cout << "c1 =  " ;

c1.Output();

cout << "c2 = " ;

c2.Output();

c2.Simplify();

cout << "c2化简得:";

c2.Output();

c3 = c1 + c2;

cout << "c1 + c2 = " ;

c3.Output();

c3 = c1 - c2;

cout << "c1 - c2 = " ;

c3.Output();

c3 = c1 * c2;

cout << "c1 * c2 = " ;

c3.Output();

c3 = c1 / c2;

cout << "c1 / c2 = " ;

c3.Output();

system("pause");
}

int gcd(int de1,int de2)
{
int r;

if(de1 < de2)
{
r = de1; de1 = de2; de2 = r;
}

while(r = de1 % de2)
{
de1 = de2;

de2 = r;
}

return de2;
}


运行结果:

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