问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++定义一个有理数类,实现有理数的加减乘除以及化简成最简分数等怎么编码?

发布网友 发布时间:2022-05-19 07:55

我来回答

1个回答

热心网友 时间:2023-10-09 02:53

看看这个:
#include<iostream>
using namespace std;

class Rationalnumber; //提前声明
ostream& operator<<(ostream& out,Rationalnumber& ofs);

class Rationalnumber //分数
{
int fz,fm; //分子,分母
int Gcd(); //求fz和fm的最大公约数
public:
Rationalnumber(); //无参构造函数,创建1/1对象
Rationalnumber(int pfz,int pfm=1);//pfz为分子,pfm为分母
void Set(int pfz,int pfm); //设置值:pfz为分子,pfm为分母
void Display(); //输出形如"x/y"的分数
void Division();//约分
double ToDec(); //化为小数

Rationalnumber operator+(Rationalnumber& ofs);// 重载+
Rationalnumber operator-(Rationalnumber& ofs);// 重载-
Rationalnumber operator*(Rationalnumber& ofs);// 重载*
Rationalnumber operator/(Rationalnumber& ofs);// 重载/

Rationalnumber& operator+=(Rationalnumber& ofs);
Rationalnumber& operator-=(Rationalnumber& ofs);
Rationalnumber& operator*=(Rationalnumber& ofs);
Rationalnumber& operator/=(Rationalnumber& ofs);

friend ostream& operator<<(ostream& out,Rationalnumber& ofs);

}; //End Of class Rationalnumber

int Rationalnumber::Gcd(){
int x=abs(fz),y=abs(fm),r;
r=x % y;
while( r!=0 ){
x=y; y=r; r=x % y;
}
return y;
}

Rationalnumber::Rationalnumber(){ //无参构造函数,创建1/1对象
fz=1; fm=1;
}

Rationalnumber::Rationalnumber(int pfz,int pfm){//pfz为分子,pfm为分母
fz=pfz; fm=pfm;
}

void Rationalnumber::Set(int pfz,int pfm){ //设置值:pfz为分子,pfm为分母
fz=pfz; fm=pfm;
Division(); //约分
}

void Rationalnumber::Display(){//输出形如"x/y"的分数
cout <<fz <<'/' <<fm <<endl;
}

void Rationalnumber::Division(){//约分
int t=Gcd();
fz/=t; fm/=t;
if(fm<0) { fz=-fz; fm=-fm; } //使负号在分子上
}

double Rationalnumber::ToDec(){ //化为小数
return double(fz)/fm;
}

Rationalnumber Rationalnumber::operator+(Rationalnumber& ofs){ //重载+
Rationalnumber t;
t.fz=fz*ofs.fm+ofs.fz*fm;
t.fm=fm*ofs.fm;
t.Division(); //约分
return t;
}

Rationalnumber Rationalnumber::operator-(Rationalnumber& ofs){ //重载-
Rationalnumber t;
t.fz=fz*ofs.fm-ofs.fz*fm;
t.fm=fm*ofs.fm;
t.Division(); //约分
return t;
}

Rationalnumber Rationalnumber::operator*(Rationalnumber& ofs){ //重载*
Rationalnumber t;
t.fz=fz*ofs.fz; t.fm=fm*ofs.fm;
t.Division(); //约分
return t;
}

Rationalnumber Rationalnumber::operator/(Rationalnumber& ofs){ //重载/
Rationalnumber t;
t.fz=fz*ofs.fm; t.fm=fm*ofs.fz;
t.Division(); //约分
return t;
}

Rationalnumber& Rationalnumber::operator+=(Rationalnumber& ofs){
Rationalnumber t(*this);
fz=t.fz*ofs.fm+ofs.fz*t.fm;
fm=t.fm*ofs.fm;
Division(); //约分
return *this;
}

Rationalnumber& Rationalnumber::operator-=(Rationalnumber& ofs){
Rationalnumber t(*this);
fz=t.fz*ofs.fm-ofs.fz*t.fm;
fm=t.fm*ofs.fm;
Division(); //约分
return *this;
}

Rationalnumber& Rationalnumber::operator*=(Rationalnumber& ofs){
Rationalnumber t(*this);
fz=t.fz*ofs.fz; fm=t.fm*ofs.fm;
Division(); //约分
return *this;
}

Rationalnumber& Rationalnumber::operator/=(Rationalnumber& ofs){
Rationalnumber t(*this);
fz=t.fz*ofs.fm; fm=t.fm*ofs.fz;
Division(); //约分
return *this;
}

ostream& operator<<(ostream& out,Rationalnumber& ofs){
ofs.Display();
return out;
}

void main()
{
Rationalnumber fs1(1,2),fs2(1,3),fs3,fs4,fs5,fs6;
fs3=fs1+fs2;
fs4=fs1-fs2;
fs5=fs1*fs2;
fs6=fs1/fs2;
cout <<"fs1=" <<fs1;
cout <<"fs2=" <<fs2;
cout <<"fs3=fs1+fs2=" <<fs3;
cout <<"fs4=fs1-fs2=" <<fs4;
cout <<"fs5=fs1*fs2=" <<fs5;
cout <<"fs6=fs1/fs2=" <<fs6;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我的眉毛中部有几根会往上翘有什么说法吗? 儿童补铁的药哪种效果最好? 儿童补铁口服液哪个牌子好 台湾的共享单车有人用过吗,想知道他们用的哪款车坐垫用的是哪家的,和... city bike和roadbike区别 报春花怎样扦播 电脑连接上无线网络不能上qq为什么电脑连上无线网却只能登qq 能上网但是不能上qq,是什么原因? 金山网盾、金山网镖、金山毒霸、金山清理专家四个软件哪个防护好一点... 上网的时候,金山网镖、金山网盾和金山毒霸这三个程序需要都开着吗? PFM1N70Y是什么型号的管子?主要性能参数是多少? 一种饮料大瓶装(1200ml)售价8元,小瓶装(200ml)售价2元,三家商店为促销此种饮料,推出 500毫升的饮料卖2元2升装的卖6元买哪种比较合算 一种饮料有三种包装,100毫升的每瓶2元,250毫升的每瓶售价4元,1升的每瓶售价15元,哪种包装 一种饮料有两种包装200mL2元1盒250mL3元1瓶购买哪种更合算 一种饮料,大瓶装1200毫升售价10元,小瓶装200毫升售价2元。三家商店为了促销这种饮料, 两种饮料一共买25瓶,茶饮料2元,橙汁3元。只有65元,正好用完。怎么做? 她们发现同一种新品牌饮料的价格都相同,这种饮料大瓶装(1200ML)售价10元,小瓶装(200ML)售价2元。 有一种饮料,大瓶装(1200mL)标价10元,小瓶装(200mL)标价2元。三家商店为了促销,分别推出了优惠措施 饮料2元1瓶, 4个瓶盖换1瓶 2个空瓶换一瓶 10元能喝多少瓶? 可口可乐推出LOL限量饮料 22元一瓶买不买 商店里500毫升的饮料卖2元一瓶,2升装的卖6元一瓶。买哪一种比较合算 一种饮料有三种包装,100毫升的每瓶2元,250毫的每瓶售价4元,1升的每瓶售价15元,哪种包装的 2块钱能买什么饮料 无陷小汤圆 玉米 青豆 想在一起煲汤不知道怎样做,求各位知道的给说一下 谢谢了 梦见二哥被蜂子蛰怎么回事 梦见门前柱子着火后柱子消失 插组词梦见床头见大火&#xF525;是什么意思…… 梦见我家的柱子被火烧起来一根了, 繁体字翻译器 口腔PFM是什么? 《村里有只白骨精》全集_by清歌一片_txt下载免费全文阅读 DHPFM889-1路由器如何恢复出厂设置? c++定义一个有理数类,实现有理数的加减乘除以及化简成最简分数等,要代码。问题解决了还会加分。 幕府将军2用PFM 如何修改建筑提供的食物数量。比如田之提供一个食物,怎么修改为一级的都提供2个货更多。 台版恶作剧之吻1-2部360资源,百度云也可以,拜托啦 《豪门第一暖妻》txt下载在线阅读全文,求百度网盘云资源 我用UG导出IGS格式,再用Cimatron转换器转换成pfm格式,但是转换过去之后却什么都没有,请高手指点下这是 苹果序列号dx4l7q7pfmld型号mf266ch&#47;a 可以帮我查一查是不是真的 有一首日语歌,叫time to say goodbye.男女合唱的. 一碧千里是指绿的范围还是指绿的广漠 形容绿的范围广四字成语 ”一碧千里&quot;和“翠色欲流”都是描写绿的什么?什么是描写绿的形态? 含“绿”的意思的四个词语:形容绿的时间长 形容绿的范围广 形容绿的程度深 草原一碧千里是描写绿的范围吗 一碧千里和翠色欲流的异同 一什么千里形容范围广? 在天底下,碧千里,而并不茫茫。句中哪一词表示绿的范围广? 一碧千里 天涯碧草 翠色欲流 万古长青 【 】是描写绿的颜色的 【 】是描写绿的状态的 一碧千里和翠色欲流都是描写绿的,其中什么是描写绿的范围,什么是绿色的形态