第十五周任务(二)加减乘除运算的对话框

* 程序的版权和版本声明部分         
* Copyright (c) 2011, 烟台大学计算机学院学生          
* All rights reserved.      
* 文件名称:                                       
* 作    者:          齐艳红                               
* 完成日期:     2012    年     5 月    26   日     
* 对任务及求解方法的描述部分       
* 输入描述:         
* 程序输出:        
* 程序头部的注释结束       
*/      
以下为主要程序部分头文件;

[cpp] view plaincopyprint?//fen.h   
class CFraction    
{    
private:    
 double nume;  // 分子     
 double deno;  // 分母     
public:    
 //构造函数及运算符重载的函数声明     
CFraction(double m=0 ,double d=0):nume(m),deno(d){};    
void simplify();        
CFraction operator+(const CFraction &c);  //两个分数相加,结果要化简          
CFraction operator-(const CFraction &c);  //两个分数相减,结果要化简    
CFraction operator*(const CFraction &c);  //两个分数相乘,结果要化简          
CFraction operator/(const CFraction &c);  //两个分数相除,结果要化简          
double get_nume()  
 {  
    return nume;  
 }  
  double get_deno()  
 {  
    return deno;  
 }  
};  
//fen.h
class CFraction  
{  
private:  
 double nume;  // 分子  
 double deno;  // 分母  
public:  
 //构造函数及运算符重载的函数声明  
CFraction(double m=0 ,double d=0):nume(m),deno(d){};  
void simplify();      
CFraction operator+(const CFraction &c);  //两个分数相加,结果要化简       
CFraction operator-(const CFraction &c);  //两个分数相减,结果要化简 
CFraction operator*(const CFraction &c);  //两个分数相乘,结果要化简       
CFraction operator/(const CFraction &c);  //两个分数相除,结果要化简       
double get_nume()
 {
	return nume;
 }
  double get_deno()
 {
	return deno;
 }
};[cpp] view plaincopyprint?//fen.cpp   
#include "stdafx.h"     
#include"fen.h"   
#include<Cmath>   
#include<iostream>   
//求最大公约数的函数        
int gcd(int x,int y)        
{      
 int r;      
 while(y!=0)      
 {      
  r=x%y;      
  x=y;      
  y=r;      
 }      
 return x;      
}      
  
// 分数化简          
void CFraction::simplify()  //化简(使分子分母没有公因子)        
{      
 double c=gcd(nume,deno);      
 nume=nume/c;      
 deno=deno/c;      
}       
    
  
    
// 分数相加          
CFraction CFraction::operator+(const CFraction &c)        
{        
 CFraction c1;        
 c1.nume=nume*c.deno+c.nume*deno;  //当分母不同时,进行分子分母分别相乘并相加求出分数相加后的分子        
 c1.deno=deno*c.deno;  //求出相加后的分母        
 c1.simplify();  //调用simplify进行分数化简        
 return c1;        
}        
    
// 分数相减          
CFraction CFraction:: operator-(const CFraction &c)        
{        
 CFraction c1;        
 c1.nume=nume*c.deno-c.nume*deno;  //当分母不同时,进行分子分母分别相乘并相减求出分数相减后的分子        
 c1.deno=deno*c.deno;  //求出相减后的分母        
 c1.simplify();  //调用simplify进行分数化简        
 return c1;        
}        
  
// 分数相乘  (分子分母分别相乘)        
CFraction CFraction:: operator*(const CFraction &c)        
{        
 CFraction c1;        
 c1.nume=nume*c.nume;        
 c1.deno=deno*c.deno;        
 c1.simplify();        
 return c1;        
}        
    
// 分数相除          
CFraction CFraction:: operator/(const CFraction &c)        
{        
 CFraction c1;        
 if (!c.nume) return *this;      
 c1.nume=nume*c.deno;        
 c1.deno=deno*c.nume;        
 c1.simplify();        
 return c1;        
}        
//fen.cpp
#include "stdafx.h"  
#include"fen.h"
#include<Cmath>
#include<iostream>
//求最大公约数的函数     
int gcd(int x,int y)      
{    
 int r;    
 while(y!=0)    
 {    
  r=x%y;    
  x=y;    
  y=r;    
 }    
 return x;    
}    

// 分数化简       
void CFraction::simplify()  //化简(使分子分母没有公因子)     
{    
 double c=gcd(nume,deno);    
 nume=nume/c;    
 deno=deno/c;    
}     
  

  
// 分数相加       
CFraction CFraction::operator+(const CFraction &c)      
{      
 CFraction c1;      
 c1.nume=nume*c.deno+c.nume*deno;  //当分母不同时,进行分子分母分别相乘并相加求出分数相加后的分子     
 c1.deno=deno*c.deno;  //求出相加后的分母     
 c1.simplify();  //调用simplify进行分数化简     
 return c1;      
}      
  
// 分数相减       
CFraction CFraction:: operator-(const CFraction &c)      
{      
 CFraction c1;      
 c1.nume=nume*c.deno-c.nume*deno;  //当分母不同时,进行分子分母分别相乘并相减求出分数相减后的分子     
 c1.deno=deno*c.deno;  //求出相减后的分母     
 c1.simplify();  //调用simplify进行分数化简     
 return c1;      
}      

// 分数相乘  (分子分母分别相乘)     
CFraction CFraction:: operator*(const CFraction &c)      
{      
 CFraction c1;      
 c1.nume=nume*c.nume;      
 c1.deno=deno*c.deno;      
 c1.simplify();      
 return c1;      
}      
  
// 分数相除       
CFraction CFraction:: operator/(const CFraction &c)      
{      
 CFraction c1;      
 if (!c.nume) return *this;    
 c1.nume=nume*c.deno;      
 c1.deno=deno*c.nume;      
 c1.simplify();      
 return c1;      
}      
[cpp] view plaincopyprint?   
  
按钮处的文件加入的函数部分

[cpp] view plaincopyprint?//fenshuDlg.cpp   
void CfenshuDlg::OnBnClickedButton1()  
{  
    // TODO: 在此添加控件通知处理程序代码   
   UpdateData();   //将把界面上各控件输入的值“捕获”到与之关联的变量中     
   CFraction t1(m_a,m_b),t2(m_c,m_d),c,d;  //定义分数类的对象     
     
   if(m_n=="+")  
   {  
   c=t1+t2;  
   m_e=c.get_nume();  
   m_f=c.get_deno();  
   }  
     
   else if(m_n=="-")  
   {  
     c=t1-t2;  
     m_e=c.get_nume();  
     m_f=c.get_deno();  
   }  
   else if(m_n=="*")  
   {  
       c=t1*t2;  
       m_e=c.get_nume();  
       m_f=c.get_deno();  
   }  
   else if(m_n=="/")  
   {  
       c=t1/t2;  
       m_e=c.get_nume();  
       m_f=c.get_deno();  
   }  
  
   UpdateData(FALSE);   //更新界面上对应的控件的值并实现显示   
  
}  
分数加法运算:
分数减法运算:

 

分数乘法运算:

分数除法运算:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值