找回密码
 注册
Simdroid-非首页
查看: 72|回复: 0

[2. C/C++/C#] 一道C++编程题,大家帮我看看哪儿有问题

[复制链接]
发表于 2010-3-4 17:35:29 | 显示全部楼层 |阅读模式 来自 北京海淀
题目:设计带异常处理的栈类(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[maxsize];



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[maxsize];




for(int i=0;i<n;i++)



pa=a;




for(int j=n;j<maxsize;j++)



pa[j]=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[top++] = 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[5]={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;

}
请帮我看看哪儿有问题,我怎么运行不了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 09:22 , Processed in 0.029199 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表