- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四 川 大 学 软 件 学 院
实 验 报 告
学号:1043111051 姓名:王金科 专业:软件工程 班级:2010级5班
课程名称
数据结构?
实验课时
8
实验项目
计算器
实验时间
8到10周
实验目的
了解c++类的封装 和KMP算法。
实验环境
Windows平台 VC6.0++?
实验内容(算法、程序、步骤和方法)
部分函数创建思想
创建过程如下:
实验流程图
程序清单
文件名:main.cpp
#includeiostream
using namespace std ;
#includestdio.h
#includemalloc.h
#includeDefNit.h
#includeCompare.h
#includewindows.h
int main()
{
LinkOptr T;
LinkOpnd N;
InitStack(T);
PushOptr(T,#);
InitStack(N);
char ch ,key;
int i=0,j=0,num2=0,op1,op2;
while(1)
{
system(cls) ;
cout\n\n\t\t\t********* 计算器 *********”;
cout\n\n\t\t):请输入算数表达式(数入#号结束输入);
ch=getchar();
while(ch!=#||GetTop1(T)!=#)
{
if(!IsOptr(ch))
{
i++;
if(i=j)
num2=(int(ch)-48);
if(ij)
{
num2=num2*10+(int(ch)-48);
i=j=0;
}
if(!IsOptr(ch=getchar()))
i++;
if(i==j)
PushOpnd(N,num2);
//用getchar()函数读进来的字符肯定只能是一个字符,比如,
12是先读‘1’,然后读‘2’,这里的i和j是用来判断个位数还
是十位数的,num2是把运算数栈前零散的字符统计出来
}
else
switch(Precede(GetTop1(T),ch))
{
case :
PushOptr(T,ch);
if(ch!=(ch!=))
j++;
ch=getchar();
break;
case =:
PopOptr(T);
ch=getchar();
break;
case :
op1=PopOpnd(N);
op2=PopOpnd(N);
PushOpnd(N,Operate(op2,PopOptr(T),op1));
break;
}
}
cout\n\n\t\t表达式的最终结果为: ;
printf(%5d\n,GetTop2(N)) ;
cout\n\n\t\t是否继续(Y/N) ;
cinkey ;
if(key==n||key==N)
{
break;
}
}
cout\n\n\t\t;
return 0;
}
文件名:Compare.h
int IsOptr(char ch)
{
char ptr[10]={+,-,*,/,(,),#};
for(int i=0;i7;i++)
{
if(ch==ptr[i])
return true;
}
return false;
}
char Precede(char ch1,char ch2)
{
if((ch1==+||ch1==-||ch1==*||ch1==/||ch1==))(ch2==+||ch2==-||ch2==)||ch2==#))
return ;
else if((ch1==(||ch1==#)(ch2==+||ch2==-||ch2==*||ch2==/||ch2==())
return ;
else if((ch1==+||ch1==-||ch1==*||ch1==/)ch2==()
return ;
else if((ch1==+||ch1==-)(ch2==*||ch2==/))
return ;
else if((ch1==*||ch1==/||ch1==))(ch2==*||ch2==/))
您可能关注的文档
- 中药用药护理.ppt
- 政治经济学重点总结_2.doc
- 【最新文档】优秀艺术团申报材料-范文模板 (6页).doc
- des算法实验报告.doc
- c语言实验报告_2.doc
- 北师大版七年级数学下册全部知识点归纳(新)_2.doc
- 实验二 二阶系统阶跃响应.doc
- 网上支付与电子银行实验报告.doc
- 汽车拆装实验报告 - 副本.doc
- 实验三 直流并励电动机.doc
- 中考语文总复习语文知识及应用专题5仿写修辞含句子理解市赛课公开课一等奖省课获奖课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第二课《藏猫猫》精品课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第三课《我向国旗敬个礼》精品课件.pptx
- 高中生物第四章生物的变异本章知识体系构建全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 整数指数幂市公开课一等奖省赛课微课金奖课件.pptx
- 一年级音乐上册第二单元你早全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级数学上册第二章实数27二次根式第四课时习题省公开课一等奖新课获奖课件.pptx
- 九年级物理全册11简单电路习题全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级语文下册第五单元19邹忌讽齐王纳谏省公开课一等奖新课获奖课件.pptx
- 2024年秋季新人教PEP版3年级上册英语全册教学课件 (2).pptx
文档评论(0)