//建立一个栈类,能够存放图形元素(矩形或圆形),有入栈,出栈, //取栈顶的功能。建立元素类,里面至少一个纯虚函数,矩形和圆形类 //来实现里面的函数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<<"请重新输入"<} } }
下一篇:面向对象上机考试题(4)—关于队列
请实现一个队列,既可以存放整数,又可以存放字符串。简单的说,队列是一种数据结构,按照先进先出的顺序管理进、出队列的元素。本题要求完成: (1) 实现描述队列的类Queue,其中定义了队列的大小Size(即队列中可以存放的元素个数) ,并包括进队列函数Add,出队列函数Delete、显示队列头部元素的函数Head和显示队列尾部元素的函数Tail。 (2) 定义基类Element,至少包含纯虚函数ShowMe。 (3) 从基类Element中派生整数类MyInteger和字符串类MyString, 具体实现上述...[查看详情] |