《c++课程设计--分数计算器》由会员分享,可在线阅读,更多相关《c++课程设计--分数计算器(15页珍藏版)》请在毕设资料网上搜索。
1、南京理工大学 C+课程设计报告课程设计报告 题题 目目: 分数计算器 年年 级级: 专专 业业: 通信工程 姓姓 名名: 指导老师指导老师: 难难 度度 B 级 教师教师评语评语: 南京理工大学 1 1. .程序功能介绍程序功能介绍 分数计算器及测试程序,具有对输入的运算进行“+,-,*,/,”的功能 2 2 .程序设计要求 (1) 完成计算器程序,对 main 函数的结构进行改进,要求有详细的菜单选项界面,用户不选择退出 就可以反复运算。 (2) 完善程序,改为多操作数基本四则运算,遇#停止。 (3) 增加函数,完成四则混合运算,注意算法要考虑运算符的优先级,对应增加主菜单选项。 (4) 增
2、加语句使四则运算具有测试功能,即计算机能够 自动出题,并要求用户计算,同时计算机判 断用户计算的对错并打分,要求十题一个单元,每题一个运算符,参与运算的分子分母均为一 位数,运算符包括加,减,乘,除及大于小于等逻辑运算符。 3. 3. 基本数据结构基本数据结构 含有整型变量 ,字符变量,实型变量,还定义了一个分数类; 除此之外还有以下函数:1。分数转换为小数;2。分数转换为带分数;3。实现简单计算的函数;4。混合运 算函数;5。随机测试题函数;6。清屏函数。 此外还多处运用了运算符的重载 4. 程序运行结果界面 1. 初始界面 南京理工大学 2.功能 1 南京理工大学 3.功能 2 南京理工大
3、学 4.功能 3 南京理工大学 南京理工大学 5.功能 4 南京理工大学 6.功能 5 南京理工大学 南京理工大学 5. 课程设计遇到的技术问题与解决思路 问题问题 1 1:分数的表示 解决办法:建立函数,分别置分母,分子,同时构造约分函数 问题问题 2 2:真分数的表示 解决办法:构造函数,置整数部分和分数部分 书本提供的源代码虽然较为完备,但也存在一些错误。 问题问题 3 3:乘方的函数功能实现,书本提供的原有的类中重载的“”运算符无法实现乘方运算 解决办法:考虑到“”运算符作为位运算符,不能按照双目运算符的重载格式进行重载,故,将用于代码 内部的“”运算符改为“%”双目运算符进行重载,进
4、行重载运算,但对外输入输出,仍使用作为字符常量 的,解决了源代码中,分数运算乘方无法实现的问题。 fraction operator% % (const fraction returnValue.setnum(pow(base.numerator(), exp); returnValue.setden(pow(base.denominator(), exp); returnValue.simplify(); return returnValue; 问题问题 4 4:输出运算符ch11; switch(ch11) case1:main(); case2:exit(0); default:cout
5、k4; if(k4=1) cinf2; goto loopsmall1; else judgement=1;return; /由此实现由外部函数直接回到主函数头部 if(judgement=1)main(); 问题问题 6 6:混合运算的核心问题即是优先级的控制; 解决办法:为了实现运算的优先级,则需要综合判断前后综合判断前后的两个运算符,首先算出优先级较高的运算符两边的两个运算符,首先算出优先级较高的运算符两边 的数字,再对剩余的那个数字和结果进行运算,算出新的结果。在输入的同时进行运算。为了将运算不断向的数字,再对剩余的那个数字和结果进行运算,算出新的结果。在输入的同时进行运算。为了将运算不断向 南京理工大学 前推进,则定义了前推进,则定义了 3 3 个分数类的对象个分数类的对象 result ,f1,f2.result ,f1,f2.以及两个代表前后运算符的字符型变量以及两个代表前后运算符的字符型变量 op1,op2op1,op2。并通。并通 过对其不断赋值,如过对其不断赋值,如 op1=op2op1=op2,实现运算的推进,实现运算的推进. .具体操作通过具体操作通过 switchswitch 的嵌套实现。的嵌套实现。过程及其繁琐,而且一 旦语句出现偏差,极易出现难以发现的运行错误,即最终计算结果不正确。一下为函数的定义: /=混合运算 = void compl