problem-g-来开个书店吧

上传人:F****n 文档编号:98085879 上传时间:2019-09-08 格式:DOCX 页数:6 大小:18.96KB
返回 下载 相关 举报
problem-g-来开个书店吧_第1页
第1页 / 共6页
problem-g-来开个书店吧_第2页
第2页 / 共6页
problem-g-来开个书店吧_第3页
第3页 / 共6页
problem-g-来开个书店吧_第4页
第4页 / 共6页
problem-g-来开个书店吧_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《problem-g-来开个书店吧》由会员分享,可在线阅读,更多相关《problem-g-来开个书店吧(6页珍藏版)》请在金锄头文库上搜索。

1、Problem G 来开个书店吧Time Limit:1 SecMemory Limit:128 MBSubmit:815Solved:424SubmitStatusWeb BoardDescription某出版社可出版图书和磁带。其中图书按照每页的价格乘以页数进行定价,磁带根据每10分钟的价格乘以磁带录音的分钟数进行定价。请定义Publicatioin、Book、Tape以及BookStore四个类。其中:1. Publication类:1)数据成员double price表示单价(对于书,是每页的价格;对于磁带,是每10分钟录音的价格)。2)数据成员int length表示出版物的长度,对

2、于书,是页数;对于磁带, 是分钟数。3)成员函数getTotalPrice()用于返回一个出版物的定价。4)构造函数Publication(double, int)用于构造一个出版物。5)成员函数double getPrice() const和int getLength()用于返回出版物的单价及长度。6)析构函数。2. Book类是Publication的子类。1)构造函数Book(double,int)。2)重写父类的getTotalPrice返回定价,定价为单价乘以长度(即页数)。3)析构函数。3. Tape是Publication的子类:1)构造函数Tape(double,int)。2)

3、重写父类的getTotalPrice返回定价。注意:price属性是每10分钟录音的单价,而磁带的长度不一定是10的整数倍。计算定价时,不足10分钟部分,按照10分钟计算。3)析构函数。4.BookStore是书店,具有数据成员Publications *pubs,是书店拥有的出版物列表;int num表示书店拥有的出版物数量。成员函数int getNumOfBook()和int getNumOfTape()分别计算书店中拥有的Book和Tape的数量。该类已经在appcode code中给出。Input输入分多行。第一行是整数M0,表示有M个测试用例。每个测试占一行,分为三部分:第一部分是出

4、版物类型(B表示Book,T表示Tape)、单价和数量(页数或分钟数)。Output见样例。Sample Input3B 0.10 201T 0.50 100T 0.40 105Sample OutputCall Publications constructor!Call Books constructor!Call Publications constructor!Call Tapes constructor!Call Publications constructor!Call Tapes constructor!Call Publications constructor!Call Book

5、s constructor!Call Publications constructor!Call Tapes constructor!Call Publications constructor!Call Tapes constructor!There are 1 books and 2 tapes. Their total price is 29.50.Call Books de-constructor!Call Publications de-constructor!Call Tapes de-constructor!Call Publications de-constructor!Call

6、 Tapes de-constructor!Call Publications de-constructor!Call Books de-constructor!Call Publications de-constructor!Call Tapes de-constructor!Call Publications de-constructor!Call Tapes de-constructor!Call Publications de-constructor!Call BookStores de-constructor!HINT使用typeid判断对象指针指向的实际对象的类型。Append C

7、ode#include#include#includeusing namespace std;class Publicationprotected:double price;int length;public:Publication(double p,int l):price(p),length(l)coutCall Publications constructor!endl;virtual Publication()coutCall Publications de-constructor!endl;virtual double getTotalPrice()return price*leng

8、th;double getPrice() constreturn price;int getLength()return length;class Book:public Publicationpublic:Book(double p,int l):Publication(p,l)coutCall Books constructor!endl;Book()coutCall Books de-constructor!endl;double getTotalPrice()return price*length;class Tape:public Publicationpublic:Tape(dou

9、ble p,int l):Publication(p,l)coutCall Tapes constructor!endl;Tape()coutCall Tapes de-constructor!0)tmp+;return tmp*price;class BookStoreprivate:Publication *pubs;int num;public:BookStore(Publication *p, int n)pubs = new Publication*n;num = n;for (int i = 0; i getPrice(), pi-getLength();elsepubsi = n

10、ew Tape(pi-getPrice(), pi-getLength();int getNumOfBook()int c = 0;for (int i = 0; i num; i+)if (typeid(*(pubsi) = typeid(Book)c+;return c;int getNumOfTape()int c = 0;for (int i = 0; i num; i+)if (typeid(*(pubsi) = typeid(Tape)c+;return c;BookStore()for (int i = 0; i num; i+)delete pubsi;delete pubs;

11、coutcases;pub = new Publication*cases;for (int i = 0; i typepricedate;switch(type)case B:pubi = new Book(price,date);break;case T:pubi = new Tape(price,date);break;BookStore bookStore(pub, cases);coutThere are bookStore.getNumOfBook() books and bookStore.getNumOfTape() tapes.;total = 0;for (int i = 0; i getTotalPrice();cout Their total price is setprecision(2)fixedtotal.endl;for (int i = 0; i cases; i+)delete pubi;delete pub;return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号