版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四川大学软件学院实验报告学号:1043111051姓名:王金科专业:软件工程班级:2010级5班课程名称数据结构
实验课时8实验项目计算器实验时间8到10周实验目的了解c++类的封装和KMP算法。实验环境Windows平台VC6.0++
实验内容(算法、程序、步骤和方法)部分函数创建思想创建过程如下:实验流程图程序清单文件名:main.cpp#include<iostream>usingnamespacestd;#include<stdio.h>#include<malloc.h>#include"DefNit.h"#include"Compare.h"#include<windows.h>intmain(){LinkOptrT;LinkOpndN;InitStack(&T);PushOptr(T,'#');InitStack(&N);charch,key;inti=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(i>j) { 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)";cin>>key;if(key=='n'||key=='N'){ break;}}cout<<"\n\n\t\t";return0;}文件名:Compare.hintIsOptr(charch){ charptr[10]={'+','-','*','/','(',')','#'}; for(inti=0;i<7;i++) { if(ch==ptr[i]) returntrue; } returnfalse;}charPrecede(charch1,charch2){if((ch1=='+'||ch1=='-'||ch1=='*'||ch1=='/'||ch1==')')&&(ch2=='+'||ch2=='-'||ch2==')'||ch2=='#')) return'>'; elseif((ch1=='('||ch1=='#')&&(ch2=='+'||ch2=='-'||ch2=='*'||ch2=='/'||ch2=='(')) return'<'; elseif((ch1=='+'||ch1=='-'||ch1=='*'||ch1=='/')&&ch2=='(') return'<'; elseif((ch1=='+'||ch1=='-')&&(ch2=='*'||ch2=='/')) return'<'; elseif((ch1=='*'||ch1=='/'||ch1==')')&&(ch2=='*'||ch2=='/')) return'>'; elseif(ch1=='('&&ch2==')') return'='; elseif(ch1=='#'&&ch2=='#') return'='; else returnfalse;}intOperate(intx,charch,inty){if(ch=='+') returnx+y; elseif(ch=='-') returnx-y; elseif(ch=='*') returnx*y; elseif(ch=='/') returnx/y; else returnfalse;}文件名:DefNit.htypedefstructNode1{charch;structNode1*Next;}Optr,*LinkOptr;//运算符栈typedefstructNode{intnum; structNode*Next;}Opnd,*LinkOpnd;//运算数栈voidInitStack(LinkOptr*S){(*S)=(LinkOptr)malloc(sizeof(Optr)); (*S)->Next=NULL;}voidInitStack(LinkOpnd*S){(*S)=(LinkOpnd)malloc(sizeof(Opnd)); (*S)->Next=NULL;}intPushOptr(LinkOptrpr,charch1){LinkOptrtemp;temp=(LinkOptr)malloc(sizeof(Optr));temp->ch=ch1;temp->Next=pr->Next;pr->Next=temp;returntrue;}intPushOpnd(LinkOpndpn,intnum1){LinkOpndtemp;temp=(LinkOpnd)malloc(sizeof(Opnd));temp->num=num1;temp->Next=pn->Next;pn->Next=temp;returntrue;}charPopOptr(LinkOptrS){if(S->Next==NULL) returntrue;LinkOptrtemp;temp=S->Next;S->Next=temp->Next;returntemp->ch;free(temp);}intPopOpnd(LinkOpndS){if(S->Next==NULL) returntrue;LinkOpndtemp;temp=S->Next;S->Next=temp->Next;returntemp->num;free(temp);}charGetTop1(LinkOptrS){returnS->Next->ch;}intGetTop2(LinkOpndS){returnS->Next->num;}实验内容(算法、程序、步骤和方法)数据记录和计算
结论(结果)
这个程序达到了实验的要求,可以实现运算表达式的输入、运算和输出,而且可以进行输入验错,可以正常运行。小结
自己在整个课程设计过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市金山区2025-2026学年第二学期质量监控高三数学试卷
- 2026年高职(光伏发电技术)电站运维流程综合测试题及答案
- 2026年高职(高速铁路工程技术)高铁建设流程专项测试题及答案
- 工作方案:点燃火种照亮未来-基于“优势发展”的高中学生激励与成长计划
- 武亿:乾嘉金石学领域的学术贡献与时代印记
- 正则化边界元方法求解二维弹性力学边界条件识别反问题研究
- 2026年单位能源管理考试试题及答案
- 2026年会计职业道德考试试题及答案
- 欠发达地区科技支撑经济发展体系构建与实践-以江西省科技创新“六个一”工程为范例
- 橘荔散结片联合GnRH-a治疗围绝经期子宫肌瘤合并异常子宫出血的疗效与机制探究
- 三级 模块三 项目九 心理辅导 任务一 正确应对岗位工作压力
- 班组内部管理办法制度
- 黑龙江省考面试真题(省市级综合类)
- 2026年高考历史全真模拟试卷及答案(共五套)
- 2026年南阳科技职业学院单招职业技能考试题库带答案详解(a卷)
- 2025年邮政四级副干部竞聘笔试考试题及答案
- 2026年春季人教PEP版四年级下册英语Unit 3 Time for school 教案(共6课时)
- 2025年四川传媒学院马克思主义基本原理概论期末考试模拟题含答案解析(必刷)
- 2025年新版采矿新技术题目及答案
- 2025年汉中职业技术学院招聘考试真题
- 2026洛阳钼业招聘笔试题及答案
评论
0/150
提交评论