欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年4.4简单LISP算术表达式计算器 .pdf

    • 资源ID:24120255       资源大小:147.03KB        全文页数:6页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年4.4简单LISP算术表达式计算器 .pdf

    广东工业大学实验报告自动化学院网络工程专业( 1) 班学号3111001299 姓名刘源彬成绩评定 _ 教师签名许亮实验4.4 题目简单 LISP 算术表达式计算器课程名称数据结构 A 1 简单 LISP 算术表达式计算器一实验目的问题描述 设计一个简单的LISP 算术表达式计算器。简单 LISP 算术表达式 (以下简称表达式 )定义如下:(1)一个 0.9的整数;或者(2)(运算符 表达式 表达式 ) 例如, 6,(+45),(+(+25)8)都是表达式,其值分别为6,9 和 15。基本要求 实现 LISP 加法表达式的求值。测试数据 6,(+45),(+(+25)8),(+2(+58),(+(+(+12)(+34)(+(+56)(+78) 实现提示 写一个递归函数:int Evaluate(FILE*CharFile) 字符文件 CharFile 的每行是一个如上定义的表达式。每读入 CharFile 的一行,求出并返回表达式的值。可以设计以下辅助函数status isNumber(char ReadInChar) ;/视 ReadInChar是否是数字而返回TRUE 或 FALSE。int TurnToInteger(Chat IntChar) /将字符 0.9转换为 0.9。二实验内容程序源代码1、自定义数据类型typedef struct char *cbase; char *ctop; int istacksize; cstack; / 定义字符型结构体typedef struct int *ibase; int *itop; int istacksize; istack; / 定义整数型结构体名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 广东工业大学实验报告自动化学院网络工程专业( 1) 班学号3111001299 姓名刘源彬成绩评定 _ 教师签名许亮实验4.4 题目简单 LISP 算术表达式计算器课程名称数据结构 A 2 2、基本操作函数#include #include #define stack_init_size 100 #define stackincrement 10 int initstack (cstack &c) c.cbase = new char100; c.ctop = c.cbase; return 0; /初始化int initstack (istack &i) i.ibase = new int100; i.itop = i.ibase; return 0; /初始化int cpush(cstack &c,char ce) *(c.ctop+) = ce; return 0; /压栈int ipush(istack &i,int ie) *(i.itop+) = ie; return 0; /压栈int cpop(cstack &c,char &ce) ce = *(-c.ctop); return 0; /出栈int ipop(istack &i,int &ie) ie = *(-i.itop); return 0; /出栈void getfun();/把输入的字符串附值给数组int lenth=0;/输入的字符串的长度int result=1; static char array100;/定义数组int display()/打印开始屏信息 for(int p=0;p80;p+) cout=; coutendlendl; for(int q=0;q28;q+) cout ; cout 简单 LISP 算术表达式计算器; coutendl; for(int r=0;r26;r+) cout ; coutendlendl; cout 本程序可以对简单的LISP 算术表达式进行求值,; cout 也能对四则运算表达式进行求 ; cout 值。 同时也支持LISP 算术表达式的语法的检查 . 你可以输入形如下面的式子:endl; cout 6 (+36) (*(+36)6) (+5(*(+12)(-34)endl; cout LISP表达式中只能输入 1 ,2, 3,4,5, 6,7,8,9,0 endlendl; for(int s=0;s80;s+) cout=; coutendl; return 0; void getfun() cout 请输入 LISP 表达式 : ; cin.getline(array,100); lenth = strlen(array); if(lenth=0) cout 你没有输入任何数据!endl; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 广东工业大学实验报告自动化学院网络工程专业( 1) 班学号3111001299 姓名刘源彬成绩评定 _ 教师签名许亮实验4.4 题目简单 LISP 算术表达式计算器课程名称数据结构 A 3 /* 重要的函数,计算LISP 表达式的函数*/ void compute() char ce; int ie1; int ie; cstack c; istack i; initstack (c); initstack (i); lenth = strlen(array);/求数组的长度的函数for(int n=0;nlenth;n+) if(arrayn=) cpop(c,ce); if(i.ibase=i.itop) coutLISP表 达 式 有 误 !endl; break; else ipop(i,ie); ie1=ie; if(i.ibase=i.itop) coutLISP表 达 式 有 误 !47&arrayn58) ie=(int)(int)arrayn-48);/把字符型 0 , 1转化为整数型0,1,2,ipush(i,ie);/弹出栈顶元素 ipop(i,ie);/弹出栈顶元素, 就是最后结果if(i.ibase=i.itop) coutLISP式计算结果为:; for(int m=0; mlenth; m+) coutarraym; cout = ieendl; /* 判断 LISP 语法的函数 */ int jugde() int lp=0; int rp=0; int oprator=0; int number=0; int lenth=0; getfun(); lenth = strlen(array); /* 统计各操作符和数字的个数*/ 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 广东工业大学实验报告自动化学院网络工程专业( 1) 班学号3111001299 姓名刘源彬成绩评定 _ 教师签名许亮实验4.4 题目简单 LISP 算术表达式计算器课程名称数据结构 A 4 for(int top=0;top47&arraytop47&array058) coutLISP表 达 式 结 果 为 : array0endl; else cout 请正确输入LISP, 你没有输入数字 !endl; /判断是不是一个字符,如果是一个数字的话。就直接打出,如果不是的话,说明语法有问题else if(array0!=() cout 您是否忘记了开始的(,请检查 !endl;/判断括号的匹配else if(arraylenth-1!=) cout 您是否忘记了最后的)!rp) cout 您是否忘记了)了! endl;/判断括号的匹配if(lprp) cout 您是否忘记了(了! endl;/判断括号的匹配if(lp=rp&oprator!=lp) cout 您的运算符有问题! endl; if(lp=rp&rp=oprator&rp!=number-1) cout 您的运算数字有问题,请检查!endl; else for (int i=0;ilenth;i+) if(arrayi=() +i; if (arrayi!=+&arrayi!=-&arrayi!=*&arrayi!=/) cout 你的LISP 有问题, 请检查 !endl; else result=0; i-; return 0; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 广东工业大学实验报告自动化学院网络工程专业( 1) 班学号3111001299 姓名刘源彬成绩评定 _ 教师签名许亮实验4.4 题目简单 LISP 算术表达式计算器课程名称数据结构 A 5 3、主函数代码三实验步骤为实现上述程序功能,应以字符栈和整型栈两个抽象数据类型表示:1.字符栈的抽象数据类型定义为:ADT cstack 数据对象: D=ai| aicstack,i=1,2,.n, n0 基本操作: initstack(cstack &c) 操作结果:分配100个字符栈空间,将首地址赋给c.cbase, 将 c.cbase 赋给 c.ctop 。 Cpush(cstack &c,char ce) 初始条件:字符栈c 存在。操作结果:将字符ce 加入到字符栈 c 中。 Cpop(cstack &c ,char &ce )初始条件:字符栈c 存在。操作结果:将 ce 从字符栈 c 中删除。 ADT cstackt 2.整型栈的抽象数据类型定义为:ADT istack 数据对象: D=ai| ai为 0 到 9 的数字, i=1,2.,n 基本操作:int main() char loop5; display(); do jugde(); if(result=0) compute(); cout 是否计算下一个LISP ? (y/n)endl; cin.getline(loop,5); while(loop0=y|loop0=Y); return 0; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 广东工业大学实验报告自动化学院网络工程专业( 1) 班学号3111001299 姓名刘源彬成绩评定 _ 教师签名许亮实验4.4 题目简单 LISP 算术表达式计算器课程名称数据结构 A 6 initstack(istack &i) 操作结果:分配100个整数空间,将首地址赋给i.ibase,将 iibase赋给 i.itop。 ipush(istack &i,int ie) 初始条件:整型栈i 存在。操作结果:将整数ie 加入到整型栈 i 中。 ipop(istack &i,int &ie)初始条件:整型栈i 存在。操作结果:将 ie 从整型栈 i 中删除。ADT istack 3. 其他int display()/ 打印开始屏幕信息void getfun() /表达式输入四实验的结果及分析。五实验中出现的问题、解决方法和心得体会写完程序的第 1 步, 先不让机器进行检错, 先自己检查,当修改了较多不是粗心导致的问题后,后面要修改的问题就是自己个人水平技术原因导致的错误了。这个算法感觉逻辑性很强,有时候写着写着就乱了,得从头开始看。当程序初步设计出来后,有很多细节上的错误,有的发现不出来,需要找同学帮忙或者查书籍等通过修改错误,也认识到自己的不足,相当一个查缺补漏的过程,跟一个系统分析的过程,逻辑思维过程, 对程序的认识更加深了一步, 以后还是需要多练习写一下程序,多提高一下自己的动手实践能力,以便以后可以更加熟练的写程序。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

    注意事项

    本文(2022年4.4简单LISP算术表达式计算器 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开