分数的四则运算(c++重载练习)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 22:17   58   0
/*
* 分数的四则运算
* 重载运算符的实现
* 最简分数打印结果
 **/

#include<iostream>
using namespace std;

class fenShu                       //分数类
{
 
public: 
 int fenZi;                      //分子
 int fenMu;                      //分母
 fenShu input(int fz ,int fm);   //输入函数
    void output();                  //输出函数
 fenShu operator +(fenShu &);    //重载四则运算
 fenShu operator -(fenShu &);
 fenShu operator *(fenShu &);
 fenShu operator /(fenShu &); 
 
};

fenShu fenShu::operator+(fenShu &a)  //加号重载
{
 fenShu g;
 g.fenMu=fenMu*a.fenMu;
 g.fenZi=fenZi*a.fenMu+a.fenZi*fenMu;
 return g;
}
fenShu fenShu::operator-(fenShu &a)  //减号重载
{
 fenShu g;
 g.fenMu=fenMu*a.fenMu;
 g.fenZi=fenZi*a.fenMu-a.fenZi*fenMu;
 return g;
}
fenShu fenShu::operator*(fenShu &a)  //乘号重载
{
 fenShu g;
 g.fenMu=fenMu*a.fenMu;
 g.fenZi=fenZi*a.fenZi;
 return g;
}
fenShu fenShu::operator/(fenShu &a)  //除号重载
{
 fenShu g;
 g.fenMu=fenMu*a.fenZi;
 g.fenZi=fenZi*a.fenMu;
 return g;
}
fenShu fenShu::input(int fz ,int fm)  //输入实现
{ 
 fenShu a;
 a.fenZi=fz;a.fenMu=fm;
 return a;
}
void fenShu::output()               //最简分数输出
{ 
 for(int i=2;i<=fenZi||i<=fenMu;i++)
 {
  if(fenZi%i==0&&fenMu%i==0)   //找出分子分母最大公约数i
  {
   fenZi=fenZi/i;           //简化分子
   fenMu=fenMu/i;           //简化分母
  }
  
 }
 cout<<fenZi <<"/"<<fenMu<<endl; //打印简化后的分数
}


void main()
{ 
 
 fenShu s1,s2,s3;
 
 int fenzi1,fenmu1,fenzi2,fenmu2;    
 
 cout<<"请输入第一个分数的分子(空格)分母"<<endl;  
 
 cin>>fenzi1;
        cin>>fenmu1;
 
 cout<<"请输入第二个分数的分子(空格)分母"<<endl;  
 
        cin>>fenzi2;
 cin>>fenmu2;
 
 s1=s1.input(fenzi1,fenmu1);
 
 s2=s2.input(fenzi2,fenmu2);
 
 //打印分数加+法格式以及运算后的结果
 s3=s1+s2;
 cout<<fenzi1<<"/"<<fenmu1 <<" + "<<fenzi2<<"/"<<fenmu2<<" = " ;
 s3.output();
 
 //打印分数减-法格式以及运算后的结果
 s3=s1-s2;
    cout<<fenzi1<<"/"<<fenmu1 <<" - "<<fenzi2<<"/"<<fenmu2<<" = " ;
 s3.output();

 //打印分数乘*法格式以及运算后的结果
 s3=s1*s2;
 cout<<fenzi1<<"/"<<fenmu1 <<" * "<<fenzi2<<"/"<<fenmu2<<" = " ;
 s3.output();

 //打印分数除/法格式以及运算后的结果
 s3=s1/s2;
 cout<<fenzi1<<"/"<<fenmu1 <<" / "<<fenzi2<<"/"<<fenmu2<<" = " ;
 s3.output();
 
 
}




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP