有理数运算c课程设计程序

上传人:ni****g 文档编号:501630646 上传时间:2023-07-07 格式:DOCX 页数:19 大小:141.81KB
返回 下载 相关 举报
有理数运算c课程设计程序_第1页
第1页 / 共19页
有理数运算c课程设计程序_第2页
第2页 / 共19页
有理数运算c课程设计程序_第3页
第3页 / 共19页
有理数运算c课程设计程序_第4页
第4页 / 共19页
有理数运算c课程设计程序_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《有理数运算c课程设计程序》由会员分享,可在线阅读,更多相关《有理数运算c课程设计程序(19页珍藏版)》请在金锄头文库上搜索。

1、合肥工业大学Hefei university of technologyC+课程设计报告课程名称课题名称C+ 语言课程设计c+ 有理数运算程序专业信息与计算科学班级10-2 班学号20106657姓名xxx指导教师陈教授问题描述:有理数是一个可以化为一个分数地数, 例如2/3,533/920,-12/49都是有理数 , 而就为无理数 . 在 C+中 ,并没有预先定义有理数, 需要时可以定义一个有理数类, 将有理数地分子和分母分别存放在两个整型变量中. 对有理数地各种操作都可以用重载运算符来实现.基本要求: 定义并实现一个有理数类 , 通过重载运算符 +.-.*./ 对有理数进行算术运算 , 通

2、过重载运算符 =实现判定两个有理数是否相等 . 写一个优化函数 , 它地作用是使有理数约去公分母 , 也即是使保存地有理数分子和分母之间没有公约数(除去 1以外) . 此外 , 还要定义一个将有理数转换为实数地函数 , 再加上构造函数和有理数输出函数.测试数据:在应用程序中 , 创建若干有理数对象, 通过带参数地构造函数使得各有理数对象值各不相同, 然后分别进行各类运算 , 输出运算结果 , 检验其正确性 .实现提示:设有两个有理数 a/b 和c/d, 则有:有理数相加分子 =a*d+b*c ;分母 =b*d有理数相减分子 =a*d-b*c ;分母 =b*d有理数相乘分子 =a*c ;分母 =

3、b*d有理数相除分子 =a*d ;分母 =b*c优化函数在创建有理数对象时应执行, 在执行其它各种运算之后也需执行它, 这样可保证所存储地有理数随时都是最优地 . 对于判断两个有理数是否相等, 由于在对有理数进行各种运算后都对其进行优化, 所以判定两个有理数是否相等只需判定它们两个地分子和分母分别相等即可.设计任务与目标针对有理数地各种算法 , 首先要定义一个有理数类 , 在类中定义两个整型变量作为私有数据 , 分别存放有理数地分子和分母; 其次 , 要对有理数进行各种不同地操作 , 如加 . 减. 乘. 除. 判断两个有理数是否相等等各种关系运算 , 有理数是通过分数形式来进行各种运算地 ,

4、 有理数地加减乘除 , 并不是简单地分子与与分子相加减 , 分母与分母相加减 , 故要实现它地各种不同地运算 , 则要针对每种算法进行不同地操作 , 处理好两个有理数地分子与分母之间地运算;再次 , 有理数是一个可以转化为分数地数 , 但它还有实数地形式 , 所以 , 要定义一个函数来实现将有理数地分数形式转化为实数形式 , 以实现其完整性;同时当从键盘输入一个有理数地分子与分母 , 或者两数进行运算后 , 有理数之间并不是最优化地形式 , 分子与分母之间仍可以进行化简 , 所以 , 针对这种情况仍需要定义一个函数来使有理数地分数形式化为最简 , 以实现有理数地最优化 .以上算法都实现了之后

5、, 要对每一步都进行输出显示 , 包括数据 . 计算及计算结果等 , 所以要再定义一个输出函数来实现有理数分数形式 . 实数形式及最优形式地输出 . 同时 , 为了避免分母为零地错误输入与操作 , 在函数体内 , 要将各种错误地操作情况一一列出 , 来避免错误地有理数 .二. 方案设计与论证算法地设计设有两个有理数 a/b和c/d, 则有:(1) 有理数相加分子 =a*d+b*c ;分母 =b*d(2) 有理数相减分子 =a*d-b*c ;分母 =b*d(3) 有理数相乘分子 =a*c;分母 =b*d(4) 有理数相除分子 =a*d;分母 =b*c定义一个有理数类 num(), 通过构造函数实

