#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=ziq.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(ziq.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;
}
你的源码有部分的语法问题,我做了下修改:
1.头文件补全
2.你的代码中的加法、减法、比较大小中省略的“*”乘号,已补全
3.花括号有些地方你有些地方省略了,有些一行写完,有些是其他语法的习惯,我全部统一了,实在是看起来吃力,有点影响阅读
4.加法、减法增加了打印,打印了当前类成员分子分母的值加减传参的值
你说的有些加法是错的麻烦详细描述下,以下是我的输出和修改后的源码,希望能帮到你!!!
输出:
源码:
#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;
}
你代码格式有问题,没法帮你
#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 = q.zm;
sum.zi = q.zm + q.zi;
}
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 = q.zm;
ca.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 (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;
}
你先把if语句的使用方法和逻辑搞清楚,看着程序就头大,if zm==q.zm,然后 else if zm!=q.zm,else后面的if难道还会有其他情况?在看你程序中那么多if,又是重复,又是错开,怎么能运行正常,自己好好理理吧
肯定是代码方面出了问题,你看一下他的那个逻辑,考虑问题要全面,肯定是有哪个地方没有考虑到
代码格式有问题,建议把格式以及逻辑理清楚
先把逻辑理清楚,if{ }else if{ } else