沈阳航空航天大学软件课设报告(4)

2019-03-22 19:00

图5:主函数 Y Y 开始 建立栈V1 i=0 输入ch N ch[i]!=0? Y ch[i]=='('? Y 输出v1.pop() N 结束 i=i+2 ch[i]='c'? N i=i+1 N ch[i]='c'? ch[i]!=')'? 将ch[i]入栈 将ch[i]入栈 ch[i]!=')'&&ch[i]!='('?Y i=i+1 ch[i]==')'? Y v1.push(v1.pop()+v1.pop()); i++ N N

图6. 计算器界面---测试数据

图7.(+2(+58))测试结果图

图8.(+(+(+12)(+34))(+(+56)(+78)))测试结果图

四、结论

本程序十分简洁,且理解上也比较容易,完成了简单的算术表达式的计算问题,但是没能够实现其四则运算的问题,还有按照原思路应该是建立两个栈,一个存放数值,一个存放运算符,比较运算符的优先级然后对其控制的值作相应的运算。由于本人软件知识有限,所以得出的程序只是实现了片面的功能,对运算符采取了跳过的处理方式,只对表达式中的值作和,再输出。 经过了将近两周的软件课设,根据题目要求对源程序作了相当大的改动,这其中包括对缀余程序的删除,对错误程序的修正。另外程序参考了网上的模版,但其中不明白的地方有很多,问了很多人,也查阅了以前学过的关于栈的知识,最后也不是彻底的能弄明白。我对于我的程序不是很满意,因为这并不是一个简单的LISP计算器,计算器最起码能进行四则运算,但此计算器只能完成类似题目中所给的运算。虽然程序有些欠缺的地方,但毕竟是花了十多天的时间在程序上,收获还是很多的,算是对一学期的软件课作了一个总结,也从搜索资料中学会了运用图书馆和网络,总之软件课设使我受益匪浅,对以后的工作和学习都有很大的帮助。

五.程序清单: #include #include typedefstruct {char *cbase; char *ctop;

intistacksize; }cstack; typedefstruct { int *ibase; int *itop;

intistacksize; }istack;

intinitstack (cstack&c) { c.cbase = new char[100]; c.ctop = c.cbase; return 0; } intinitstack (istack&i) { i.ibase = new int[100]; i.itop = i.ibase; return 0; } intcpush(cstack&c,charce)

{ *(c.ctop++) = ce; return 0; } intipush(istack&i,intie)

{ *(i.itop++) =ie; return 0; } intcpop(cstack&c,char&ce)

{ ce = *(--c.ctop); return 0; } intipop(istack&i,int&ie)

{ ie = *(--i.itop); return 0; } voidgetfun(); int result=1;

static char array[100]; voidgetfun() { intlenth=0;

printf(\请输入LISP表达式: \gets(array); } voidjisuan()


沈阳航空航天大学软件课设报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:驻马店市人民政府关于进一步贯彻落实房地产市场宏观调控政策促进

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: