欢迎来到天天文库
浏览记录
ID:30867774
大小:134.87 KB
页数:9页
时间:2019-01-03
《数据结构实验之计算器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验五:计算器[实验题目]模拟一个简单的计算器,可以进行等运算,要求输入的表达式必须是后缀表达式。[概要分析]从键盘上输入一个后缀表达式,通过数据栈的方法,输入数据,遇数入栈,遇到符号从栈中弹出2个数据运算并将结果再压入栈屮,最后栈屮唯一的数据即为所求结果。建立SeqStack.h,Stack.h,Calculator.h,SeqStack.cpp,Calculator.cpp,CalculatorMain.cpp,Stack.cpp,七个文件。[详细设计]1•类图结构classClassModelT:classSeqStackfMax:int
2、fTop:intS:T*♦Clear():voidIsErrptyO:bool{query}+IsFullf):bool{query}+Pop():bool+Push(T):bool♦SeqStack(int)♦^SeqStackO♦Top(T&):bool{query}«friend»♦operator«(ostream&.SeqStack&):ostream&-operator»(istream&,SeqStack&):istream&fMax:intfTop:intCalculator+Calculator(int)+DoOp
3、erator(char):void+GetOperand(double&,double&):bool+PushOperand(doublG):void+Run():voidVT:classStack130501203513电子二班马璐瑶+Clear():void+IsErrptyO:bool{query}+IsFullf):bool{query}+Pop():bool+Push(T):bool+Top(T&):bool{query)2.核心代码(1)屮缀表达式转后缀表达式思路:从左向右扫描直到遇到“#”,遇数输出,遇符号入栈,确保入栈的符号的优
4、先级大于栈内符号优先级;遇“)”连续退符号肓至“(”;最后输出栈内所有剩余操作符。(2)后缀衣达式计算思路思路:遇数入栈,遇符号从栈中退出两个数据进行运算,并将结呆压入栈中,最后栈中唯一的数据即为结果,切记要将最终结果输出seq.Top(x);cout«x;具体代码(Run方法):voidCalculator::Run(){charch;doublex;while(cin»ch,ch!='#'){switch(ch){case"1:case1-1:case1*':case/:DoOperator(ch);break;default:cin.pu
5、tback(ch);cin»x;PushOperand(x);}}seq.Top(x);cout«"结果是:H«x«endl;}[程序代码]1・Calculator.h#ifndefCAL_H#defineCAL_H#include"SeqStack.h"classCalculatorpublic:Calculator(intsize);voidRun();voidPushOperand(doublex);voidDoOperatorfcharch);boolGetOperand(double&xl,double&x2);protected:p
6、rivate:SeqStackseq;};2.Stack.h#ifndefStack_h_#defineStack_h_templateclassStack{public:virtualboollsFull()const=0;virtualboolIsEmptyOconst=O;virtualboolPush仃x)=0;virtualboolPop()=0;virtualboolTop(T&x)const=O;virtualvoidClear()=0;protected:private:};#end讦3.SeqS
7、tack.h#if>defined(EAA1D9FD77F4E644clB98847CD75FBCB1AINCLUDED)#defineEA_AlD9FD77_F4E6_44cl_B988_47CD75FBCBlA_INCLUDED_#include"Stack.h"ttincludetemplateclassSeqStack:publicStack{private:intfMax;intfTop;T*s;public:SeqStackfintmax);virtual~SeqStack();virt
8、ualboolPush仃x);virtualboolPop();virtualboolTop(T&x)const;virtualvoidClear()
此文档下载收益归作者所有