1、)运算符,使得对有理数可以直接输入输出。设有理数输入格式为:整数1 整数2 /整数1为分子,整数2为分母有理数输出格式为:分子/分母以下为代码#includeconio.hstdio.hiomanip.h/using namespace std; 删除此处才能为类定义友元函数class rationalnumber /定义一个有理数类private: int fenmu; /有理数分母 int fenzi; /有理数分子public: rationalnumber(int a=1,int b=1); /带默认形参的构造函数 void setnumber(int a,int b); /设置分子分
2、母的函数 rationalnumber operator +(rationalnumber aa); /重载加法运算符 rationalnumber operator -(rationalnumber aa); /重载减法运算符 rationalnumber operator *(rationalnumber aa); /重载乘法运算符 rationalnumber operator /(rationalnumber aa); /重载除法运算符 void display(); /有理数输出函数/ friend void add(rationalnumber a,rationalnumber b
3、); friend rationalnumber& yuefen(rationalnumber& r); /将约分函数设为友元函数 friend double zhuan(rationalnumber r); /将有理数转换成实数函数声明 friend istream& operator(istream& input,rationalnumber & /对输入流符号的重载为有元函数 friend ostream& operator(ostream& output,rationalnumber & /对输出流符号的重载为友元函数/* 对“”重载的函数形式如下:只能重载为友元函数 istream
4、&,自定义类&); ostream &*/;rationalnumber:rationalnumber(int a,int b) fenzi=a; fenmu=b; void rationalnumber:setnumber(int a,int b)rationalnumber rationalnumber:operator +(rationalnumber aa) rationalnumber c; c.fenmu=fenmu*aa.fenmu; c.fenzi=fenzi*aa.fenmu+aa.fenzi*fenmu; return c;operator -(rationalnumber
5、 aa) c.fenzi=fenzi*aa.fenmu-aa.fenzi*fenmu;operator *(rationalnumber aa) c.fenzi=fenzi*aa.fenzi;operator /(rationalnumber aa) c.fenmu=fenmu*aa.fenzi; c.fenzi=fenzi*aa.fenmu;display() /有理数输出函数的实现 coutfenzi/fenmuendl;ostream & r) /对输出符号的重载实现 if(r.fenmu0) r.fenmu=-1*r.fenmu; output-(r.fenzir.fenmu); el
6、se if(r.fenzi r.fenzi=-1*r.fenzi; else( return output;istream & r) /对输入流符号的重载实现/ coutr.fenzir.fenmu; return input;double zhuan(rationalnumber r) /将有理数转换成实数的函数实现 return static_cast(r.fenzi*1.0)/static_castr.fenzi) a=r.fenmu; b=r.fenzi; a=r.fenzi; b=r.fenmu; while(b!=0) temp=a%b; a=b; b=temp; r.fenzi=
7、r.fenzi/a; r.fenmu=r.fenmu/a; return r;void add() rationalnumber a; rationalnumber b;进行有理数的加法运算输入第一个有理数: cina;输入第二个有理数:b;yuefen(a)+yuefen(b)=yuefen(a+b)void jian()进行有理数的减法运算-yuefen(a-b)void cheng()进行有理数的乘法运算*yuefen(a*b)void chu()yuefen(a/b)void menu()-1.有理数加法运算-2.有理数减法运算- -3.有理数乘法运算-4.有理数除法运算-5.退出运算
8、-char xuan() char c; while(1) menu(); c=getch(); switch(c) case1add();break;2jian();3cheng();4chu();5 if(c=) break; else ;int main() system(color 0A以下有理数输出形式均为(a/b) rationalnumber r1(3,5),r2(2,9),r3,r4;r1和r2由带参数的构造函数创建r1: r1 r2:r2r3和r4由键盘输入 (按任意键开始从键盘输入) getch();输入r3:r3;输入r4:r4; r3:yuefen(r3) r4:yuefen(r4) 转换成实数为:setprecision(2)zhuan(r1)r2:zhuan(r2)r3:r3zhuan(r3)r4:r4zhuan(r4)r1+r2:yuefen(r1)yuefen(r2)yuefen(r1+r2)r2-r3:yuefen(r2-r3)r3*r4:yuefen(r3*r4)r2/r4:yuefen(r2/r4)你想做有理数的简单运算吗?(y/n) c=getch(); if(c=y c=xuan(); else if(c=n break; ; 已经退出运算,按任意键退出程序cls成功退出! return 0;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2