SHARE
TWEET

Igri

HeatPulse May 19th, 2019 62 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top