📄 fickyou.h
字号:
#include<iostream>
using namespace std;
template<class T>
class Stack {
public:
Stack(int MaxStackSize=10);
~Stack(){delete [] stack1;}
bool IsEmpty()const {return top==-1;}
bool IsFull()const{return top==MaxTop;}
T Top()const;
Stack<T>& Add(const T& x);
Stack<T>& Pop(T& x);
private:
int top;
int MaxTop;
T* stack1;
};
template<class T>
Stack<T>::Stack(int MaxStackSize)
{
MaxTop=MaxStackSize-1;
stack1=new T[MaxStackSize];
top=-1;
}
template<class T>
T Stack<T>::Top()const
{
if(!IsEmpty())
return stack1[top];
}
template<class T>
Stack<T>&Stack<T>::Add(const T& x)
{
if(!IsFull())
stack1[++top]=x;
return *this;
}
template<class T>
Stack<T>& Stack<T>::Pop(T& x)
{
if(!IsEmpty())
x=stack1[top--];
return *this;
}
class calculator
{
public:
calculator() {}
void Run( );
void clear( );
void AddOperand (double value) ;
bool Get2Operands(double & left, double & right) ;
void DoOperator (char op) ;
public: Stack <double> s ;
};
void calculator::AddOperand(double value)
{
s.Add(value);
}
bool calculator::Get2Operands(double &left,double &right)
{ if (s.IsEmpty())
{cerr<<"Missing Operand!"<<endl; return false;}
s.Pop(right);
if (s.IsEmpty())
{cerr<<"Missing Operand!"<<endl; return false;}
s.Pop(left);
return true;
}
void calculator::DoOperator(char op)
{ double left, right; bool result;
result = Get2Operands(left, right);
if (result==true)
switch (op)
{ case '+' : s.Add(left + right) ; break;
case '-' : s.Add(left - right) ; break;
case '*' : s.Add(left * right) ; break;
case '/' : /*if (right == 0.0)
{cerr << "divide by 0!" << endl; s.Clear( ); }
else*/ s.Add(left / right) ; break;
// case '^' : s.Add(power(left, right)); break;
}
//else s.Clear ( );
}
void calculator::Run ()
{ char ch; double newoperand;
while ( cin >>ch , ch != '#')
{ switch (ch)
{ case '+': case '-': case '*': case '/': case '^':
DoOperator(ch); break;
default: cin.putback(ch);
cin >> newoperand;
AddOperand(newoperand);
break;
}
}
}
/*void calculator::clear()
{
s.MakeEmpty();
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -