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

来源:互联网 发布:教育软件行业分析 编辑:程序博客网 时间:2024/05/18 02:27
* 程序的版权和版本声明部分         * 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.hclass 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);   //更新界面上对应的控件的值并实现显示     }  分数加法运算:
分数减法运算:

 

分数乘法运算:

分数除法运算:

 

原创粉丝点击