C 物件導向練習 魔獸世界備戰練習

2021-08-18 19:46:55 字數 3420 閱讀 6782

總時間限制: 

1000ms

記憶體限制: 

65536kb 描述

魔獸世界的西面是紅魔軍的司令部,東面是藍魔軍的司令部。兩個司令部之間是依次排列的若干城市。 

紅司令部,city 1,city 2,……,city n,藍司令部

兩軍的司令部都會製造武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五種。每種武士都有編號、生命值、攻擊力這三種屬性。 

雙方的武士編號都是從1開始計算。紅方製造出來的第n個武士,編號就是n。同樣,藍方製造出來的第n個武士,編號也是n。 

武士在剛降生的時候有乙個生命值。 

在每個整點,雙方的司令部中各有乙個武士降生。 

紅方司令部按照iceman、lion、wolf、ninja、dragon的順序迴圈製造武士。 

藍方司令部按照lion、dragon、ninja、iceman、wolf的順序迴圈製造武士。 

製造武士需要生命元。 

製造乙個初始生命值為m的武士,司令部中的生命元就要減少m個。 

如果司令部中的生命元不足以製造某個按順序應該製造的武士,那麼司令部就試圖製造下乙個。如果所有武士都不能製造了,則司令部停止製造武士。

給定乙個時間,和雙方司令部的初始生命元數目,要求你將從0點0分開始到雙方司令部停止製造武士為止的所有事件按順序輸出。

一共有兩種事件,其對應的輸出樣例如下: 

1) 武士降生 

輸出樣例: 004 blue lion 5 born with strength 5,2 lion in red headquarter

表示在4點整,編號為5的藍魔lion武士降生,它降生時生命值為5,降生後藍魔司令部裡共有2個lion武士。(為簡單起見,不考慮單詞的複數形式)注意,每製造出乙個新的武士,都要輸出此時司令部裡共有多少個該種武士。

2) 司令部停止製造武士

輸出樣例: 010 red headquarter stops ****** warriors

表示在10點整,紅方司令部停止製造武士

輸出事件時: 

首先按時間順序輸出; 

同一時間發生的事件,先輸出紅司令部的,再輸出藍司令部的。

輸入第一行是乙個整數,代表測試資料組數。

每組測試資料共兩行。 

第一行:乙個整數m。其含義為, 每個司令部一開始都有m個生命元( 1 <= m <= 10000)。

第二行:五個整數,依次是 dragon 、ninja、iceman、lion、wolf 的初始生命值。它們都大於0小於等於10000。

輸出對每組測試資料,要求輸出從0時0分開始,到雙方司令部都停止製造武士為止的所有事件。

對每組測試資料,首先輸出"case:n" n是測試資料的編號,從1開始 。

接下來按恰當的順序和格式輸出所有事件。每個事件都以事件發生的時間開頭,時間以小時為單位,有三位。

樣例輸入

1

203 4 5 6 7

樣例輸出

case:1

000 red iceman 1 born with strength 5,1 iceman in red headquarter

000 blue lion 1 born with strength 6,1 lion in blue headquarter

001 red lion 2 born with strength 6,1 lion in red headquarter

001 blue dragon 2 born with strength 3,1 dragon in blue headquarter

002 red wolf 3 born with strength 7,1 wolf in red headquarter

002 blue ninja 3 born with strength 4,1 ninja in blue headquarter

003 red headquarter stops ****** warriors

003 blue iceman 4 born with strength 5,1 iceman in blue headquarter

004 blue headquarter stops ****** warriors

這個**比較複雜

#include #include #include using namespace std;

const int warrior_num = 5;

/*string warrior::names[warrior_num] = ;

紅方司令部按照 iceman、lion、wolf、ninja、dragon 的順序製造武士。

藍方司令部按照 lion、dragon、ninja、iceman、wolf 的順序製造武士。

*/class headquarter;

class warrior

;class headquarter

;warrior::warrior( headquarter * p,int no_,int kindno_ )

void warrior::printresult(int ntime)

void headquarter::init(int color_, int lv)

headquarter::~headquarter ()

int headquarter::produce(int ntime)

int kindno = ******seq[color][cur******seqidx];

if( warrior::initiallifevalue[kindno] > totallifevalue )

//製作士兵:

totallifevalue -= warrior::initiallifevalue[kindno];

cur******seqidx = ( cur******seqidx + 1 ) % warrior_num;

pwarriors[totalwarriornum] = new warrior( this,totalwarriornum+1,kindno);

warriornum[kindno]++;

pwarriors[totalwarriornum]->printresult(ntime);

totalwarriornum++;

return 1;

}string headquarter::getcolor()

string warrior::names[warrior_num] = ;

int warrior::initiallifevalue [warrior_num];

int headquarter::******seq[2][warrior_num] = , }; //兩個司令部武士的製作順序序列

int main()

} return 0;

}

物件導向練習

定義boat和car兩個類,兩者都有私有成員weight屬性,定義兩者的乙個友員函式totalweight 計算兩個類的物件的重量和。請根據給定的main函式和totalweight 函式的定義,完善boat和car兩個類。友元函式的使用 include using namespace std cl...

物件導向練習

include hero.class.php hero new hero 張三 建立英雄 hero daguai hero show hero daguai hero show hero daguai hero show hero daguai hero show hero daguai hero ...

C 物件導向繼承多型練習

總時間限制 1000ms 記憶體限制 65536kb 在此處補充你的 描述 程式填空產生指定輸出 include using namespace std class b void fun b int n int main 輸入無輸出 d fun b fun d fun nbval 2 nbval 2...