某出版社可出版圖書和磁帶。其中圖書按照每頁的**乘以頁數進行定價,磁帶根據每10分鐘的**乘以磁帶錄音的分鐘數進行定價。請定義publicatioin、book、tape以及bookstore四個類。其中:publication類:
1)資料成員double price表示單價(對於書,是每頁的**;對於磁帶,是每10分鐘錄音的**)。
2)資料成員int length表示出版物的長度,對於書,是頁數;對於磁帶, 是分鐘數。
3)成員函式gettotalprice()用於返回乙個出版物的定價。
4)建構函式publication(double, int)用於構造乙個出版物。
5)成員函式double getprice() const和int getlength()用於返回出版物的單價及長度。
6)析構函式。
book類是publication的子類。
1)建構函式book(double,int)。
2)重寫父類的gettotalprice返回定價,定價為單價乘以長度(即頁數)。
3)析構函式。
tape是publication的子類:
1)建構函式tape(double,int)。
2)重寫父類的gettotalprice返回定價。注意:price屬性是每10分鐘錄音的單價,而磁帶的長度不一定是10的整數倍。計算定價時,不足10分鐘部分,按照10分鐘計算。
3)析構函式。
輸入分多行。第一行是整數m>0,表示有m個測試用例。
每個測試佔一行,分為三部分:第一部分是出版物型別(b表示book,t表示tape)、單價和數量(頁數或分鐘數)。
見樣例。
3
b 0.10
201t 0.50
100t 0.40
105
call publication's constructor!
call book's constructor!
call publication's constructor!
call tape's constructor!
call publication's constructor!
call tape's constructor!
call publication's constructor!
call book's constructor!
call publication's constructor!
call tape's constructor!
call publication's constructor!
call tape's constructor!
there are 1 books and
2 tapes. their total price is 29.50
.call book's de-constructor!
call publication's de-constructor!
call tape's de-constructor!
call publication's de-constructor!
call tape's de-constructor!
call publication's de-constructor!
call book's de-constructor!
call publication's de-constructor!
call tape's de-constructor!
call publication's de-constructor!
call tape's de-constructor!
call publication's de-constructor!
call bookstore's de-constructor!
使用typeid判斷物件指標指向的實際物件的型別。
class
bookstore
else}}
intgetnumofbook()
return c;
}int
getnumoftape()
return c;}~
bookstore()
delete
pubs;
cout<<
"call bookstore's de-constructor!\n";}
};intmain()
} bookstore bookstore
(pub, cases)
; cout<<
"there are "
<<
" books and "
<<
" tapes."
; total =0;
for(
int i =
0; i < cases; i++
) cout<<
" their total price is "
<<
setprecision(2
)<"."
int i =
0; i < cases; i++
)delete
pub;
return0;
}
/**
* oj 作業九
* 2023年6月5日07:55:51
*/#include
#include
#include
#include
using
namespace std;
class
publication
virtual
double
gettotalprice()
const=0
;//double
getprice()
const
intgetlength()
virtual
~publication()
};class
book
:public publication
double
gettotalprice()
const
~book()
};class
tape
:public publication
double
gettotalprice()
const
~tape()
};
Problem B 來開個書店吧
time limit 1 sec memory limit 128 mb submit 1343 solved 776 submit status web board 某出版社可出版圖書和磁帶。其中圖書按照每頁的 乘以頁數進行定價,磁帶根據每10分鐘的 乘以磁帶錄音的分鐘數進行定價。請定義publi...
交大OJ 求素數個數 1783和 2110
problem d 素數的個數 time limit 1000ms memory limit 65536k total submit 183 accepted 28 description 數論是數學的乙個重要分支,素數是研究數論的重要課題之一。現在,你需要完成乙個任務,就是尋找區間 a,b 中素數...
OJ 1829 Problem B 新奇的加法運算
定義類newint,包括 int型別的資料成員。過載運算子 計算規則為 將a b對應位置上的數字相加,只保留個位數作為結果的對應位置上的數字。比如 876 543 319。注意 該運算不改變兩個運算元的值。過載輸入和輸出運算子,用於輸入和輸出物件的屬性值。無參建構函式和帶參建構函式。第1行n 0,表...