第十五周 任务二
2012-05-22 20:55
78 查看
/* (程序头部注释开始) * 程序的版权和版本声明部分 * 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);
}
上机感言: 费了好大的劲,终于做出来了。窗口看着就爽