m0_62614061 2022-04-07 18:42 采纳率: 33.3%
浏览 223
已结题

为什么算出来加法有的是错的

#include
using namespace std;
class Fen{
int zi;
int zm;
public:
Fen(int m=0,int n=1){zi=m;zm=n;}
void dao(){cout<<"倒数是:"<<zm<<"/"<<zi<<endl;}//倒数
Fen operator+(Fen q){
Fen sum;
if(zm==q.zm){
sum.zm=zm;
sum.zi=q.zi+zi;
}
else if(zm!=q.zm)
{
sum.zm=zmq.zm;
sum.zi=q.zizm+ziq.zm;
}
return sum;
}//加法
Fen operator-(Fen q){
Fen ca;
if(zm==q.zm){
ca.zm=zm;
ca.zi=zi-q.zi;
}
else if(zm!=q.zm)
{
ca.zm=zmq.zm;
ca.zi=zi
q.zm-q.zi*zm;
}
return ca;
}//减法
int operator>(Fen q){
if(zm==q.zm)
{
if(zi>q.zi) return 1;
}
if(zm!=q.zm)
{
if(zi
q.zm>q.zi*zm) return 1;
}
return 0;
}//比较大小
void show(){
int t,u,r;
t=zi;
u=zm;
if(zi==0) cout<<'0'<<endl;
if(zi>=zm)
{
if(zi%zm==0){cout<<(zi/zm)<<endl;}
if(zi%zm!=0)
{
while(zi%zm!=0)
{
r=zm;
zm=zi%zm;
zi=r;

           }
         cout<<(t/zm)<<"/"<<(u/zm)<<endl;
        }
    }
if(zi<zm)
    {
        if(zm%zi==0){cout<<"1"<<"/"<<(zm/zi)<<endl;}
        if(zm%zi!=0)
        {
          while(zm%zi!=0)
          {
            r=zi;
            zi=zm%zi;
            zm=r;
          }
          cout<<(t/zi)<<"/"<<(u/zi)<<endl;
        }
    }
}

};
int main(){
int n,m,c,d;
cin>>n>>m>>c>>d;
Fen a(n,m),b(c,d),s,ca;
a.dao();
a.show();
s=a+b;
s.show();
ca=a-b;
ca.show();
cout<<(a>b)<<endl;
return 0;
}

  • 写回答

7条回答 默认 最新

  • 非西昂 2022-04-10 20:41
    关注

    你的源码有部分的语法问题,我做了下修改:
    1.头文件补全
    2.你的代码中的加法、减法、比较大小中省略的“*”乘号,已补全
    3.花括号有些地方你有些地方省略了,有些一行写完,有些是其他语法的习惯,我全部统一了,实在是看起来吃力,有点影响阅读
    4.加法、减法增加了打印,打印了当前类成员分子分母的值加减传参的值
    你说的有些加法是错的麻烦详细描述下,以下是我的输出和修改后的源码,希望能帮到你!!!
    输出:

    img

    源码:

    
    #include <iostream>
    using namespace std;
    
    class Fen
    {
        int zi;
        int zm;
    public:
        Fen(int m = 0, int n = 1)
        {
            zi = m;
            zm = n;
        }
        void dao()
        {
            cout << "倒数是:" << zm << "/" << zi << endl;
        }//倒数
        Fen operator+(Fen q)
        {
            Fen sum;
            
            if (zm == q.zm)
            {
                sum.zm = zm;
                sum.zi = q.zi + zi;
            }
            else if (zm != q.zm)
            {
                sum.zm = zm * q.zm;
                sum.zi = q.zi * zm + zi * q.zm;
            }
            cout << zi << "/" << zm << "+" << q.zi << "/" << q.zm << "=" << sum.zi << "/" << sum.zm << endl;
            return sum;
        }//加法
        Fen operator-(Fen q)
        {
            Fen ca;
            
            if (zm == q.zm)
            {
                ca.zm = zm;
                ca.zi = zi - q.zi;
            }
            else if (zm != q.zm)
            {
                ca.zm = zm * q.zm;
                ca.zi = zi * q.zm - q.zi * zm;
            }
            cout << zi << "/" << zm << "-" << q.zi << "/" << q.zm << "=" << ca.zi << "/" << ca.zm << endl;
            return ca;
        }//减法
        int operator>(Fen q)
        {
            if (zm == q.zm)
            {
                if (zi > q.zi) return 1;
            }
            if (zm != q.zm)
            {
                if (zi * q.zm > q.zi * zm) return 1;
            }
            return 0;
        }//比较大小
        void show()
        {
            int t, u, r;
            t = zi;
            u = zm;
            if (zi == 0)
            {
                cout << '0' << endl;
            }
            if (zi >= zm)
            {
                if (zi % zm == 0)
                {
                    cout << (zi / zm) << endl;
                }
                if (zi % zm != 0)
                {
                    while (zi % zm != 0)
                    {
                        r = zm;
                        zm = zi % zm;
                        zi = r;
    
                    }
                    cout << (t / zm) << "/" << (u / zm) << endl;
                }
            }
            if (zi < zm)
            {
                if (zm % zi == 0)
                {
                    cout << "1" << "/" << (zm / zi) << endl;
                }
                if (zm % zi != 0)
                {
                    while (zm % zi != 0)
                    {
                        r = zi;
                        zi = zm % zi;
                        zm = r;
                    }
                    cout << (t / zi) << "/" << (u / zi) << endl;
                }
            }
        }
    };
    int main() {
        int n, m, c, d;
        cin >> n >> m >> c >> d;
        Fen a(n, m), b(c, d), s, ca;
        a.dao();
        a.show();
        s = a + b;
        s.show();
        ca = a - b;
        ca.show();
        cout << (a > b) << endl;
        system("pause");
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 请提交代码 4月7日
  • 创建了问题 4月7日

悬赏问题

  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?
  • ¥15 QTOF MSE数据分析
  • ¥15 平板录音机录音问题解决
  • ¥15 请问维特智能的安卓APP在手机上存储传感器数据后,如何找到它的存储路径?