欢迎来到天天文库
浏览记录
ID:39547158
大小:266.50 KB
页数:17页
时间:2019-07-06
《C++课程设计(计算器)报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、课程设计报告VisualC++课程设计题目:计算器题目:计算器1.程序功能简介实现计算器功能。用户根据程序提示,输入数字,选择要进行的运算,可以进行加,减,乘,除,开方、温度单位的换算。2.课程设计要求(1)完善计算器程序,改写成可对实数操作。(2)完善程序,改为多个操作数基本四则运算,遇到0为止(3)增加函数、完成四则混合运算,注意算法要考虑优先级,对应增加主菜单选项。(4)添加语句,使四则运算具有测试功能,即计算器出题目,并要求用户计算,同时计算机判断用户对错并打分,要求十题为一个单元,加减运算时最高为两位数运算,乘除法为两位数乘一位数,除法
2、是两位数或三位数除以一位数,且没有余数。3.设计思路将原函数的int型数据改为float型数据。仿照类设计四则混合运算的程序,四则混合运算的分函数主要有doubleeval_exp(char*exp);//运算四则运算表达式的主函数,返回结果、voidoopcalc::sizeyunsuan();//四则运算调用的主函数、doubleoopcalc::eval_exp(char*exp)//计算表达式函数并返回结果、get_token();//取表达式函数等。利用类的结构编写一个voidtest()//测试函数,并给出选项选择测试的内容。并参考资
3、料改写随机数生成器源代码,使之符合类的结构能够被调用,添加有关头文件。4.程序结构图开始输入选择加法运算除法运算乘法运算四则预算减法运算华氏转摄氏摄氏转华氏测试退出13294652708求方根结束加法测试减法测试除法测试乘法测试105.添加的主要函数代码添加四则运算主要代码oopcalc::parser(){exp_ptr=NULL;}//将exp_prt赋值为空指针doubleoopcalc::eval_exp(char*exp)//计算表达式函数并返回结果{doubleresult;exp_ptr=exp;//将指针指向表达式get_toke
4、n();//取表达式函数if(!*token)//取得链表为空时,显示错误警告,并返回0值{serror(2);return0.0;}eval_exp2(result);if(*token)serror(0);returnresult;}voidoopcalc::eval_exp2(double&result)//识别加减符号{registercharop;doubletemp;eval_exp3(result);while((op=*token)=='+'
5、
6、op=='-')//判断指针指向的符号{get_token();eval_exp3(t
7、emp);switch(op)//通过switch语句实现判断{case'-':result=result-temp;break;case'+':result=result+temp;break;}}}voidoopcalc::eval_exp3(double&result)//识别乘除号与百分号,方法同加减号{registercharop;doubletemp;eval_exp4(result);while((op=*token)=='*'
8、
9、op=='/'
10、
11、op=='%'){get_token();eval_exp4(temp);switc
12、h(op){case'*':result=result*temp;break;case'/':result=result/temp;break;case'%':result=(int)result%(int)temp;break;}}}voidoopcalc::eval_exp4(double&result){doubletemp,ex;registerintt;eval_exp5(result);if(*token=='^'){get_token();eval_exp4(temp);ex=result;if(temp==0.0){result=
13、1.0;return;}for(t=(int)temp-1;t>0;--t)result=result*(double)ex;}}voidoopcalc::eval_exp5(double&result){registercharop;op=0;if((tok_type==DELIMITER)&&*token=='+'
14、
15、*token=='-'){op=*token;get_token();}eval_exp6(result);if(op=='-')result=-result;}voidoopcalc::eval_exp6(double&res
16、ult){if((*token=='(')){get_token();eval_exp2(result);if(*token!=')')
此文档下载收益归作者所有