数据结构课程设计报告(二)表达式求值(计算器)

数据结构课程设计报告(二)表达式求值(计算器)

ID:47510114

大小:234.00 KB

页数:7页

时间:2020-01-12

数据结构课程设计报告(二)表达式求值(计算器)_第1页
数据结构课程设计报告(二)表达式求值(计算器)_第2页
数据结构课程设计报告(二)表达式求值(计算器)_第3页
数据结构课程设计报告(二)表达式求值(计算器)_第4页
数据结构课程设计报告(二)表达式求值(计算器)_第5页
资源描述:

《数据结构课程设计报告(二)表达式求值(计算器)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、.课程设计报告课程名称:数据结构课程设计设计题目:表达式求值(计算器)学院:信息科学与工程学院专业:计算机科学与技术(软件外包)姓名:指导教师:二零一五年十二月二十九日word教育资料.一、设计内容与要求1、问题描述设计一个算术计算器,能运算包括四则运算、括号的表达式的运算。2、设计要求实现()、+、-、*、/、^等运算,实现小数和整数混合运算,优先级的处理,能判断算术表达式是否正确等。二、算法设计1、输入并建立表达式,运用数组结构体构建将整型数字与操作符结合定义运算符的优先级。typedefstructyxj{charoperat;intra

2、nk;}yxj;2、分别建立一个操作数栈和操作符栈存放数字和操作符,定义操作符栈第一个元素优先级最低。3、自左向右扫描字符串遇到字符串中的数字时一律提取转换成double型存入操作数栈。遇到操作符时,则将当前运算符的优先级数与运算符栈顶元素的优先级数相比较。若当前运算符的优先级数大,则进栈;反之,则取出栈顶的运算符,并在数栈中连续取出两个栈顶元素作为运算对象进行运算,并将运算结果存入数栈,然后继续比较当前运算符与栈顶元素的优先级。直到当前运算符进栈。4、对比运算符进行+-*/()^运算。三、程序代码#include#inclu

3、de#include#include#defineN100typedefstructyxj{charoperat;intrank;}yxj;typedefstructstr{chardata[N];}zs;voidszys(yxjmark[]){yxjos[N];charch;word教育资料.doublens[N];zszhan[20];intnumb[N];intLen,p=0,q=1,i,o=1,n=0;chardata[N];os[0]=mark[0];printf("请输入算术(

4、+-*/^)表达式(以=结束):");scanf("%s",data);Len=strlen(data);numb[0]=0;for(i=0;i<20;i++)zhan[i].data[0]='';for(i=0;i

5、

6、data[i]=='+'

7、

8、data[i]=='-'

9、

10、data[i]=='*'

11、

12、data[i]=='/'

13、

14、data[i]=='('

15、

16、data[i]==')'

17、

18、data[i]=='='){intj,k=0;if((data[i]=='='

19、

20、data

21、[i]=='^'

22、

23、data[i]=='+'

24、

25、data[i]=='-'

26、

27、data[i]=='*'

28、

29、data[i]=='/')&&(data[i-1]=='^'

30、

31、data[i-1]=='+'

32、

33、data[i-1]=='-'

34、

35、data[i-1]=='*'

36、

37、data[i-1]=='/')){printf("格式错误");return;}numb[q++]=i;while(zhan[(p+k)/2].data[0]!=''){k++;}for(j=numb[q-2];j='0'&&

38、data[j]<='9'

39、

40、data[j]=='.')zhan[(p+k)/2].data[t++]=data[j];zhan[(p+k)/2].data[t]='';if(zhan[(p+k)/2].data[0]!='')ns[n++]=atof(zhan[(p+k)/2].data);p++;for(j=0;j<8;j++)if(mark[j].operat==data[i])break;while(1)word教育资料.{if(mark[j].operat=='('){os[o++]=mark[j];break;}elseif(

41、mark[j].rank>os[o-1].rank&&mark[j].operat!='('){os[o++]=mark[j];break;}else{doublenumb1,numb2,numb;ch=os[--o].operat;if(ch=='+'){numb1=ns[--n];numb2=ns[--n];numb=numb1+numb2;ns[n++]=numb;}if(ch=='-'){numb1=ns[--n];numb2=ns[--n];numb=numb2-numb1;ns[n++]=numb;}if(ch=='*'){numb

42、1=ns[--n];numb2=ns[--n];numb=numb2*numb1;ns[n++]=numb;}if(ch=='/'){numb1=ns

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

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

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