您的位置:首页 > 其它

第十五周任务2

2012-05-30 18:03 85 查看
class CFraction
{
private:
int nume;  // 分子
int deno;  // 分母
int gcd(int nu, int de);
public:
//构造函数及运算符重载的函数声明
CFraction(int nu = 0, int de = 1);         //构造函数
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);
int get_nume();
int get_deno();
void Simplify();                    //化简(使分子分母没有公因子)

#include"stdafx.h"
#include"CFraction.h"
using namespace std;

CFraction::CFraction(int nu, int de)
{
nume = nu;
deno = de;
}

int CFraction::gcd(int nu, int de)
{
int t, r, a, b;

a = nu;

b = de;

if (a < b)
{
t = a;
a = b;
b = t;
}

while (b != 0)
{
r = a % b;
a = b;
b = r;
}

return a;
}

void CFraction::Simplify()
{
int n ;

if(nume < 0)
{
n = gcd(-nume, deno);
}
else
{
n = gcd(nume, deno);
}

nume = nume / n;

deno = deno / n;

}

CFraction operator + (CFraction &c1,CFraction &c2)
{
CFraction c;

c.nume = c1.nume * c2.deno + c2.nume * c1.deno;

c.deno = c1.deno * c2.deno;

return c;
}

CFraction operator - (CFraction &c1,CFraction &c2)
{
CFraction c;

c.nume = c1.nume * c2.deno - c2.nume * c1.deno;

c.deno = c1.deno * c2.deno;

return c;
}

CFraction operator * (CFraction &c1,CFraction &c2)
{
CFraction c;

c.nume = c1.nume * c2.nume;

c.deno = c1.deno * c2.deno;

return c;
}

CFraction operator / (CFraction &c1,CFraction &c2)
{
CFraction c;

c.nume = c1.nume * c2.deno;

c.deno = c1.deno * c2.nume;

return c;
}

int CFraction::get_nume()
{
return this->nume;
}

int CFraction::get_deno()
{
return this->deno;
}

void C分数计算器Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(); //将把界面上各控件输入的值“捕获”到与之关联的变量中
CFraction c1(c1_nume, c1_deno), c2(c2_nume, c2_deno), c(0, 1);

if(sign == '+')
{
c = c1 + c2;
}
else if(sign == '-')
{
c = c1 - c2;
}
else if(sign == '*')
{
c = c1 * c2;
}
else if(sign == '/')
{
c = c1 / c2;
}
c.Simplify();

c_nume = c.get_nume();
c_deno = c.get_deno();

UpdateData(FALSE);
}


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