Advertisement
HeatPulse

Igri

May 19th, 2019
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.00 KB | None | 0 0
  1. Игри Problem 7 (0 / 0)
  2. Потребно е да се имплементира класа за компјутерска игра (Game), што содржи информации за:
  3.  
  4. име на играта (низа од макс. 100 знаци)
  5. цена на играта (децимален број)
  6. дали е играта купена на распродажба (bool променлива).
  7. Од класата Game да се изведе класа SubscriptionGame, што дополнително ќе чува:
  8.  
  9. месечен надоместок за играње (децимален број).
  10. датум кога играта е купена (месец и година како позитивни цели броеви)
  11. За класите Game и SubscriptionGame да се преоптоварат операторите за печатење (<< ) и читање (>>). Да се дефинира и операторот == кој ќе споредува игри според нивното име.
  12.  
  13. Да се дефинира класа за корисник (User) во која се чуваат:
  14.  
  15. кориснично име на корисникот (низа од макс. 100 знаци)
  16. колекција од игри кои се купени од корисникот (динамички алоцирана низа).
  17. Да се преоптовари операторот += кој ќе овозможи додавање на нова игра во колекцијата на игри. Притоа ако корисникот ја има веќе купено играта, потребно е да се креира исклучок од типот ExistingGame. Класата за имплементација на исклучоци потребно е има соодветен конструктор и метода message за печатење на порака на екран.
  18.  
  19. Да се креира и метода total_spent() во класата User која ќе пресметува колку пари корисникот потрошил за својата колекција од игри. Доколку играта е купена на распродажба, цената на играта е 30% од стандарната цена. Доколку играта е од типот SubscriptionGame, потребно е да се вкалкулира и сумата потрошена за месечниот надоместок (број_на_изминати_месеци x цена_на_месечен_надоместок) без да се земе во предвид моменталниот месец (мај 2018).
  20.  
  21. Да се преоптовари и оператоторот за печатење на корисникот, која печати информации во сл. формат (види тест примери 7 до 12):
  22.  
  23. User: username
  24. - Game: PUBG, regular price: $70, bought on sale
  25. Game: Half Life 2, regular price: $70
  26. Game: Warcraft 4, regular price: 40,monthlyfee:10, purchased: 1-2017
  27. Листа на дел од методите со нивни прототипови кои се користат во main:
  28.  
  29. ЕxistingGame::message()
  30. Game::operator==(Game&)
  31. User::operator+=(Game&)
  32. User::get_game(int)
  33. User::total_spent(int)
  34. User::get_name()
  35. User::get_games_number()
  36.  
  37.  
  38. #include <iostream>
  39.  
  40. // Your code goes here
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. int main() {
  49. int test_case_num;
  50.  
  51. cin>>test_case_num;
  52.  
  53. // for Game
  54. char game_name[100];
  55. float game_price;
  56. bool game_on_sale;
  57.  
  58. // for SubscritionGame
  59. float sub_game_monthly_fee;
  60. int sub_game_month, sub_game_year;
  61.  
  62. // for User
  63. char username[100];
  64. int num_user_games;
  65.  
  66. if (test_case_num == 1){
  67. cout<<"Testing class Game and operator<< for Game"<<std::endl;
  68. cin.get();
  69. cin.getline(game_name,100);
  70. cin>>game_price>>game_on_sale;
  71.  
  72. Game g(game_name, game_price, game_on_sale);
  73.  
  74. cout<<g;
  75. }
  76. else if (test_case_num == 2){
  77. cout<<"Testing class SubscriptionGame and operator<< for SubscritionGame"<<std::endl;
  78. cin.get();
  79. cin.getline(game_name, 100);
  80.  
  81. cin>>game_price>>game_on_sale;
  82.  
  83. cin>>sub_game_monthly_fee;
  84. cin>>sub_game_month>>sub_game_year;
  85.  
  86. SubscriptionGame sg(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
  87. cout<<sg;
  88. }
  89. else if (test_case_num == 3){
  90. cout<<"Testing operator>> for Game"<<std::endl;
  91. Game g;
  92.  
  93. cin>>g;
  94.  
  95. cout<<g;
  96. }
  97. else if (test_case_num == 4){
  98. cout<<"Testing operator>> for SubscriptionGame"<<std::endl;
  99. SubscriptionGame sg;
  100.  
  101. cin>>sg;
  102.  
  103. cout<<sg;
  104. }
  105. else if (test_case_num == 5){
  106. cout<<"Testing class User and operator+= for User"<<std::endl;
  107. cin.get();
  108. cin.getline(username,100);
  109. User u(username);
  110.  
  111. int num_user_games;
  112. int game_type;
  113. cin >>num_user_games;
  114.  
  115. try {
  116.  
  117. for (int i=0; i<num_user_games; ++i){
  118.  
  119. cin >> game_type;
  120.  
  121. Game *g;
  122. // 1 - Game, 2 - SubscriptionGame
  123. if (game_type == 1){
  124. cin.get();
  125. cin.getline(game_name, 100);
  126.  
  127. cin>>game_price>>game_on_sale;
  128. g = new Game(game_name, game_price, game_on_sale);
  129. }
  130. else if (game_type == 2){
  131. cin.get();
  132. cin.getline(game_name, 100);
  133.  
  134. cin>>game_price>>game_on_sale;
  135.  
  136. cin>>sub_game_monthly_fee;
  137. cin>>sub_game_month>>sub_game_year;
  138. g = new SubscriptionGame(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
  139. }
  140.  
  141. u+=(*g);
  142. }
  143. }catch(ExistingGame &ex){
  144. ex.message();
  145. }
  146.  
  147. cout<<u;
  148.  
  149.  
  150. }
  151. else if (test_case_num == 6){
  152. cout<<"Testing exception ExistingGame for User"<<std::endl;
  153. cin.get();
  154. cin.getline(username,100);
  155. User u(username);
  156.  
  157. int num_user_games;
  158. int game_type;
  159. cin >>num_user_games;
  160.  
  161. for (int i=0; i<num_user_games; ++i){
  162.  
  163. cin >> game_type;
  164.  
  165. Game *g;
  166. // 1 - Game, 2 - SubscriptionGame
  167. if (game_type == 1){
  168. cin.get();
  169. cin.getline(game_name, 100);
  170.  
  171. cin>>game_price>>game_on_sale;
  172. g = new Game(game_name, game_price, game_on_sale);
  173. }
  174. else if (game_type == 2){
  175. cin.get();
  176. cin.getline(game_name, 100);
  177.  
  178. cin>>game_price>>game_on_sale;
  179.  
  180. cin>>sub_game_monthly_fee;
  181. cin>>sub_game_month>>sub_game_year;
  182. g = new SubscriptionGame(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
  183. }
  184.  
  185. //cout<<(*g);
  186.  
  187. try {
  188. u+=(*g);
  189. }
  190. catch(ExistingGame &ex){
  191. ex.message();
  192. }
  193. }
  194.  
  195. cout<<u;
  196.  
  197. }
  198. else if (test_case_num == 7){
  199. cout<<"Testing total_spent method() for User"<<std::endl;
  200. cin.get();
  201. cin.getline(username,100);
  202. User u(username);
  203.  
  204. int num_user_games;
  205. int game_type;
  206. cin >>num_user_games;
  207.  
  208. for (int i=0; i<num_user_games; ++i){
  209.  
  210. cin >> game_type;
  211.  
  212. Game *g;
  213. // 1 - Game, 2 - SubscriptionGame
  214. if (game_type == 1){
  215. cin.get();
  216. cin.getline(game_name, 100);
  217.  
  218. cin>>game_price>>game_on_sale;
  219. g = new Game(game_name, game_price, game_on_sale);
  220. }
  221. else if (game_type == 2){
  222. cin.get();
  223. cin.getline(game_name, 100);
  224.  
  225. cin>>game_price>>game_on_sale;
  226.  
  227. cin>>sub_game_monthly_fee;
  228. cin>>sub_game_month>>sub_game_year;
  229. g = new SubscriptionGame(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
  230. }
  231.  
  232. //cout<<(*g);
  233.  
  234.  
  235. u+=(*g);
  236. }
  237.  
  238. cout<<u;
  239.  
  240. cout<<"Total money spent: $"<<u.total_spent()<<endl;
  241. }
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement