![]() |
#2
lianjiecuowu2011-06-12 15:17
#include<iostream>
using namespace std; class RatNum //定义一个有理数类RatNum { private: int fz; int fm; public: RatNum(){} //构造函数 ~RatNum(){} //析构函数 RatNum(int z,int m){fz=z;fm=m;cout<<"有理数为:"<<fz<<"/"<<fm<<endl;}//带参数的构造函数的定义,用于初始化对象成员的值 void set_Rat(int z,int m){fz=z;fm=m;} //对对象中的数据成员的值的设置 int get_Ratz(); //获取分子的值 int get_Ratm(); //获取分母的值 int common(); //最优函数的声明,用于约分有理数 RatNum& operator +(RatNum &R); //重载运算符函数“+”的声明;返回类型为有理数类类型; RatNum& operator -(RatNum &R); //重载运算符函数“-”的声明;返回类型为有理数类类型; RatNum& operator *(RatNum &R); //重载运算符函数“*”的声明;返回类型为有理数类类型; RatNum& operator /(RatNum &R); //重载运算符函数“/”的声明;返回类型为有理数类类型; RatNum& operator ==(RatNum &R); //重载运算符函数“==”的声明;用于判断两个有理数是否相等; double real(); //转换实数函数的声明; }; int RatNum::get_Ratz() { return fz; } int RatNum::get_Ratm() { return fm; } int RatNum::common() //创建的优化函数,提取最大公约数;并重新赋值给分子分母 { int temp,a,b,i; a=fm; b=fz; if(fz<fm) { temp=fm; //定义随机变量temp,用于交换分子分母的值,当分子比分母小时。 fm=fz; fz=temp; a=fz; b=fm; } i=fz%fm; while(i!=0) //求取最大公约数,当i等于零时,跳出循环,返回的是fm,fm是所要的最大公约数 { fz=fm; fm=i; i=fz%fm; } cout<<"化简后的有理数分数为:"<<b/fm<<"/"<<a/fm<<endl; fz=b/fm; //分子约分的结果重新赋值给分子 fm=a/fm; //分母约分的结果重新赋值给分母 return 0; } RatNum &RatNum:: operator +(RatNum &R) { fz=fz*R.fm+fm*R.fz; fm=fm*R.fm; return *this; //返回this指针,用于指向成员函数,返回分子分母的值 } RatNum &RatNum:: operator -(RatNum &R) { fz=fz*R.fm-fm*R.fz; fm=fm*R.fm; return *this; } RatNum &RatNum:: operator *(RatNum &R) { fz=fz*R.fz; fm=fm*R.fm; return *this; } RatNum &RatNum:: operator /(RatNum &R) { fz=fz*R.fm; fm=fm*R.fz; return *this; } RatNum& RatNum:: operator ==(RatNum &R) { (); if(fz==R.fz&&fm==R.fm) cout<<"这两个有理数相等"<<endl; else cout<<"这两个有理数不相等"<<endl; return *this; } double RatNum::real() //转换实数函数real()的定义; { return double(fz/fm); } int main() { RatNum R1(3,4); //创建对象 (); //优化函数,它的作用是使有理数约去公分母 RatNum R2(2,4); (); RatNum R3; R3.set_Rat(4,5); cout<<"有理数为:"<<R3.get_Ratz()<<"/"<<R3.get_Ratm()<<endl; (); RatNum R4(2,5); R4.operator +(R1); cout<<"有理数相加后的结果为:"<<R4.get_Ratz()<<"/"<<R4.get_Ratm(); (); cout<<endl<<endl; RatNum R5(5,6); R5.operator -(R1); cout<<"有理数相减后的结果为:"<<R5.get_Ratz()<<"/"<<R5.get_Ratm(); (); cout<<endl<<endl; RatNum R6(1,3); R6.operator *(R1); cout<<"有理数相乘后的结果为:"<<R6.get_Ratz()<<"/"<<R6.get_Ratm(); (); cout<<endl<<endl; RatNum R7(1,2); R7.operator /(R1); cout<<"有理数相除后的结果为:"<<R7.get_Ratz()<<"/"<<R7.get_Ratm(); (); cout<<endl<<endl; RatNum R8(4,6); (); RatNum R9(2,3); R8.operator==(R9); cout<<"这两个相等的有理数为:"<<R8.get_Ratz()<<"/"<<R8.get_Ratm(); cout<<endl<<endl; RatNum R10(1,6); RatNum R0(4,9); (); R10.operator==(R0); cout<<endl<<endl; RatNum R11(8,7); //定义对象并初始化分子分母,调用成员函数real()转换为实数。 cout<<"转换为实数后为:"<<R11.real()<<endl; system("pause"); return 0; } 嘿嘿,还是得靠自己,大功告成~~~~~ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
#include<iostream>
using namespace std;
class RatNum
{
private:
int fz;
int fm;
public:
RatNum(){}
~RatNum(){}
RatNum(int z,int m){fz=z;fm=m;cout<<"有理数为:"<<fz<<"/"<<fm<<endl;}
void set_Rat(int z,int m){fz=z;fm=m;}
int get_Ratz();
int get_Ratm();
int common();
RatNum& operator +(RatNum &R);
RatNum& operator -(RatNum &R);
RatNum& operator *(RatNum &R);
RatNum& operator /(RatNum &R);
};
int RatNum::get_Ratz()
{
return fz;
}
int RatNum::get_Ratm()
{
return fm;
}
int RatNum::common()
{
int temp,a,b,i;
if(fz<fm)
{
temp=fm;
fm=fz;
fz=temp;
}
a=fz;
b=fm;
i=fz%fm;
while(i!=0)
{
fz=fm;
fm=i;
i=fz%fm;
}
cout<<"化简后的有理数分数为:"<<b/fm<<"/"<<a/fm<<endl;
return 0;
}
RatNum &RatNum:: operator +(RatNum &R)
{
fz=fz*(R.fm)+fm*(R.fz);
fm=fm*(R.fm);
return *this;
}
RatNum &RatNum:: operator -(RatNum &R)
{
fz=fz*R.fm-fm*R.fz;
fm=fm*R.fm;
return *this;
}
RatNum &RatNum:: operator *(RatNum &R)
{
fz=fz*R.fz;
fm=fm*R.fm;
return *this;
}
RatNum &RatNum:: operator /(RatNum &R)
{
fz=fz*R.fm;
fm=fm*R.fz;
return *this;
}
int main()
{
RatNum R1(3,4);
();
RatNum R2(2,4);
();
RatNum R3;
R3.set_Rat(4,5);
cout<<"有理数为:"<<R3.get_Ratz()<<"/"<<R3.get_Ratm()<<endl;
();
RatNum R4(2,5);
R4.operator+(R1); //就是这里
cout<<"有理数相加后的结果为:"<<R4.get_Ratz()<<"/"<<R4.get_Ratm();
cout<<endl<<endl;
RatNum R5(5,6);
R5.operator-(R1); //就是这里
cout<<"有理数相减后的结果为:"<<R5.get_Ratz()<<"/"<<R5.get_Ratm();
cout<<endl<<endl;
RatNum R6(1,3);
R6.operator*(R1); //就是这里
cout<<"有理数相乘后的结果为:"<<R6.get_Ratz()<<"/"<<R6.get_Ratm();
cout<<endl<<endl;
RatNum R7(1,2);
R7.operator/(R1); //就是这里
cout<<"有理数相除后的结果为:"<<R7.get_Ratz()<<"/"<<R7.get_Ratm();
cout<<endl<<endl;
system("pause");
return 0;
}