/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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.挺好玩,如果对话框有动画效果那就更好了。
分享到:
相关推荐
【Java课程设计】本次课程设计的目标是开发一个基于图形用户界面(GUI)的计算器应用程序,能够执行基本的算术运算,包括加法、减法、乘法、除法和取余运算,同时具备小数点、正负号切换、求倒数、退格和清零功能。...
在这个名为“微信小程序,四则运算计算器wechat-miniprogram-calculator-master.zip”的项目中,开发者创建了一个简单实用的计算器,支持基本的四则运算(加法、减法、乘法、除法)。这个压缩包文件包含了一整个微信...
这通常通过在`Fraction`类中定义一个成员函数或者友元函数完成。成员函数可以访问类的私有数据成员,而友元函数则可以访问非成员函数无法直接访问的私有数据。重载`+`运算符的示例代码可能如下: ```cpp class ...
在软件开发领域,.Net框架是一个重要的平台,它提供了丰富的工具和库,使得程序员可以高效地开发出跨平台的应用程序。本课程主要针对.Net程序开发与设计,旨在帮助学生掌握基础的编程技巧和面向对象的设计原则。 ...
【Java综合程序设计-计算器-实验...总之,这份实验报告展示了如何使用Java进行综合程序设计,特别是构建一个简易计算器的过程,涵盖了程序设计的基础理论、图形界面设计和高级算法的实现,为学生提供了宝贵的实践经验。
在C++编程中,课程设计任务“分数类的设计与实现”是一个常见的练习,旨在让学生掌握面向对象编程的基本概念,特别是类的设计和对象的封装。在这个项目中,目标是创建一个名为`RationalNumber`的类,它能表示并处理...
这个PPT可能涵盖了关于C语言基础知识、菜单式程序设计思路和四则运算的具体实现步骤,对初学者来说是一份非常宝贵的参考资料。 总结来说,这个C语言DOS界面菜单式四则运算程序是一个理想的实践项目,可以帮助初学者...
设计一个手持计算器程序涉及到多个方面的知识点,包括程序结构设计、用户界面交互、数据类型处理、错误检查和控制流。以下是对这些知识点的详细说明: 1. **程序结构设计**: - **计算器类**:根据描述,我们可以...
在编程中,我们需要定义一个结构来表示多项式,并实现相应的四则运算方法。 1. **多项式类的设计**: - 定义一个类`Polynomial`,包含一个数组或列表来存储多项式的系数。每个系数对应多项式的一个项。 - 添加...
【DSP实验报告—实验2 编写一个以C语言为基础的DSP程序】 在这个实验中,学生将学习如何使用标准C语言编写数字信号处理(DSP)程序,并掌握与之相关的工具和概念。实验主要包括以下几个关键知识点: 1. **C语言...
在这个Java实战项目中,我们将构建一个简单的计算器应用程序,利用Java Swing库来创建用户界面,并实现基本的数学运算功能。以下是一些关键知识点: 1. **Java Swing库**:Java Swing是Java Foundation Classes ...
Java简易计算器是一个基于Java编程语言实现的计算工具,它不仅支持基本的四则运算,还具备处理三角函数的能力,并且已经实现了运算的优先级规则。这个项目的核心是将用户输入的中缀表达式(常见的数学表达式形式)...
在本项目中,我们主要探讨的是如何利用Java编程语言设计一个具有加减乘除四则混合运算功能的GUI(图形用户界面)计算器。这个计算器旨在模拟Windows操作系统中的标准计算器,提供用户友好的交互方式,使得非程序员也...
【汇编程序设计实验报告】涉及的主要是使用汇编语言进行程序设计的实践,包括了判断闰年、数据加密、四则运算以及屏幕窗口管理等多个实际应用任务。这些任务不仅要求掌握基本的汇编语言指令,还涉及到程序设计的高级...
《VisualBasic程序设计形考1-5全答案》是一个针对国家开放大学21秋季学期的VisualBasic程序设计课程的学习资源包。这个压缩文件包含了五个关键实验的完整解答,旨在帮助学生理解和掌握VB编程的基本概念、技术和应用...
综上所述,这个"java数学表达式计算程序设计报告"涵盖了 Java 语言的基础应用、GUI 设计、事件处理、数学运算、软件工程实践等多个知识点,是一个综合性的编程项目。通过这个项目,开发者可以锻炼编程技能,了解完整...
该项目是一个基于Java Swing的简单计算器应用程序,能够实现基本的四则运算功能,并且支持括号操作,以解决优先级问题。为了处理复杂的数学表达式,该计算器还引入了栈的概念。 #### 二、项目结构与组件分析 1. **...
【VB程序设计-数学运算测试】的项目是一个旨在训练学生VB编程能力的课程设计任务,主要涉及数组、控件数组的使用以及控件属性的设置。该任务要求学生开发一个数学运算测试程序,具备不同难度等级,包括初级、中级和...
### Intel Visual Fortran窗口程序设计相关知识点 #### 一、Intel Visual Fortran 编译器简介 Fortran作为历史悠久的高级编程语言之一,在科学计算领域有着不可替代的地位。随着计算机技术的发展,Fortran也在不断...