首页 数据结构算术表达式求值实验报告

数据结构算术表达式求值实验报告

举报
开通vip

数据结构算术表达式求值实验报告v1.0可编辑可修改10PAGE\*MERGEFORMAT#软件技术基础实验报告实验名称:表达式计算器系别:通信工程年级:班级:学生学号:学生姓名:《数据结构》课程设计报告题目简易计算表达式的演示【题目要求】要求:实现基本表达式计算的功能输入:数学表达式,表达式由整数和“+”、“-”、“X”、“/”、“(”、“)”组成输出:表达式的值基本操作:键入表达式,开始计算,计算过程和结果记录在文档中难点:括号的处理、乘除的优先级高于加减•刖言在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不...

数据结构算术表达式求值实验报告
v1.0可编辑可修改10PAGE\*MERGEFORMAT#软件技术基础 实验报告 化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单 实验名称:表达式计算器系别:通信工程年级:班级:学生学号:学生姓名:《数据结构》课程设计报告题目简易计算表达式的演示【题目要求】要求:实现基本表达式计算的功能输入:数学表达式,表达式由整数和“+”、“-”、“X”、“/”、“(”、“)”组成输出:表达式的值基本操作:键入表达式,开始计算,计算过程和结果记录在文档中难点:括号的处理、乘除的优先级高于加减•刖言在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)为简化,规定操作数只能为正整数,操作符为+、-*、/、=,用#表示结束。算法输出:表达式运算结果。算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。•概要设计数据结构设计任何一个表达式都是由操作符,运算符和界限符组成的。我们分别用顺序栈来寄存表达式的操作数和运算符。栈是限定于紧仅在表尾进行插入或删除操作的线性表。顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置,base为栈底指针,在顺序栈中,它始终指向栈底,即top二base可作为栈空的标记,每当插入新的栈顶元素时,指针top增1,删除栈顶元素时,指针top减1。算法设计为了实现算符优先算法。可以使用两个工作栈。一个称为OPTR用以寄存运算符,另一个称做OPND用以寄存操作数或运算结果。首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;依次读入表达式,若是操作符即进OPN戯,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为”#”)。ADT描述ADTStack{数据对象:D={a|a€ElemSet,i=1,2,…,n,n三0}数据对象:R仁{<3i'aii>|ai1,aiD,j=2,…,n}约定an端为栈顶,①端为栈底。基本操作:InitStack(&S)操作结果:构造一个空栈SoGetTop(S)初始条件:栈S已存在。操作结果:用P返回S的栈顶元素。Push(&S,ch)初始条件:栈S已存在。操作结果:插入元素ch为新的栈顶元素。Pop(&S)初始条件:栈S已存在。操作结果:删除S的栈顶元素。In(ch)操作结果:判断字符是否是运算符,运算符即返回1Precede(c1,c2)初始条件:c1,c2为运算符。操作结果:判断运算符优先权,返回优先权高的。Operate(a,op,b)初始条件:a,b为整数,op为运算符。操作结果:a与b进行运算,op为运算符,返回其值。num(n)操作结果:返回操作数的长度。EvalExpr()初始条件:输入表达式合法。操作结果:返回表达式的最终结果}ADTStack功能模块分析栈的基本功能InitStack(Stack*s)和InitStack2(Stack2*s)分别构造运算符栈与构造操作数栈,Push(Stack*s,charch)运算符栈插入ch为新的栈顶元素,Push2(Stack2*s,intch)操作数栈插入ch为新的栈顶元素,Pop(Stack*s)删除运算符栈s的栈顶元素,用p返回其值,Pop2(Stack2*s)删除操作数栈s的栈顶元素,用p返回其值,GetTop(Stacks)用p返回运算符栈s的栈顶元素,GetTop2(Stack2s)用p返回操作数栈s的栈顶元素。2.其它功能分析(1)1n(charch)判断字符是否是运算符功能,运算符即返回1,该功能只需简单的一条语句即可实现,return(ch=='+'||ch=='-'||ch=='*'||ch==7'||ch=='('||ch==')'||ch==#)。Precede(charc1,charc2)判断运算符优先权功能,该函数判断运算符c1,c2的优先权,具体优先关系参照表1。Operate©nta,charop,intb)操作数用对应的运算符进行运算功能。运算结果直接返回。⑷num(intn)求操作数的长度功能,需要用itoa函数把int型转换成字符串型,strlen函数可求字符长度。(5)EvalExpr()主要操作函数运算功能。分析详细见“3.详细设计…”。•详细设计数据存储结构设计因为表达式是由操作符,运算符和界限符组成的。如果只用一个char类型栈,不能满足2位以上的整数,所以还需要定义一个int类型的栈用来寄存操作数。/*定义字符类型栈*/structstacklifeil{if(cr[i-1]v'0'||cr[i-1]>'9'||i==0||cr[i+1]v'0'||cr[i+1]>'9'){error=1;break;}else{k=1;h=10;}}else{flag=1;j=j*h;sum=sum*k+(cr[i]-48)/j;}i++;}对函数表达式每个字符的操作switch(cr[i]){case'-':if(cr[i-1]=='('||i==0){fuhao=1;i++;break;}行成功后界面。输入正确的表达式后輸入養达式例如2*4-最后按口禳则会退岀保存谢谢使用贰耳貝耳科X科贰科科算贰贰耳科屛择贰耳脾只科X料屛m科只料:M科XKKXHX科XXKX乳贰科舄只评算科舄科K算蘇]■(料KJtKK评耳淞托只科屛耳料输入表达応2*4SHIS'按#犍退出:磕/康达式:2*4=S.0Q0000任意键继续,按丼犍退岀;c:「'G:\Del)ug\计京器代玛,疋e列.KiM:M:K:MN豪:KXNNKJtHKNMEiMltHHKiCKiK^FHXKMEXJfKiMJieXMEHjCWgMMEX^KMKHMEXliEFgM耳KME逋XMiHlieKMEXXJtjCXIOgiMZjCFStJeNKK!HK*mfMK!KK>igH>fXK!KXWXaEl#include<>#include<>#include<>structstacklifeil{if(cr[i-1]v'0'||cr[i-1]>'9'||i==0||cr[i+1]v'0'||cr[i+1]>'9')lf\n",*);fprintf(file,"%.6lf\n",*);}return;}voidmain(){charcr[60];charc='a';file=fopen(outfile,"w+");//使用提示printf('***************\n");printf('**********************************李斐计算器*****************************************************************printf('**************\n");**********************************printf("四则简易计算器\n\n");printf("输入表达式例如2+4=\n\n");printf("最后按#键则会退出保存\n\n");printf("谢谢使用\n\n");printf("\n");*****************************************************************//循环输入表达式,按'#'键退出while(c!=#){error=0;printf("输入表达式:\n");gets(cr);fprintf(file,"表达式:%s\n",cr);qiuzhi(cr);printf("任意键继续,按#键退出:\n");c=getch();}fclose(file);}
本文档为【数据结构算术表达式求值实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
天涯明月
暂无简介~
格式:doc
大小:311KB
软件:Word
页数:11
分类:高中语文
上传时间:2022-04-12
浏览量:0