首页>计算机>软件水平考试>模拟试题>正文
面向对象上机考试题(3)堆栈(续)

www.zige365.com 2008-11-6 22:01:56 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

//建立一个栈类,能够存放图形元素(矩形或圆形),有入栈,出栈,
//取栈顶的功能。建立元素类,里面至少一个纯虚函数,矩形和圆形类
//来实现里面的函数SHOWME,实现他的显示图形信息的功能。重载>>,
//能够输入图形信息。测试以上类的功能。


#include "stdafx.h"
#include "iostream.h"
#include "string.h"
const n=50;

class shape
{
protected:
double width, length;
public:
shape() {}
virtual void ShowMe()=0;
};

class rectangle:public shape
{
public:
rectangle():shape(){}
friend istream &operator>>(istream &is, rectangle &rec)
{
cout<<"请输入长方形的长:";
is>>rec.length;
cout<<"请输入长方形的宽:";
is>>rec.width;
return is;
}
void ShowMe()
{
cout<<"长方形的长宽分别为:("<<<","<}
};

class circle:public shape
{
private:
//double x, y;
double r;
public:
circle():shape(){r=0;}
friend istream &operator>>(istream &is, circle &cir)
{
cout<<"请输入圆的圆心坐标(x,y):";
is>>cir.width;
is>>cir.length;
cout<<"请输入圆的半径:";
is>>cir.r;
return is;
}
void ShowMe()
{
cout<<"圆的圆心坐标为:("<<<" 半径为:"<}
};

class stack
{
shape *sp[n];
rectangle rec[n];
circle cir[n];
int size;
public:
stack()
{
for (int i=0; isp[i]=NULL;
size=-1;
}
bool empty(){return size==-1;}
bool full(){return size==n-1;}

void push(rectangle &rect)
{
rec[++size]=rect;
sp[size]=new rectangle;
sp[size]=&rec[size];
}
void push(circle &circ)
{
cir[++size]=circ;
sp[size]=new circle;
sp[size]=&cir[size];
}
void top()
{
if (empty()) cout<<"栈为空"<else {
cout<<"栈顶元素为:"<sp[size]->ShowMe();
}

}

void pop()
{
if (empty()) cout<<"栈为空"<else {
cout<<"出栈元素为:"<sp[size--]->ShowMe();
}
}
};

void main()
{
stack Stack;
rectangle rec;
circle cir;
int s=1;
while (s)
{
cout<cout<<"请选择1-5号键*作"<cout<<" 1: 矩形进栈;"<cout<<" 2: 圆进栈;"<cout<<" 3: 显示栈顶元素;"<cout<<" 4: 出栈;"<cout<<" 5: 退出程序;"<cin>>s;
switch(s)
{
case 1: cin>>rec; Stack.push(rec); break;
case 2: cin>>cir; Stack.push(cir); break;
case 3: Stack.top(); break;
case 4: Stack.pop(); break;
case 5: s=0; break;
//default: cout<<"请重新输入"<}
}
}

我要投稿 新闻来源: 编辑: 作者:
相关新闻
08年11月软考英语考前练习试题及答案汇总
08年11月软考英语考前练习试题及翻译(1)
08年11月软考英语考前练习及解析(18)
08年11月软考英语考前练习试题及解析(17)
08年11月软考英语考前练习试题及解析(16)
08年11月软考英语考前练习试题及解析(15)