有理数运算c++程序
更新时间:2024-01-29 13:31:01 阅读量: 教育文库 文档下载
C++ 课 程 设 计 报 告
课题名称 c++有理数运算程序 专 业 信息与计算科学 班 级 1班 学 号 20106583 姓 名 刘石清
指导教师 陈教授
1.问题描述:有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而
就为无理数。在C++中,并没有预先定义有理数,需要时可
以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。对有理数的各种操作都可以用重载运算符来实现。
2.基本要求: 定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。
3.测试数据: 在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。
4.实现提示: 设有两个有理数a/b和c/d,则有:
有理数相加 分子=a*d+b*c;分母=b*d 有理数相减 分子=a*d-b*c;分母=b*d 有理数相乘 分子=a*c; 分母=b*d 有理数相除 分子=a*d; 分母=b*c
优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等
只需判定它们两个的分子和分母分别相等即可。
属性和方法定义:
类名 成员类别 类型 成员名 描述 分子 分母 属性 int numerator denominator Rat 方法 int Rat void Rat Rat Rat Rat bool void 输入两个有理数 Rat() reduction(int,int) 化简有理数 +( Rat) -( Rat) *( Rat) /( Rat) ==( Rat) showRat() 两数相加运算 两数相减运算 两数相乘运算 两数相除运算 判断两个有理数是否相等 输出有理数
程序代码:
#include
Rat(int a=0,int b=0){numerator=a; denominator=b;}
void reduction(int x,int y); Rat operator + (Rat num2); Rat operator - (Rat num2); Rat operator * (Rat num2); Rat operator / (Rat num2); bool operator ==(Rat num2); void showRat(); private:
int numerator,denominator; };
void Rat::reduction(int x,int y)// 把 有理数进行约分。 { int t; int i; if(x>y) t=y; else t=x;
for(i=t;i>=1 ;i--) if((x%i==0)&&(y%i==0)) { t=i; break;
} if(t) {
numerator=x/t; denominator=y/t; } else {
numerator=x; denominator=y; }
if(numerator==0) cout<<\else
cout<<\有理数:\}
Rat Rat::operator+(Rat num2){ return
Rat(numerator*num2.denominator+denominator*num2.numerator,denominator*num2.denominator);} Rat Rat::operator-(Rat num2){
return
Rat(numerator*num2.denominator-denominator*num2.numerator,denominator*num2.denominator);} Rat Rat::operator*(Rat num2){ return
Rat(numerator*num2.numerator,denominator*num2.denominator);}
Rat Rat::operator/(Rat num2){ return
Rat(numerator*num2.denominator,denominator*num2.numerator);}
bool Rat::operator == (Rat num2) {
if((numerator=num2.numerator)&&(denominator=num2.denominator)) return true; else
return false; }
void Rat::showRat() {
if(numerator==0)
cout<<\ else if(denominator==0)
cout<<\分数的分母不为0,输入有误!\ else
cout< cout<<\有理数运算系统*********\ cout<<\确定是否进入系统!如果进入请输入y或者Y不进入请输入y或者N\ cin>>m; if(m=='n'||m=='N') cout<<\不进入系统!\ else if(m=='y'||m=='Y') { char s; cout<<\请输入两个有理数:\ int a,b,c,d; cin>>a>>b>>c>>d; Rat num1(a,b),num2(c,d),num3; cout<<\输入的有理数num1为:\ num1.showRat(); cout<<\化简后的num1为:\ num1.reduction(a,b); cout< cout<<\输入的有理数num2为:\ num2.showRat(); cout<<\化简后的num2为:\ num2.reduction(c,d); cout< cout<<\输入您所需要的运算符:\ cin>>s; if(s=='+') { num3=num1+num2; cout<<\操作为:n1um+num2=\ num3.showRat(); cout<<\化简后的数为:\ num3.reduction(a*d+b*c,b*d); cout< else if(s=='-') { num3=num1-num2; cout<<\操作为:num1-num2=\ num3.showRat(); cout<<\化简后的数为:\ num3.reduction(a*d-b*c,b*d); cout< else if(s=='*') { num3=num1*num2; cout<<\操作为:num1*num2=\ num3.showRat(); cout<<\化简后的数为:\ num3.reduction(a*c,b*d); cout< else if(s=='/') { num3=num1/num2; cout<<\操作为:num1/num2=\ num3.showRat(); cout<<\化简后的数为:\ num3.reduction(a*d,b*c); cout< cout<<\您输入的运算符不正确!\ cout<<\由==重载运算符知:\ if(a*d==b*c) cout<<\ else cout<<\ } else cout<<\您的输入有误!\ cout<<\运算结束,继续吗?(y or n)\ char l; cin>>l; if(l=='n'||l=='N') cout<<\退出运算系统!\ else if(l=='y'||l=='Y') return main(); else cout<<\您的输入有误!\ return 0; }
正在阅读:
有理数运算c++程序01-29
五四红旗团支部创建工作总结(彩色完整版) - 图文11-27
itunes的使用超详细图解10-09
顶岗实习自我鉴定【精品】07-21
公司会计2022年度个人工作计划范本03-24
麦肯基疗法05-21
新疆克拉玛依市独山子区社区专职工作者招聘《综合应用能力》试题和解析07-22
2020经理秘书个人工作总结(五篇模版)08-23
交际礼仪 -10-11
论张贤亮小说的创作特点01-19
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 有理数
- c++
- 运算
- 程序
- 2012年全国各地中考数学解析汇编第二十六章二次函数的应用
- 非劣效界值的确定
- 奥尔夫教材
- 红歌会领导讲话稿
- 在建工程项目施工管理综合检查表
- 计算机分形剖析 - 图文
- 苏教版四年级上学期语文学业质量监测第五单元练习卷
- 第三课 你家有几口人
- 网络信息检索与利用参考试题与答案
- 圆柱的侧面积和表面积练习题
- 生活委员个人工作总结及工作计划
- 初中英语词汇教学的实践研究结题报告
- 2015高教社杯全国大学生数学建模竞赛获奖名单 - 图文
- 2017年黑龙江省黑河市中考数学模拟试卷和解析word版(三)
- 节点重要度算法-MATLAB源代码
- 计算机温度控制课程设计 - 图文
- 2016年水利检测员继续教育混凝土
- (20份合集)泰安市2018年中考物理模拟试题 - 图文
- 公司财务风险预警模型
- 雅思阅读教师25小时授课大纲-雅思阅读剑桥4-8 - 图文