您现在的位置: 汕头自考网 >> 串讲笔记 >> 工学类 >> 正文
  • 面向对象上机考试题—关于堆栈(续)
  • 发布日期时间:2007-1-14  来源:网络   点击数:  作者:佚名

  //建立一个栈类,能够存放图形元素(矩形或圆形),有入栈,出栈。

  //取栈顶的功能。建立元素类,里面至少一个纯虚函数,矩形和圆形类。

  //来实现里面的函数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<<"长方形的长宽分别为:("<<length
   <<","<<width<<")"<<endl;  
 }
};
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<<"圆的圆心坐标为:("<<width<<","<<length<<")"
   <<" 半径为:"<<r<<endl;
 }
};
class stack
{
 shape *sp[n];
 rectangle rec[n];
 circle cir[n];
 int size;
public:
 stack()
 {
  for (int i=0; i<n; i++)
   sp[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<<"栈为空"<<endl;
  else {
   cout<<"栈顶元素为:"<<endl;
   sp[size]->ShowMe();   
  }
  
 }
 void pop()
 {
  if (empty()) cout<<"栈为空"<<endl;
  else {
   cout<<"出栈元素为:"<<endl;
   sp[size--]->ShowMe();     
  }
 }
};
void main()
{
 stack Stack;
 rectangle rec;

[1] [2] 下一页

文章转载请注明来源于:汕头自考网