一道C++编程题,大家帮我看看哪儿有问题
题目:设计带异常处理的栈类(stack)及其异常类,栈内存放数据为int类型,能处理数据入栈时栈满、数据出栈时栈空异常,请完成其构造、析构函数和成员函数。class iStack{
int
*pa;
int
top;//指示栈顶位置
int
capacity;//栈的容量
public:
iStack(int maxsize);
iStack(int *a); //用已存在的一维数组来初始化
void
pop(int& tva);
//入栈
void
push( );
//出栈
~ iStack( );};
我编的程序:
#include <iostream>
using namespace std;
class popEmpty{
public:
popEmpty(){}
~popEmpty(){}
};
class pushFull{
public:
pushFull(int i):value(i){}
~pushFull(){}
int value;
};
class iStack{
private:
int
*pa;
int
top;
//指示栈顶位置
int
capacity;
//栈的容量
public:
iStack(int maxsize);
iStack(int maxsize,int n,int *a);
//用已存在的一维数组来初始化,n为数组大小
void
pop(int &tva);
//出栈
void
push(int tva);
//入栈
void
iStack_print();
//显示栈内元素
~ iStack( ){delete []pa;}
//释放开辟的空间
}
iStack::iStack(int maxsize)
//开辟空间、并使其初始化为0
{
capacity=maxsize;
top=0;
pa=new int;
for(int i=0;i<maxsize;i++)
pa=0;
}
iStack::iStack(int maxsize,int n,int *a)
//被a初始化以外的剩余元素初始化为0
{
capacity=maxsize;
top=n;
pa=new int;
for(int i=0;i<n;i++)
pa=a;
for(int j=n;j<maxsize;j++)
pa=0;
}
void iStack::pop(int &tva)
{
if(top==0)
throw popEmpty();
tva=pa[--top];
cout<<"出栈元素:"<<tva<<endl;
}
void iStack::push(int tva)
{
if(top==capacity)
throw pushFull(tva);
cout<<"入栈元素:"<<tva<<endl;
pa = tva;
}
void iStack::iStack_print()
{
if(top == 0)
{ cout<<"栈空"<<endl; }
cout<<"栈的全部元素为:";
for(int i=0;i<top;i++)
{
cout<<pa<<" ";
}
cout<<endl;
}
int main()
{
int popvalue;
int a={1,2,3,4,5};
iStack stack1(8);
iStack stack2(9,5,a);
try{
// 根据不同情况设计的入、出栈程序检查类及构造函数是否满足要求
//
for(int i=1;i<5;i++)
//
stack2.push(i);
//
stack2.iStack_print();
//
for(int i=1;i<5;i++)
//
stack1.push(i);
//
stack1.iStack_print();
stack1.pop(popvalue);
cout<<popvalue<<endl;
//
stack2.pop(popvalue);
//
cout<<popvalue<<endl;
}
catch (pushFull obj)
{
cerr<<"trying to push a value "<<obj.value<<" on a full stack"<<endl;
}
catch (popEmpty)
{
cerr<<"trying to pop a value on an empty stack"<<endl;
}
return 0;
}
请帮我看看哪儿有问题,我怎么运行不了?
页:
[1]