永发信息网

C++关于分数的问题

答案:1  悬赏:40  手机版
解决时间 2021-10-21 10:27
  • 提问者网友:回忆在搜索
  • 2021-10-21 00:56
C++关于分数的问题
最佳答案
  • 五星知识达人网友:duile
  • 2021-10-21 01:59
//约最间分数 void ye(Fraction &x){ int a,b,c; a=x.fenzhi; b=x.fenmu; c=b%a; while(c!=0){ a=c; b=a; c=b%a; } if(a!=1){ x.fenzhi/=a; x.fenmu/=a; } if(x.fenmu<0){ x.fenzhi=-x.fenzhi; x.fenmu=-x.fenmu; } } 上面有错误! 正确如下:自己找找错在什么地方! #include<iostream.h> #include <stdio.h> #include <stdlib.h> struct Fraction{ int fenzhi; int fenmu; }; //约最间分数 void ye(Fraction &x){ int a,b,c; a=x.fenzhi; b=x.fenmu; c=b%a; while(c!=0){ b=a; a=c; c=b%a; } if(a!=1){ x.fenzhi/=a; x.fenmu/=a; } if(x.fenmu<0){ x.fenzhi=-x.fenzhi; x.fenmu=-x.fenmu; } } //分数相加 Fraction fenj(const Fraction &x,const Fraction &y){ Fraction c; c.fenzhi=x.fenzhi*y.fenmu+y.fenzhi*x.fenmu; c.fenmu=x.fenmu*y.fenmu; //ye(c); return c; } //判断两分数是否相等 int pand(Fraction &x,Fraction &y){ return x.fenzhi*y.fenmu==y.fenzhi*x.fenmu; } //显示输出一个分数 void fensOut(Fraction &x){ cout<<x.fenzhi<<'/'<<x.fenmu; } //输入一个分数 void fensInput(Fraction &x){ cin>>x.fenzhi>>x.fenmu; if(x.fenmu<0){ cout<<"分母不能为0!"; exit(1); } ye(x); } void main(){ Fraction a,b,c; fensInput(a); fensInput(b); c=fenj(a,b); cout<<c.fenzhi<<'/'<<c.fenmu<<endl; if(pand(a,b)){ cout<<"Equ分数相等"<<endl; } else{ cout<<"UnEqu分数不相等"<<endl;; } }我分别输入两个分数1/2,3/6 它得出的两个分数相加的结果却是:4/4 相等 为何得的是这个?应该是12/12 相等 哪来的4/4啊??? 3/6=1/2是约分后得到的结果。所以1/2+1/2=4/4而不是12/12。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