c++程序运行时错误问提

zengshi000 zengshi000 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想做个简单的四则运算计算器。例如:输入“3+2*5”然后打印出结果。下面这个是我自己做的,用VC2005调试说有这样的错误 : 0x004038e6 处未处理的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突。
请问问题的原因是什么?怎样改正呢?
下面是程序清单:
#include <iostream>
#include <string>
using namespace std;

template<class T>
class Stack
{
private:
T* button;
T* top;

public:
Stack(){
button=new T[100];

top=button=0;

}
~Stack(){delete [] button;}
void Push(T elem);
T Pop();
T* Getbutton();
T* Gettop();
};
template<class T>
void Stack<T>::Push(T elem)
{
*top++=elem; //提示的是这里出错


}
template<class T>
T Stack<T>::Pop()
{
top--;
return *top;
}
template<class T>
T* Stack<T>::Getbutton()
{
return button;
}
template<class T>
T* Stack<T>::Gettop()
{
return top;
}

int main()
{
int i=0;
string a;
Stack<float> s;
Stack<char> f;
cout<<"请输入您要计算的表达式:"<<endl;
cin>>a;
while(a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
i++;
float *pt=0;
for(pt=s.Gettop();i!=a.size();i++)
{
if(a[i]=='*'){
*(pt-1)=*(pt-1)*(float(a[i+1])-48);
i++;}

else if(a[i]=='/'){
*(pt-1)=*(pt-1)/(float(a[i+1])-48);
i++;}

else if(a[i]=='+'||a[i]=='-')
f.Push(a[i]);

else{
s.Push(float(a[i])-48);
pt++;
}

}
char* pfb;
float* psb;
for(pfb=f.Getbutton(),psb=s.Getbutton();pfb!=f.Gettop();psb++,pfb++)
{
if(*pfb=='+'){
*(psb+1)=*psb+*(psb+1);
}
else{
*(psb+1)=*psb-*(psb+1);
}


}
cout<<"结果是:"<<s.Pop()<<endl;
return 0;
}
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
zengshi000
C++ 语言 65,214 成员 250,514 内容