早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c++算式计算器,输入算式如tan(10+2*2+tan(22+2)),可以直接得出答案

题目详情
c++算式计算器,输入算式如tan(10+2*2+tan(22+2)),可以直接得出答案
▼优质解答
答案和解析
#include
#include
using namespace std;
const int SZ=1000;
char symb(char &symb1,char &symb2);//比较操作符的优先级的函数
double oprt(double &a,double &b,char &op);//进行运算的函数
template
class Stack
{
\x05public:\x05
\x05\x05Stack(int MaxSize=100);
\x05\x05~Stack(){delete []stack;}
\x05\x05bool IsEmpty()const{return top==-1;}
\x05\x05bool IsFull()const{return top==MaxTop;}
\x05\x05T Top()const;//返回栈顶元素
\x05\x05Stack &push(const T &x);
\x05\x05Stack &pop(T &x);
friend istream &operator>>(istream &,char &); //重载输入操作符
\x05private:
\x05\x05int top;
\x05\x05int MaxTop;
\x05\x05T *stack;
};
template
Stack::Stack(int MaxSize)
{
\x05MaxTop=MaxSize-1;
\x05stack= new T[MaxSize];
\x05top=-1;
}
template
T Stack::Top()const//返回栈顶元素
{ return stack[top]; }
template
Stack &Stack::push(const T &x)
{
\x05if(!IsFull())
\x05\x05top++;
\x05stack[top]=x;
\x05return *this;
}
template
Stack &Stack::pop(T &x)
{
\x05if(!IsEmpty())
\x05\x05x=stack[top--];
\x05return *this;
}
istream &operator>>(istream &in,char &)
{
\x05char exp[SZ];
\x05in.getline(exp,SZ,'#');
\x05\x05return in;
}
bool IsData(char ch)
{
return (((ch>='0'&&ch