实验报告15--2
来源:互联网 发布:秒杀红包软件 编辑:程序博客网 时间:2024/04/28 17:53
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:设计分数类,开发一个窗口式程序,可以完成分数的四则运算
* 作 者: zhang lu
* 完成日期: 2012 年 05 月 25 日
* 版 本 号: 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的值更新界面上对应的控件的值并实现显示
- }
运行结果:
经验积累:
- 实验报告15--2
- 15周实验报告2
- 第15周实验报告2
- 第15周实验报告任务2
- 第15周实验报告2
- C++实验报告(15-2)
- 第15周实验报告2
- 15周实验报告任务 2
- 实验报告 15--1
- 实验报告 《2》2
- 实验报告:2:2
- c++实验报告 2
- 实验报告 《2》1
- 实验报告 《2》 3
- 实验报告《2》4
- 实验报告 2
- 实验报告5-2
- 实验报告2
- 第15周任务1(程序窗口初体验,求三角形的面积和周长)
- notebook 206
- 《十五周任务三--1.2》加注释提交报告
- putty终端乱码了怎么办?本经验分享乱码的解决方法
- 60个中国顶级电子技术网站
- 实验报告15--2
- SQL Server为啥使用了这么多内存?
- MYSQL的事务处理
- cts源码下载
- 浅析C++中内存分配的方式
- Android 桌面悬浮框
- 请慎用java的File#renameTo(File)方法
- 打开网页 关闭网页
- Logistic regression回归模型