有理数四则运算_第1页
有理数四则运算_第2页
有理数四则运算_第3页
有理数四则运算_第4页
有理数四则运算_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合作业报告综合作业报告 一 一 试验目的 试验环境 设计思路 试验目的 试验环境 设计思路 实验目的 掌握面向过程和面向对象程序设计的基本方法和编程技巧 巩 固所学理论知识 使理论与实际相结合 从而提高自我分析问题 解决问题的 能力 通过课程设计 进一步巩固 C 语言程序设计 的基本理论知识 理论 联系实际 进一步培养综合分析问题 解决问题的能力 实验环境 VisuaiC 6 0 设计思路 定义一个有理数类 num 通过构造函数实现对数据的初始化 然后将运算符 重载为该类的成员函数 再在函数内按照上述方法将 两个有理数之间的加 减 乘 除运算实现 再同样通过重载运算符 实现判 定两个有理数是否相等 判定两个数是否相等的方法为判断一个数的分子与另 一个数的分母相乘的值是否与该数的分母与另一个数的分子相乘的值相等 再 定义一个可对有理数约分的函数 yuefen 在函数体中首先要找到分子与分母 的最大公约数 再将分子与分母同时除以这个最大公约数 优化函数在创建有 理数对象时应执行 在执行其它各种运算之后也需执行它 这样可保证所存储 的有理数随时都是最优的 然后定义一个转换函数 realnum 将每一个有理 数都好转换成实数形式 且同样在执行各种运算后都执行它 最后定义一个函 数 show 实现对数据的输出 同时为了避免分母为零的错误输入 当一个有 理数的分母输入为零时 提示输入错误 以保证数据的正确性 当分子输入为 零时 不管其分母多大 都显示输出为零 否则输出形式为 分子 分母 二 功能模块及结构描述功能模块及结构描述 函数功能和数据结构类型的定义 设有两个有理数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 通过构造函数实现对数据的初始化 然后将运算 符 重载为该类的成员函数 再在函数内按照上述方法将两个有理数 之间的加 减 乘 除运算实现 再同样通过重载运算符 实现判定两个有 理数是否相等 判定两个数是否相等的方法为判断一个数的分子与另一个数的 分母相乘的值是否与该数的分母与另一个数的分子相乘的值相等 再定义一个 可对有理数约分的函数yuefen 在函数体中首先要找到分子与分母的最大公 约数 再将分子与分母同时除以这个最大公约数 优化函数在创建有理数对象 时应执行 在执行其它各种运算之后也需执行它 这样可保证所存储的有理数 随时都是最优的 然后定义一个转换函数realnum 将每一个有理数都好转换 成实数形式 且同样在执行各种运算后都执行它 最后定义一个函数show 实现对数据的输出 同时为了避免分母为零的错误输入 当一个有理数的分母 输入为零时 提示输入错误 以保证数据的正确性 当分子输入为零时 不管 其分母多大 都显示输出为零 否则输出形式为 分子 分母 设有理数输入格式为 整数1 整数2 整数3 整数4 整数 1 2 3 4分别为两个有理数的分子和分母 有理数输出格式为 分子 分母 三 流程描述流程描述 函数流程图 属性和方法定义 类名成员类 别 类型成员名描述 intnumerator 分子 属性 int denomination 分母 num num 输入两个有理数 void yuefen int int 化简有理数 num num 两数相加运算 num num 两数相减运算 num num 两数相乘运算 num num 两数相除运算 bool num 判断两个有理数是否相 等 double realnum 转换为实数 num 方法 void show 输出有理数 四 源代码 源代码 include class num public 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 n2 运算符 重载成员函数 num operator num n2 运算符 重载成员函数 bool operator num n2 运算符 重载成员函数 double realnum R double numerator denominator return R cout y t y else t x for i t i 1 i if x i 0 break if t numerator x t denominator y t else numerator x denominator y if numerator 0 cout 0 endl else cout numerator denominator endl 重载运算符函数的 实现 num num operator num n2 return num numerator n2 denominator denominator n2 numerator denominator n2 denominator num num operator num n2 return num numerator n2 denominator denominator n2 numerator denominator n2 denominator num num operator num n2 return num numerator n2 numerator denominator n2 denominator num num operator num n2 return num numerator n2 denominator denominator n2 numerator bool num operator num n2 if numerator n2 numerator else return false void num show 显示输出函数 if numerator 0 cout 0 endl else if denominator 0 cout 您的输入有误 endl else cout numerator denominator endl 主 函数 int main char m cout 有理数运算程 序 endl cout 确定进入系统 Y N m if m n m N cout 不进入系统 endl else if m y m Y char n cout a b c d num n1 a b n2 c d n3 cout 您所输入的有理数n1为 n1 show cout 化简后的n1为 n1 yuefen a b cout 转化为实数后的n1为 n1 realnum endl cout 您所输入的有理数n2为 n2 show cout 化简后的n2为 n2 yuefen c d cout 转化为实数后的n2为 n2 realnum endl cout n if n n3 n1 n2 cout 您所需的操作为 n1 n2 n3 show cout 化简后的数为 n3 yuefen a d b c b d cout 转化为实数后为 n3 realnum endl else if n n3 n1 n2 cout 您所需的操作为 n1 n2 n3 show cout 化简后的数为 n3 yuefen a d b c b d cout 转化为实数后为 n3 realnum endl else if n n3 n1 n2 cout 您所需的操作为 n1 n2 n3 show cout 化简后的数为 n3 yuefen a c b d cout 转化为实数后为 n3 realnum endl else if n n3 n1 n2 cout 您所需的操作为 n1 n2 n3 show cout 化简后的数为 n3 yuefen a d b c cout 转化为实数后为 n3 realnum endl else cout 您输入的运算符不正确 endl cout 由 重载运算符知 if a d b c cout n1 n2 endl else cout n1 n2 endl else cout 您的输入有误 endl cout p if p n p N cout 退出运算系统 endl else if p y p Y return main else cout 您的输入有误 endl return 0 五 五 使用说明 使用说明 主函数中要提示使用者操作 首先定义一个字符m 提示使用者输入n或y来 确定是否进入系统 用if语句来来实现 输入为n 则显示 不进入系统 输入为y 则确定进入系统 则显示 您的输入有误 确定进入系统后 定 义四个整数a b c d 数据从键盘输入 分别存放有理数1的分子分母和有理数2 的分子分母 再将这两个有理数分别 通过分数 实数及最优形式输出 然后声明两个带参数的有理数类对象n1 a b 和n2 c d 分别为有理数a b和c d 再声明一个无实参对象n3 来存放有理数 n1和n2 的运算结果 再提示输入运算符 又通过if语句实现每一个相应运算符 的操作并将结果再次通过分数 实数及最优形式输出 如果输入的运算符不是 则提示 您的运算符输入不正确 最后判断出两个有理 数是否相等并将结果输出 一个运算结束后 再次通过if语句提示是否继续进 行下一个运算 如果不继续 则输出 退出运算系统 如果继续 则会通过 return main 返回继续以上操作 六 六 问题及解决方法问题及解决方法 问题一 开始设计的程序并不能满足我们的需求当我们输入一个整型实数 时却与我们预期的结果并不一样 并不能够执行 进一步测试后能运行了 结 果却与 是与实数无关 原因是我定义的运算符重载的参数类型都是类 而没有 整型实数 参数无法传递过去 又经过调整后每一条形参是类的运算符函数下 面再补加一个形参是整型实数的运算符函数 问题二 我声明了类的三个对象 两个用于存放输入的分数 另一个用于 存放运算后的结果 而结果却要输入三组实数 得到了三个分数 这与设计要 得到两个分数不同 原因是我三次调用无形参的构造函数 后来我又曾加了一 个带形参构造函数 我把第三个对象改为 C 0 0 后又出现了错误 经过几 次的测试 C 的第二个参数必须是非零的参数 因为第二个参数是作为分母不能 取零

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论