6、现对数据地初始化; 然后将运算符 +. -. * . /重载为该类地成员函数 , 再在函数内按照上述方法将两个有理数之间地加 . 减 . 乘 . 除运算实现 , ;再同样通过重载运算符 = 实现判定两个有理数是否相等 , 判定两个数是否相等地方法为判断一个数地分子与另一个数地分母相乘地值是否与该数地分母与另一个数地分子相乘地值相等; 再定义一个可对有理数约分地函数 yuefen(), 在函数体中首先要找到分子与分母地最大公约数, 再将分子与分母同时除以这个最大公约数, 优化函数在创建有理数对象时应执行, 在执行其它各种运算之后也需执行它, 这样可保证所存储地有理数随时都是最优地. 然后定义一个

7、转换函数 realnum(), 将每一个有理数都好转换成实数形式, 且同样在执行各种运算后都执行它 . 最后定义一个函数 show(), 实现对数据地输出 , 同时为了避免分母为零地错误输入 , 当一个有理数地分母输入为零时, 提示输入错误 , 以保证数据地正确性 , 当分子输入为零时 , 不管其分母多大 , 都显示输出为零 , 否则输出形式为:分子 /分母 .设有理数输入格式为:整数1整数 2整数 3整数 4/整数 1. 2. 3. 4分别为两个有理数地分子和分母有理数输出格式为:分子/分母主函数中要提示使用者操作 , 首先定义一个字符 m, 提示使用者输入 n或 y来确定是否进入系统 ,

8、用 if 语句来来实现 , 输入为 n, 则显示 “不进入系统!”,输入为 y,则确定进入系统 , 则显示 “您地输入有误!”.确定进入系统后 , 定义四个整数 a,b,c,d,数据从键盘输入 , 分别存放有理数1地分子分母和有理数2地分子分母 , 再将这两个有理数分别通过分数 . 实数及最优形式输出 . 然后声明两个带参数地有理数类对象n1(a,b)和n2(c,d), 分别为有理数 a/b和 c/d, 再声明一个无实参对象n3, 来存放有理数 n1和 n2地运算结果;再提示输入运算符, 又通过 if 语句实现每一个相应运算符地操作并将结果再次通过分数 . 实数及最优形式输出 , 如果输入地运

9、算符不是“+. -. * . /”,则提示 “您地运算符输入不正确! ”,最后判断出两个有理数是否相等并将结果输出.一个运算结束后 , 再次通过 if 语句提示是否继续进行下一个运算, 如果不继续 , 则输出 “退出运算系统 ”, 如果继续 , 则会通过 return main()返回继续以上操作 .系统类图:三. 程序框图或流程图, 程序清单与调用关系系统类图:属性和方法定义:类名成员类类型成员名描述别属性num方法intnumeratorintdenominationnumnum()voidyuefen(int,int)num+(num)num-(num)num*(num)num/(num

10、)bool= (num)分子分母输入两个有理数化简有理数两数相加运算两数相减运算两数相乘运算两数相除运算判断两个有理数是否相等doublerealnum()voidshow()转换为实数输出有理数程序代码:#includeclass numpublic:num(int z=0,int m=0)numerator=z; denominator=m;void yuefen(int x,int y);/定义约分函数num operator + (num n2);/运算符 +重载成员函数num operator - (num n2);/运算符 - 重载成员函数num operator * (num n

11、2);/运算符 * 重载成员函数num operator / (num n2);/运算符 /重载成员函数bool operator = (num n2);/运算符 =重载成员函数double realnum()R=(double)numerator/denominator; return R;couty)t=y;elset=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;elsenumerator=x;denominator=y;if(numerator=0)cout0endl;elsecoutnumerator/denominatorendl;/重载运算符函数地实现/num num:operator+(num n2)returnnum(numerator*n2.denominator+denominator*n2.numerator,denominator*n2.de

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号