数据结构中 算术表达式的求值演示 的源程序.doc_第1页
数据结构中 算术表达式的求值演示 的源程序.doc_第2页
数据结构中 算术表达式的求值演示 的源程序.doc_第3页
数据结构中 算术表达式的求值演示 的源程序.doc_第4页
数据结构中 算术表达式的求值演示 的源程序.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构中 算术表达式的求值演示 的源程序有标准答案吗,谢谢50分 标签:求值 算术表达式 源程序 标准答案 概要设计 回答:2 浏览:2538 提问时间:2005-12-10 18:29这是课程设计,除了源程序,还要有需求分析,概要设计,详细设计,调试分析,用户手册,测试结果,心得体会,关键是需求分析,概要设计,详细设计,调试分析,用户手册不知道应该怎么写 共0条评论.相关资料: 算术表达式和赋值表达式(1).swf更多资料 最佳答案 此答案由提问者自己选择,并不代表爱问知识人的观点 揪错 评论 举报killbig学者 算术表达式的源程序 #include #include #include #define POW 1 #define MUL 2 #define DIV 3 #define ADD 4 #define SUB 5 #define Lp 6 #define Rp 7 #define END 8 #define Epsilon 1e-7 typedef double NODE; struct char op; int code; opchTbl=*,2,/,3,+,4,-,5,(,6, ),7,1,n,8, ,-1; typedef struct node NODE data; struct node *link; LNODE; LNODE *optop , *numtop; NONO(char *t,double sum) int i; char str15; FILE *wf; wf=fopen(62346_4.dat,w); for(i=0;i62;i+) if(*(t+i)!=0 & *(t+i)!=10 & *(t+i)!=13) fprintf(wf,%c,*(t+i); sprintf(str, =%fn,sum); for(i=0;idata=x; p-link= *toppt; *toppt=p; int l_pop(NODE *cp,LNODE * *toppt) LNODE *p= *toppt; if(*toppt=NULL)return 1; *cp=p-data; *toppt=p-link; free(p); return 0; int osp=5,3,3,2,2,5,1,1, isp=4,3,3,2,2,0; void synError() double temp; printf(syntax err!); while(optop!=NULL) l_pop(&temp,&optop); while(numtop!=NULL) l_pop(&temp,&numtop); exit(0); double eval(char tag,double left, double right) int n; double result; switch(tag) case POW : for(n=1,result=left;nright; n+) result *=left; return result; case ADD : return left+right; case SUB : return left-right; case MUL : return left*right; case DIV : if(fabs(right)=Epsilon) printf(/0 errn); exit(1); return left/right; printf(expression err!/n);return 1.0; int c= ,k=0; int t61; #define RADIX 10 int getToken(double *nump) double dradix,num; int i; while(c= | c=t)c=getchar(); if(c9) for(i=0;opchTbli.code!=-1 & opchTbli.op!=c;i+); if(opchTbli.code=-1)synError(); if(c!=n)c=getchar(); tk=c; k+; return opchTbli.code; num=0; while(c=0&c=0&cisp(int)optop-data-1) l_push(double)type,&optop); else while(osptype-1data-1 & optop-data=5) if(l_pop(&dop,&optop) synError(); op=(char)dop; if(l_pop(&operand2,&numtop) synError(); if(l_pop(&operand1,&numtop) synError(); res=eval(op,operand1,operand2); l_push(res,&numtop); if(type=END)break; if(type=Rp) do if(l_pop(&dop,&optop) synError(); while(char)dop!=Lp); else l_push(double)type,&optop); if(l_pop(&operand1,&numtop)synError(); while(optop!=NULL) l_pop(&dop,&optop); printf(result=%fn,operand1); printf(continue ?(Y); scanf(%c,&ans); while(ans=y | ans=Y); NONO(t,operand1); for(i=0;i61;i+) printf(%c,ti); QQ16806008 回答:2005-12-10 18:34提问者对答案的评价:两个答案都太有水平了,第二个源程序更是超出大部分初学者的水平了 共0条评论.以下是特别推荐给您的相关问题学软件开发需要学那些课程还有,关于3G手机软件开发,都有一些什么样的课程. 5分求复杂表达式的值 10分我看现在关于软件开发的培训机构好像挺多的,可是为. 10分已知Y=F(X)是定义域在R上的偶函数,治疗乳腺增生-很轻松治疗乳房肿块、乳腺增生,一次性治愈不复发新浪爱问共享资料 - 存储安全长久数百万中文资料免费共享,高速上传下载爱问机器人-解决所有难题会自动回复的高智商微博机器人,试一试其它回答 共1条回答评论 举报祥子学者 算术表达式求值演示 一.需求分析 1. 要求应用栈来实现表达式的分析计算( 用运算符优先法 ). 2. 以字符序列的形式从终端输入语法正确的表达式( 本程序可以输入浮点数作运算数 ). 3. 演示程序以计算器的仿真界面实现与用户间的对话. 当用户从终端输入某一字符时 , 仿真界面上的相应字符按钮会变黑( 表示按下 ). 4. 程序的实现效果在附交的软盘中. 请运行程序观看. 二. 调试分析 1. 由于考虑不周, 本程序快要完成时才发现由于函数调用太深, 无法处理好局部变量 , 只好用了两个全局变量start_x和start_y( 有违初衷 ), 它们指定CALCULATOR的绘制 位置. 2. 由于库函数getchar()和getch()的微妙的差别, 使得绘图部份功能一度陷入混乱. 最后才得以调整. 3. 本程序的模块性有待加强. 三. 用户手册 1. 本程序在TURBO C 2.0下运行良好. 源程序文件为Evaluate.c. 2. 进入演示程序后, 显示图像编程模拟的计算器仿真界面, 按键盘上的键位以达相应 的视觉效果. 3. 注意: 请不要输入错误的表达式, 确定表达式只输入一次并且正确( 还要求输入过 程中不可以用退格符 ), 否则会产生莫明其妙的错误结果. 4. 本程序扩充了运算符集, 支持乘方运算符 p , 例如输入: 5p2+5p2# 则结果为 50.000000 支持平方运算符 , 例如输入: 5+5# 则结果为50.000000 支持单目减运算符 ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论