PTA:分数加法运算重载(c++,字符串处理)

相信同学们对复数运算符重载已经相当熟悉啦,那今天那我们来看看分数又该如何处理呢?定义一个分数类FS,有私有成员分子fz,分母fm。另有公有成员函数FS operator + (const FS &f)对运算符“+”进行重载,实现两个分数相加。题目首先给出一个整型数n,紧跟着2n行输入,输入形如3z4m,代表分子为3,分母为4。其中分母不为0,输入时分母可以为负数,但输出时分母必须为正数。 要求对分数进行两两求和,并化简。(备注说明:分数为0时,表示成0z1m,如果结果为负数,那么分子取负数,分母为正数)
示例如下:
输入:
3
4z9m
2z9m
4z5m
5z4m
2z-5m
1z-5m
输出:
2z3m
41z20m
-3z5m

#include<bits/stdc++.h>
using namespace std;
class FS{
   
    private:
    int fz;
    int fm;
    public:
    FS(){
   };
    FS(int a,int b):fz(a),fm(b){
   };
    void get(int ,int);     //用于修改fzfm的函数
    void simply(int &a,int &b);   //约分fzfm的函数
    void display();     //结果输出函数
    FS operator + (const FS &f){
      //重载+运算符
	int a,b;
	if(fz==0||f.fz==0){
   
		a=0;
		b=0;
		return FS(a,b);
	}
    a=(fz*f.fm+fm*f.fz);
    b=fm*f.fm;
    if(a==0){
   
        b=1;          //如果fz等于0那么fm要等于1不能直接输出,这题就卡在这了
    }
    simply(a,b);
    return FS(a,b);
   }
};
void FS::get(int a,int b){
   
    fz=a;
    fm=b;
}
void FS::simply
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值