C#简单的四则运算器.doc

C#简单的四则运算器.doc

ID:56825595

大小:40.00 KB

页数:10页

时间:2020-07-15

C#简单的四则运算器.doc_第1页
C#简单的四则运算器.doc_第2页
C#简单的四则运算器.doc_第3页
C#简单的四则运算器.doc_第4页
C#简单的四则运算器.doc_第5页
资源描述:

《C#简单的四则运算器.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、[简单的四则运算器]一、项目内容及要求要求:1)能够进行简单的四则运算,点击等号,显示结果;点击“C”键清除文本框内容。2)除数为0,文本框显示出错提示信息。3)支持多运算符优先级。二、算法分析(描述清楚程序流程,可用自然语言说明,也可用流程图等说明。)一、算法:1)模拟两个栈,一个放数值,称为StackOpd,一个放运算符,称为StackOpr。StackOpr的运算符优先级必须递增的。2)然后依次扫描四则表达式,遇到数字就放到StackOpd里,遇到运算符,则有以下情况:3)当前运算符优先级>栈尾运算符的优先级,则入栈StackOpr。4)当

2、前运算符优先级<栈尾运算符的优先级,则取出StackOpr栈尾的运算符和StackOpd栈尾的两个元素,进行运算,然后把答案放入A中。不停重复上述操作直到当前运算符>栈尾运算符。5)最后,取出StackOpr栈尾的运算符和StackOpd栈尾的两个元素,进行运算,然后把答案放入StackOpd中。不停重复上述操作直到栈StackOpr为空。6)运算符的优先级:+,-:1;*,/:2二、泛型集合:1)泛型最常见的用途是创建集合类1)泛型集合可以约束集合内的元素类型2)典型泛型集合List,Dictionary3)

3、示该泛型集合中的元素类型三、堆栈的逻辑结构:1)栈(Stack)是一种特殊的线性表,是限定仅在表尾进行插入或删除操作的线性表。2)栈的表尾称为栈顶(top),处于栈顶位置的数据元素称为栈顶元素。3)表头称为栈底(bottom),处于栈底位置的数据元素称为栈底元素。4)不含元素的空表称为空栈。5)栈通常记为:S=(a1,a2,…,an),S是英文单词stack的第1个字母。a1为栈底元素,an为栈顶元素。这n个数据元素按照a1,a2,…,an的顺序依次入栈,而出栈的次序相反,an第一个出栈,a1最后一个出栈。6)所以,栈的操作是按照后进先出(Las

4、tInFirstOut,简称LIFO)或先进后出(FirstInLastOut,简称FILO)的原则进行的,因此,栈又称为LIFO表或FILO表。四、堆栈的基本操作:1)清空操作:Clear()初始条件:栈存在;操作结果:使栈为空。2)入栈操作:Push(Titem)初始条件:栈存在;操作结果:将值为item的新的数据元素添加到栈顶,栈发生变化。3)出栈操作:Pop()初始条件:栈存在且不为空;操作结果:将栈顶元素从栈中取出,栈发生变化。4)取栈顶元素:Peek()初始条件:栈表存在且不为空;操作结果:返回栈顶元素的值,栈不发生变化。1)属性:C

5、ount:获取栈中包含的元素个数。三、界面及运行过程四、关键代码(代码要求注释完整,例如:变量的作用,语句的作用,方法的功能等都要加注释说明)namespace项目4{structOpType//运算符栈类型{publicchar[]data;//存放运算符publicinttop;//栈顶指针};structValueType//运算数栈类型{publicdouble[]data;//存放运算数publicinttop;//栈顶指针};classClass1{constintMaxSize=200;publicstringexp;//存放中缀表

6、达式publicchar[]postexp;//存放后缀表达式publicintpnum;//postexp中字符个数publicOpTypeop=newOpType();//运算符栈publicValueTypest=newValueType();//运算数栈publicClass1(){postexp=newchar[MaxSize];pnum=0;op.data=newchar[MaxSize];op.top=-1;st.data=newdouble[MaxSize];st.top=-1;}publicvoidTrans()//将算术表达式

7、exp转换成后缀表达式postexp{inti=0,j=0;//i、j作为exp和postexp的下标charch;while(i

8、

9、ch=='-')//判定为加或减号{while(op.top!=-1){//将栈中'运算符退栈并存放到postexp中postexp[j++]=op.data[op.top];op.top--;}op.top++;op.data[op.top]=ch;//将'+'或'-'进栈}elseif(ch=='*'

10、

11、ch=='/

12、')//判定为'*'或'/'号{while(op.top!=-1&&(op.data[op.top]=='*'

13、

14、op.data[op.

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

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

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