c++分数类

定义分数类://fraction.h#include<iostream.h>classfraction{private:intabove;intbelow;public:... 定义分数类:
//fraction.h
#include <iostream.h>
class fraction{
private:
int above;
int below;
public:
fraction(int a=0,int b=1){above=a;below=b;}
friend ostream& operator<<(ostream& os, fraction& com);
friend istream& operator>>(istream& is, fraction& com);
friend fraction operator+(fraction& x, fraction& y);
};

ostream& operator<<(ostream& os,fraction&com)
{
os<<com.above<<"/"<<com.below<<endl;
return os;
}

istream& operator>>(istream& is, fraction&com)
{
is >> com.above >>com.below;
return is;
}
fraction operator+(fraction& x, fraction& y)
{
fraction temp(x.above*y.below+y.above*x.below,y.below*x.below);
return temp;
}//使用以下代码编程:
#include "fraction.h"
#include <iostream.h>
int main()
{
fraction f1(-2,-3),f2,f3,f4,f5(6);
cin>>f2; //input: -2 3
cout << "f1=" << f1 << endl;
cout << "f2=" << f2 << endl;
f3=f1+f2;
f4=f1+1;
f5=3+f2;
cout << "f3=" << f3 << endl;
cout << "f4=" << f4 << endl;
cout << "f5=" << f5 << endl;
return 0;
}
//运行程序,输入: -2 3 将得到以下结果::
f1=2/3
f2=-2/3
f3=0
f4=5/3
f5=7/3
看我哪里出错了
展开
 我来答
279686030
2010-06-09 · 超过30用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:62.3万
展开全部
#include <iostream.h>
class fraction{
private:
int above;
int below;
public:
fraction(int a=0,int b=1){above=a;below=b;}
friend ostream& operator<<(ostream& os, fraction& com);
friend istream& operator>>(istream& is, fraction& com);
friend fraction operator+(fraction& x, fraction& y);
friend fraction operator+(fraction& x, int y);
friend fraction operator+( int y,fraction& x);
};

ostream& operator<<(ostream& os,fraction&com)
{
os<<com.above<<"/"<<com.below<<endl;
return os;
}

istream& operator>>(istream& is, fraction&com)
{
is >> com.above >>com.below;
return is;
}
fraction operator+(fraction& x, fraction& y)
{
fraction temp(x.above*y.below+y.above*x.below,y.below*x.below);
return temp;
}
fraction operator+(fraction& x, int y)
{
return fraction(x.above+y*x.below,x.below);
}
fraction operator+( int y,fraction& x)
{
return fraction(x.above+y*x.below,x.below);
}
int main()
{
fraction f1(-2,-3),f2,f3,f4,f5(6);
cin>>f2; //input: -2 3
cout << "f1=" << f1 << endl;
cout << "f2=" << f2 << endl;
f3=f1+f2;
f4=f1+1;
f5=3+f2;
cout << "f3=" << f3 << endl;
cout << "f4=" << f4 << endl;
cout << "f5=" << f5 << endl;
return 0;
}
帮你加了两个函数,楼主在做3+f2这种运算的时候没有对应的重载函数,似乎不能能编译通过,所以加了两个整形与分数的运算,加两个是为了满足加法的交换律,至于最后的结果,都是没有化简的,楼主可以自己修改一下!让他更完美
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式