lmhou2005 发表于 2010-3-4 17:35:29

一道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]
查看完整版本: 一道C++编程题,大家帮我看看哪儿有问题