欢迎您访问贵州自考网!网站为考生提供贵州自考信息服务,供学习交流使用,非政府官方网站,官方信息以贵州省招生考试院(http://zsksy.guizhou.gov.cn/)为准 登录  网站导航

贵州自考网

自考热线:400-0929-629

面向对象上机考试题—关于堆栈(续)

编辑整理:  贵州自考网 发表时间:  2018-05-23   【   点击数:

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

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

  //来实现里面的函数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()
 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;
 circle cir;
 int s=1;
 while (s)
 {
 cout<<endl;
 cout<<"请选择1-5号键*作"<<endl;
 cout<<" 1: 矩形进栈;"<<endl;
 cout<<" 2: 圆进栈;"<<endl;
 cout<<" 3: 显示栈顶元素;"<<endl;
 cout<<" 4: 出栈;"<<endl;
 cout<<" 5: 退出程序;"<<endl;
 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<<"请重新输入"<<endl; break;
 }
 }
}


本文标签:贵州自考 学习笔记 面向对象上机考试题—关于堆栈(续)

转载请注明:文章转载自(http://www.crzkw.cn/

本文地址:http://www.crzkw.cn/xxbj/454.html


小编提示:添加【贵州自考网】招生老师微信,即可了解2024年贵州自考政策资讯自考报名入口准考证打印入口成绩查询时间以及领取历年真题资料个人专属备考方案等相关信息!

贵州自考网招生老师微信
(添加“贵州自考网”招生老师微信,在线咨询报名报考等相关问题)


贵州自考网微信公众号

贵州自考网课程中心

贵州自考网声明:

1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。

2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。

贵州自考便捷服务

  • 微信交流群
  • 微信公众号


微信扫一扫加入考生微信群
①学习交流、②考试提醒、③自考解答
④自考资料、⑤新闻通知、⑥备考指导

  • 视频课程
  • 真题下载
概率论与数理统计

概率论与数理统计

马克思主义基本原理概论

马原概论

中国近现代史纲要

中国近现代史纲要

思想道德修养与法律基础

思修03706

内科护理学(一)

内科护理学(一)

文学概论(一)

文学概论(一)