在c++中栈已经有stl容器定义过了,在这里面我就不写栈的定义的那部分了(因为太麻烦了)
进制转换非常简单,尤其是这次只要求了十以内进制的转换,我们只需要先输入要转换的进制t,然后输入要转换的数n,每次求n对进制t取模,压入栈中,最后再一直pop到栈为空即可.
代码如下
void Dataturn(int t,int n)
{
stack<int> s;
if(n==0)cout<<0<<endl;
else{
while(n){
s.push(n%t);
n/=t;
}
while(!empty(s)){
cout<<s.top();
s.pop();
}
}
}
实现计算器相对来说比较麻烦,需要先进行我们常用的中缀表达式转换成计算机能线性一次读完的后缀表达式(又叫波兰式),实现转换后就非常简单了,我们在进行转换之前需要对运算符的优先级进行比较,我们可以bool一个cmp函数来进行运算符优先级的比较
bool cmp(char a,char b)