/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:设计分数类,开发一个窗口式程序,可以完成分数的四则运算
* 作 者: 雷恒鑫
* 完成日期: 2012 年 05 月23 日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
CFraction.h
using namespace std;
int gcd(int m, int n);
class CFraction
{
private:
int nume; // 分子
int deno; // 分母
public:
//构造函数及运算符重载的函数声明
CFraction(int nu=0,int de=1); //构造函数,初始化用
void Simplify(); //化简(使分子分母没有公因子)
void output(); //输出:以8/6为例,style为0时,输出8/6;
int get_nume();
int get_deno();
CFraction operator+(CFraction &c);
CFraction operator-(CFraction &c);
CFraction operator*(CFraction &c);
CFraction operator/(CFraction &c);
CFraction operator-();
};
CFraction.cpp
#include "stdafx.h"
#include <iostream>
#include"CFraction.h"
CFraction::CFraction(int nu,int de) //构造函数,初始化用
{
if (de!=0)
{
nume=nu;
deno=de;
}
else
{
cerr<<"初始化中发生错误,程序退出\n";
system("pause");
exit(0);
}
}
void CFraction::Simplify() //化简(使分子分母没有公因子)
{
int n;
if(nume < 0)
{
n = gcd(-nume, deno);
}
else
{
n = gcd(nume, deno);
}
nume = nume / n;
deno = deno / n;
}
// 求m,n的最大公约数
int gcd(int m, int n)
{
int r;
if (m<n){r=m;m=n;n=r;}
while(r=m%n) // 求m,n的最大公约数
{
m=n;
n=r;
}
return n;
}
void CFraction::output() //输出:以8/6为例,style为0时,输出8/6;
{
cout<<nume<<'/'<<deno<<endl;
}
CFraction CFraction::operator+(CFraction &c)
{
CFraction c2,c3,c4;
c2.nume =nume*c.deno ;
c3.nume =c.nume *deno;
c2.deno =deno*c.deno ;
c3.deno =c.deno *deno;
c4.nume=c2.nume +c3.nume ;
c4.deno =c2.deno ;
c4.Simplify ();
return c4;
}
CFraction CFraction::operator-(CFraction &c)
{
CFraction c2,c3,c4;
c2.nume =nume*c.deno ;
c3.nume =c.nume *deno;
c2.deno =deno*c.deno ;
c3.deno =c.deno *deno;
c4.nume=c2.nume -c3.nume ;
c4.deno =c2.deno ;
c4.Simplify ();
return c4;
}
CFraction CFraction::operator*(CFraction &c)
{
CFraction c2,c3,c4;
c2.nume =nume*c.nume ;
c2.deno =deno*c.deno ;
c2.Simplify ();
return c2;
}
CFraction CFraction::operator/(CFraction &c)
{
CFraction c2,c3;
c2.nume =c.deno ;
c2.deno =c.nume ;
c3.nume =nume*c2.nume ;
c3.deno =deno*c2.deno ;
c3.Simplify ();
return c3;
}
CFraction CFraction::operator-()
{
CFraction c2;
c2.nume =nume;
c2.deno =deno;
c2.Simplify ();
if(c2.nume<0 || c2.deno<0)
{
if(c2.nume <0)
{
c2.nume =-nume;
}
else
{
c2.deno =-deno;
}
}
else
{
c2.nume =-nume;
c2.deno =deno;
}
return c2;
}
int CFraction::get_nume()
{
return nume;
}
int CFraction::get_deno()
{
return deno;
}
MyCFrationDlg.cpp
void CMyCFractionDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
UpdateData(); //将把界面上各控件输入的值“捕获”到与之关联的变量中
CFraction c1(c_1,c_2),c2(c_4,c_5),c;
if(c_3=='+')
{
c=c1+c2;
c_6=c.get_nume();
c_7=c.get_deno();
}
else if(c_3=='-')
{
c=c1-c2;
c_6=c.get_nume();
c_7=c.get_deno();
}
else if(c_3=='*')
{
c=c1*c2;
c_6=c.get_nume();
c_7=c.get_deno();
}
else
{
c=c1/c2;
c_6=c.get_nume();
c_7=c.get_deno();
}
UpdateData(FALSE); //用m_area的值更新界面上对应的控件的值并实现显示
}
运行结果:
经验积累:
1.挺好玩,如果对话框有动画效果那就更好了。
分享到:
相关推荐
实验十五 简单I/O口扩展实验---------------------------------107 实验十六 8251可编程通讯接口与PC机通讯--------------------109 实验十七 LED16*16点阵显示实验-----------------------------116 实验十八 128...
设计一个类似Windows计算器的Application应用程序。 三、实验要求: 1、采用Java Application方式建立应用程序框架; 2、仿照Windows计算器,利用多种布局方式实现界面设计; 3、完成简单的整数加、减、乘、除运算。...
多线程机制该窗口模拟Windows的计算器功能,添加一个文本行和4个按钮,单击【1】、【2】、【+】按钮时,将按钮的标签添加到文本行中;单击【C】按钮时,清空文本行中的内容;单击窗口的关闭按钮,将关闭该窗口。程序...
设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。 基本要求 程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式...
java实现四则运算,将中缀表达式变成后缀表达式,使用栈来做最后的运算
专业课程实验报告 课程名称: 开课学期: 至 学年 第 学期 专业: 年级班级: 学生姓名: 学号: 实验教师: 计算机与信息科学学院 软件学院 《数据库原理》实验报告-数据库系统设计开发全文共11页,当前为第2页。...
《java游戏程序设计教程》实验任务书 实验一 弹跳小球游戏设计 一 实验目的 通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和双缓冲机 制的基本原理,并掌握游戏运行框架的设计方法。 二 实验...
电子科技大学 实 验 报 告 课程名称 微处理器系统结构与嵌入式系统设计 实验名称 ARM汇编基础实验 任课教师 " "实验教师 " " "姓名 " " " "学号 " " " " "实验地点 " " "分组号 " " "时间 " "年 " "月 "日 " " " " ...
综合实验报告 ( 2010 -- 2011 年度第 一 学期) 名 称: 《汇编语言程序设计》综合实验 班 级: 学 号: 学生姓名: 指导教师: 设计周数: 一周 成 绩: 日期: 2011 年 1 月 3 日 《汇编语言程序设计》综合实验 任 ...
《MFC窗口程序设计》-姚领田-源代码-2-4-5-6章
matlab开发-用Matlab设计图形用户界面应用程序。此演示文稿提供了一个概述,使您可以开始在matlab中构建finctional gui
自己编写的一个四则运算DOS界面菜单式小程序 适合一般C语言学者学习 里面内带我演讲时的PPT 所以不用担心看不懂 非常宝贵的资源
但令人遗憾的是,VisualC++开发小组没有给我们一个真正的向导,而只是一个冒充向导的玩具。在他们能够做到以前,我们得习惯现有的向导。 CD.ROM中的内容 本书随附的CD-ROM包括书中全部示例程序的源代码,它们...
linux窗口程序设计--源代码 实例源代码.rar (5.13 MB,
若两个数字异号,则将负数放在第二个操作数内,正数放在第一个操作数内,然后将两个操作数的整数部分和小数部分分别对应逐位相减,判断结果的正负,若是整数,则要完成进位操作,若是负数则要完成借位操作;...
STM32F767单片机开发板实验例程HAL库版本60个软件工程源码合集: STM32F7开发指南-HAL库版本_V1.1.pdf 实验0-1 Template工程模板-新建工程章节使用 实验0-2 Template工程模板-调试章节使用 实验0-3 Template工程模板...
11.3.5 只调用一个函数的windows程序 第十二章 剪贴板 12.1 剪贴板的简单使用 12.1.1 标准剪贴板数据格式 12.1.2 内存分配 12.1.3 将文本传送到剪贴板 12.1.4 从剪贴板上获取文本 12.1.5 打开和...
VC MFC 源代码 窗口程序设计 《MFC窗口程序设计》-姚领田-源代码-4606
本资源是姚领田著的《MFC窗口程序设计》的源代码2
最后一章 为案例实践,利用Windows Forms制作一个完整的程序——网页浏览器,初学者可以更实际地看到Visual Basic开发网络应用程序的妙用。《Visual Basic 2008 程序设计完全自学教程》的所有程序范例都以完整程序...