/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:窗口练习
* 作 者: 薛广晨
* 完成日期: 2012 年 05 月22 日
* 版 本 号: x1.0
* 对任务及求解方法的描述部分
* 输入描述:窗口化 (分数的加减乘除)
* 问题描述:
* 程序头部的注释结束
*/
//头文件 CFrac.h
class CFraction
{
private:
int nume; // 分子
int deno; // 分母
public:
CFraction(int nu = 0, int de = 1) : nume(nu), deno(de){} //构造函数,初始化用
void output();
CFraction operator+(CFraction &c1);
CFraction operator-(CFraction &c1);
CFraction operator*(CFraction &c1);
CFraction operator/(CFraction &c1);
};
//CFrac.cpp
#include "stdafx.h"
#include "CFrac.h"
using namespace std;
CFraction CFraction :: operator+(CFraction &c1)
{
CFraction c2;
c2.deno = deno * c1.deno;
c2.nume = nume * c1.deno + c1.nume * deno;
c2.output();
return c2;
}
CFraction CFraction :: operator-(CFraction &c1)
{
CFraction c2;
c2.deno = deno * c1.deno;
c2.nume = nume * c1.deno - c1.nume * deno;
c2.output();
return c2;
}
CFraction CFraction :: operator*(CFraction &c1)
{
CFraction c2;
c2.deno = deno * c1.deno;
c2.nume = nume * c1.nume;
c2.output();
return c2;
}
CFraction CFraction :: operator/(CFraction &c1)
{
CFraction c2;
c2.deno = deno * c1.nume;
c2.nume = nume * c1.deno;
c2.output();
return c2;
}
void CFraction :: output()
{
int i;
if(nume >= 0)
{
if(deno < nume)i = deno;
else i = nume;
for(; i > 0; --i)
{
if(nume % i == 0 && deno % i == 0)
{
nume = nume / i;
deno = deno / i;
break;
}
}
}
else
{
nume = -nume;
if(deno < nume)i = deno;
else i = nume;
for(; i > 0; --i)
{
if(nume % i == 0 && deno % i == 0)
{
nume = nume / i;
deno = deno / i;
break;
}
}
nume = -nume;
}
}
//button按钮
void CcfractionDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();//将界面上的各控件输入的值“捕获”到与之关联的变量中
CFraction t1(m_nu1, m_du1);
CFraction t2(m_nu2, m_de2);
CFraction t3;
if(m_a == "+")
t3 = t1.operator+(t2);
else if(m_a == "-")
t3 = t1.operator-(t2);
else if(m_a == "*")
t3 = t1.operator*(t2);
else if(m_a == "/")
t3 = t1.operator/(t2);
m_nu3 = t3.getnume();
m_de3 = t3.getdeno();
UpdateData(FALSE);
}
上机感言: 费了好大的劲,终于做出来了。窗口看着就爽