中缀表达式(c++)

中缀表达式(c++)

ID:40589509

大小:63.00 KB

页数:18页

时间:2019-08-04

中缀表达式(c++)_第1页
中缀表达式(c++)_第2页
中缀表达式(c++)_第3页
中缀表达式(c++)_第4页
中缀表达式(c++)_第5页
资源描述:

《中缀表达式(c++)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/*模拟小学生在线算术考试系统(C++实现)*实现的要求:*1.操作数个数随机指定*2.操作数随机生成*3.操作符随机选择*4.利用中缀表达式堆栈求值法求出正确答案*5.判断用户输入答案并计算分值*--------------------------------------*程序是帮别人写的课程设计时间比较紧迫就没有用链表实现堆栈*也没有将中缀表达式转换为后缀表达式后再求值*------------------------------------------*程序逻辑还算清楚,有详细的注释。*在vs2010,vs2008下可

2、以正常运行(vc6.0就不用试了不能运行的,不是程序有错误,而是*vc6.0对局部变量的要求不一样,所以不能运行)*-------------------------------------------------------------*2013-1-9By:LiWei*/#include#include#include#includeusingnamespacestd;#defineMax_Size50//定义最多保存的题目数量template

3、ssT>classOp_Stack{public:Op_Stack();voidPush(Ta);//进栈操作TPOP();//出栈操作boolisNull();TTop();private:inttop;TData[19];};templateOp_Stack::Op_Stack(){top=-1;}templatevoidOp_Stack::Push(Ta){top++;Data[top]=a;}templateTOp_Stack::POP(){Ttemp

4、;temp=Data[top];top--;returntemp;}templateboolOp_Stack::isNull(){if(-1==top){returnfalse;}}templateTOp_Stack::Top(){if(-1==top){return-1;}else{returnData[top];}}classOP_Questions{public:OP_Questions();int*Produce_Rand(intbegin,intend,intcount)

5、;//产生指定范围内的随机数,返回指向数组的指针voidProduce_Questions();//生成题目voidprint();//打印题目intscore();//计算题目voidshow_score();//输出用户成绩voidmenu();//private:intquestions[30],num;//保存生成的题目,操作数的个数Op_Stacknumber;//保存操作数,用于中缀表达式求值Op_Stackop;//保存操作符,用于中缀表达式求值intfinalscore;//总成绩};OP

6、_Questions::OP_Questions()//构造函数{num=0;finalscore=0;//初始化分数和操作数个数}int*OP_Questions::Produce_Rand(intbegin,intend,intcount)//生成所需的随机数{int*p=newint[10];srand((unsigned)time(0));for(inti=0;i<=count-1;i++){p[i]=rand()%(end-begin+1)+begin;//取得begin到end范围内的随机数}returnp;//

7、返回数组首地址}voidOP_Questions::Produce_Questions(){/*生成随机题目思路:*1,操作数个数随机生成*2,操作符随机选择*3,操作数随机生成*/int*p,index;index=0;p=Produce_Rand(2,5,1);//随机确定需要的操作数的个数num=p[0];//记录需要几个操作数p=Produce_Rand(1,10,num);//取得操作数,为方便计算操作数范围在1—10之间for(inti=1;i<=2*num-1;i+=2)//将操作数保存在数组中(中缀表达式),

8、奇数位置放操作数{questions[i]=*(p+index);index++;//记录位置}p=Produce_Rand(1,4,num-1);/*取得操作符*/index=0;/*返回的数字表示操作符代号*/for(inti=2;i<=2*num-1;i+=2)/*1001,1002

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。