您的位置:首页 > 其它

第十五周任务二(窗口式程序开发之——分数类)

2012-05-26 14:10 225 查看
* 问题描述: 设计分数类,开发一个窗口式程序,可以完成分数的四则运算
* (程序头部注释开始)

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

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

* All rights reserved.

* 文件名称:

* 作    者:          冯珍珍

* 完成日期:     2012    年     5 月    26   日

* 对任务及求解方法的描述部分

* 输入描述:

* 程序输出:

* 程序头部的注释结束

*/


以下为主要程序部分头文件;
//fen.h
class CFraction
{
private:
double nume;  // 分子
double deno;  // 分母
public:
//构造函数及运算符重载的函数声明
CFraction(double m=0 ,double d=0):nume(m),deno(d){};
void simplify();
CFraction operator+(const CFraction &c);  //两个分数相加,结果要化简
CFraction operator-(const CFraction &c);  //两个分数相减,结果要化简
CFraction operator*(const CFraction &c);  //两个分数相乘,结果要化简
CFraction operator/(const CFraction &c);  //两个分数相除,结果要化简
double get_nume()
{
return nume;
}
double get_deno()
{
return deno;
}
};
//fen.cpp
#include "stdafx.h"
#include"fen.h"
#include<Cmath>
#include<iostream>
//求最大公约数的函数
int gcd(int x,int y)
{
int r;
while(y!=0)
{
r=x%y;
x=y;
y=r;
}
return x;
}

// 分数化简
void CFraction::simplify()  //化简(使分子分母没有公因子)
{
double c=gcd(nume,deno);
nume=nume/c;
deno=deno/c;
}

// 分数相加
CFraction CFraction::operator+(const CFraction &c)
{
CFraction c1;
c1.nume=nume*c.deno+c.nume*deno;  //当分母不同时,进行分子分母分别相乘并相加求出分数相加后的分子
c1.deno=deno*c.deno;  //求出相加后的分母
c1.simplify();  //调用simplify进行分数化简
return c1;
}

// 分数相减
CFraction CFraction:: operator-(const CFraction &c)
{
CFraction c1;
c1.nume=nume*c.deno-c.nume*deno;  //当分母不同时,进行分子分母分别相乘并相减求出分数相减后的分子
c1.deno=deno*c.deno;  //求出相减后的分母
c1.simplify();  //调用simplify进行分数化简
return c1;
}

// 分数相乘  (分子分母分别相乘)
CFraction CFraction:: operator*(const CFraction &c)
{
CFraction c1;
c1.nume=nume*c.nume;
c1.deno=deno*c.deno;
c1.simplify();
return c1;
}

// 分数相除
CFraction CFraction:: operator/(const CFraction &c)
{
CFraction c1;
if (!c.nume) return *this;
c1.nume=nume*c.deno;
c1.deno=deno*c.nume;
c1.simplify();
return c1;
}
 

按钮处的文件加入的函数部分
//fenshuDlg.cpp
void CfenshuDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();   //将把界面上各控件输入的值“捕获”到与之关联的变量中
CFraction t1(m_a,m_b),t2(m_c,m_d),c,d;  //定义分数类的对象

if(m_n=="+")
{
c=t1+t2;
m_e=c.get_nume();
m_f=c.get_deno();
}

else if(m_n=="-")
{
c=t1-t2;
m_e=c.get_nume();
m_f=c.get_deno();
}
else if(m_n=="*")
{
c=t1*t2;
m_e=c.get_nume();
m_f=c.get_deno();
}
else if(m_n=="/")
{
c=t1/t2;
m_e=c.get_nume();
m_f=c.get_deno();
}

UpdateData(FALSE);   //更新界面上对应的控件的值并实现显示

}

运行结果如图所示:







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