1
定义一个有理数类。一个有理数类是一个可以表示成两个整数相除的数,如1/2、2/3、4/5。一个有理数类有两个整数成员表示:分子和分母。要求实现以下功能,每项10分:
(1)定义合适的构造函数完成有理数初始化。
(2)能以“1/2”这种样式输出有理数。
(3)重载运算符+,实现两个有理数的加法:a/b+c/d=(ad+bc)/(bd)(4)重载运算符-,实现两个有理数的减法:a/b-c/d=(ad-bc)/(bd)(5)重载运算符,实现两个有理数的乘法:(a/b)(c/d)=(ac)/(bd)(6)重载运算符/,实现两个有理数的除法: (a/b)/(c/d)=(ad)/(cb)(7)重载运算符==,判断两个有理数是否相等
(8)重载运算符>,判断两个有理数的大小(9)重载运算符~,求有理数的相反数;(10)重载运算符!,求有理数的倒数。
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class rational
{
public:
rational(){int m=1;int z=0;}
rational operator +(rational t);
rational operator -(rational t);
rational operator *(rational t);
rational operator /(rational t);
rational operator ==(rational t);
rational operator >(rational t);
rational operator ~();
rational operator !();
void out();
void normalize();
private:
int m,z;//分母,分子
};
rational::rational(int m,int z)
{
num=n;
denom=z;
normalize();
}
void rational::normalize()
{
int i=2;
while (i<=m&&i<=z)
{
if(m%i==0&&z%i==0)
{
m=m/i;
z=z/i;
}
else
i++;
}
}
void rational::out()
{
cout<<"输出结果";
if(z=0)
cout<<"0"<<endl;
else if(m=1)
cout<<z<<endl;
else
cout<<z<<"/"<<m<<endl;
}
rational rational::operator +(rational t);{
rational s;
s.m=m*t.m;
s.z=z*t.m+m*t.z;
return s;
}
rational rational::operator-(rational t){
rational s;
s.m=m*t.m;
s.z=z*t.m-m*t.z;
return s;
}
rational rational::operator*(rational t){
rational s;
s.m=m*t.m;
s.z=z*t.z;
return s;
}
rational rational::operator/(rational t){
rational s;
s.m=m*t.z;
s.z=z*t.m;
return s;
}
/*int rational::operator==(rational t){
t.z=t.z*m;//传入的数据t通分后的分子
z=t.m*z;
if(t.z==z)
return 1;
else
return 0;
}
int rational::operator>(rational t){
t.z=t.z*m;
z=t.m*z;
if(t.z>z)//传入的数据大于已有数据
return 1;
else
return 0;
}
void rational::operator~(rational t){
t.z=-1*t.z;
return t;
}
void rational::operator!(rational t){
z=t.m;
m=t.z;
}*/
int main() {
rational r,l;//定义有理数
cout<<"输入第一个有理数"<<endl;
int a,b;
rational r(a,b);
cin>>a>>b;
cout<<"输入第二个有理数"<<endl;
int c,d;
rational l(c,d);
cin>>c>>d;
rational m;
m=r+l;//加法
m.normalize();
cout<<"相加:"
m.out();//输出结果
m=r-l;//减法
m.normalize();
cout<<"相减:"
m.out();//输出结果
m=r*l;//乘法
m.normalize();
cout<<"相乘:"
m.out();//输出结果
m=r/l;//除法
m.normalize();
cout<<"相除:"
m.out();//输出结果
return 0;//结束程序
}
不知道为啥报错,有人解答一下吗