C++分数相加 operator有问题么?

#include<cstdlib>#include<iostream>#include"fraction.h"usingnamespacestd;intmain(inta... #include <cstdlib>
#include <iostream>
#include "fraction.h"

using namespace std;

int main(int argc, char *argv[])
{
Fraction one, two;
cout<<"Please enter your first fraction: ";
cin>>one;
cout<<"You entered: "<<one<<endl;
cout<<"Please enter your second fraction: ";
cin>>two;
cout<<"You entered: "<<two<<endl;

cout<<"The sum of "<<one<<" and "<<two<<" is "<<one+two<<endl;
cout<<"The difference of "<<one<<" and "<<two<<" is "<<(one-two)<<endl;
cout<<"The product of "<<one<<" and "<<two<<" is "<<(one*two)<<endl;
cout<<"The quotient of "<<one<<" and "<<two<<" is "<<(one/two)<<endl<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}
这是我的主程序 加减乘除无法运行...
因为太长 只能把部分拿出来问...
这是+的operator
Fraction operator+(Fraction& x, Fraction &y)
{
int n = x.num * y.denom + x.denom*y.num;
int d = x.denom * y.denom;
return Fraction(n,d);
}
这是fraction.h里面的
friend Fraction operator+(Fraction& x, Fraction &y);
化简没问题 就是+-*/出error了...
Fraction& Fraction::operator=(Fraction &x)
{
if(&x == this)
return *this;
num = x.num;
denom = x.denom;
return *this;
}

Fraction operator+(Fraction& x, Fraction &y)
{
int n = x.num * y.denom + x.denom*y.num;
int d = x.denom * y.denom;
return Fraction(n,d);
}
//省略-*%
ostream& operator<<(ostream& out, Fraction &y)
{
out<<y.num<<"/"<<y.denom;
return out;
}

istream& operator>>(istream& in, Fraction &y)
{
char junk;
in>>y.num>>junk>>y.denom;
y.reduce();
return in;
}
展开
 我来答
心中风情4
2009-03-23 · TA获得超过2247个赞
知道大有可为答主
回答量:1779
采纳率:66%
帮助的人:1280万
展开全部
以下程序供参考,如有问题,请hi本人

#include <cstdlib>
#include <iostream>

using namespace std;

class Fraction;
Fraction operator+(Fraction& x, Fraction &y) ;

class Fraction
{
private:
int num, denom;

public:
Fraction():num(0),denom(1) {}
Fraction(int n, int d):num(n),denom(d) {}
Fraction& Fraction::operator=(Fraction &x) ;

void reduce() {}

friend Fraction operator+(Fraction& x, Fraction &y) ;

friend ostream& operator<<(ostream& out, Fraction &y)
{
out<<y.num<<"/"<<y.denom;
return out;
}

friend istream& operator>>(istream& in, Fraction &y)
{
char junk;
in>>y.num>>junk>>y.denom;
y.reduce();
return in;
}
};

Fraction& Fraction::operator=(Fraction &x)
{
if(&x == this)
return *this;
num = x.num;
denom = x.denom;
return *this;
}

Fraction operator+(Fraction& x, Fraction &y)
{
int n = x.num * y.denom + x.denom*y.num;
int d = x.denom * y.denom;
return Fraction(n,d);
}

int main(int argc, char *argv[])
{
Fraction one, two;
cout<<"Please enter your first fraction: ";
cin>>one;
cout<<"You entered: "<<one<<endl;
cout<<"Please enter your second fraction: ";
cin>>two;
cout<<"You entered: "<<two<<endl;

cout<<"The sum of "<<one<<" and "<<two<<" is "<<one+two<<endl;
//cout<<"The difference of "<<one<<" and "<<two<<" is "<<(one-two)<<endl;
//cout<<"The product of "<<one<<" and "<<two<<" is "<<(one*two)<<endl;
//cout<<"The quotient of "<<one<<" and "<<two<<" is "<<(one/two)<<endl<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}
匿名用户
2009-03-23
展开全部
是编译出错,还是运行处错,
楼主也不写清楚

你要把具体错误贴出来,别人才能为你修改,原因在于你这只有部分程序!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式