Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Игри Problem 7 (0 / 0)
- Потребно е да се имплементира класа за компјутерска игра (Game), што содржи информации за:
- име на играта (низа од макс. 100 знаци)
- цена на играта (децимален број)
- дали е играта купена на распродажба (bool променлива).
- Од класата Game да се изведе класа SubscriptionGame, што дополнително ќе чува:
- месечен надоместок за играње (децимален број).
- датум кога играта е купена (месец и година како позитивни цели броеви)
- За класите Game и SubscriptionGame да се преоптоварат операторите за печатење (<< ) и читање (>>). Да се дефинира и операторот == кој ќе споредува игри според нивното име.
- Да се дефинира класа за корисник (User) во која се чуваат:
- кориснично име на корисникот (низа од макс. 100 знаци)
- колекција од игри кои се купени од корисникот (динамички алоцирана низа).
- Да се преоптовари операторот += кој ќе овозможи додавање на нова игра во колекцијата на игри. Притоа ако корисникот ја има веќе купено играта, потребно е да се креира исклучок од типот ExistingGame. Класата за имплементација на исклучоци потребно е има соодветен конструктор и метода message за печатење на порака на екран.
- Да се креира и метода total_spent() во класата User која ќе пресметува колку пари корисникот потрошил за својата колекција од игри. Доколку играта е купена на распродажба, цената на играта е 30% од стандарната цена. Доколку играта е од типот SubscriptionGame, потребно е да се вкалкулира и сумата потрошена за месечниот надоместок (број_на_изминати_месеци x цена_на_месечен_надоместок) без да се земе во предвид моменталниот месец (мај 2018).
- Да се преоптовари и оператоторот за печатење на корисникот, која печати информации во сл. формат (види тест примери 7 до 12):
- User: username
- - Game: PUBG, regular price: $70, bought on sale
- Game: Half Life 2, regular price: $70
- Game: Warcraft 4, regular price: 40,monthlyfee:10, purchased: 1-2017
- Листа на дел од методите со нивни прототипови кои се користат во main:
- ЕxistingGame::message()
- Game::operator==(Game&)
- User::operator+=(Game&)
- User::get_game(int)
- User::total_spent(int)
- User::get_name()
- User::get_games_number()
- #include <iostream>
- // Your code goes here
- int main() {
- int test_case_num;
- cin>>test_case_num;
- // for Game
- char game_name[100];
- float game_price;
- bool game_on_sale;
- // for SubscritionGame
- float sub_game_monthly_fee;
- int sub_game_month, sub_game_year;
- // for User
- char username[100];
- int num_user_games;
- if (test_case_num == 1){
- cout<<"Testing class Game and operator<< for Game"<<std::endl;
- cin.get();
- cin.getline(game_name,100);
- cin>>game_price>>game_on_sale;
- Game g(game_name, game_price, game_on_sale);
- cout<<g;
- }
- else if (test_case_num == 2){
- cout<<"Testing class SubscriptionGame and operator<< for SubscritionGame"<<std::endl;
- cin.get();
- cin.getline(game_name, 100);
- cin>>game_price>>game_on_sale;
- cin>>sub_game_monthly_fee;
- cin>>sub_game_month>>sub_game_year;
- SubscriptionGame sg(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
- cout<<sg;
- }
- else if (test_case_num == 3){
- cout<<"Testing operator>> for Game"<<std::endl;
- Game g;
- cin>>g;
- cout<<g;
- }
- else if (test_case_num == 4){
- cout<<"Testing operator>> for SubscriptionGame"<<std::endl;
- SubscriptionGame sg;
- cin>>sg;
- cout<<sg;
- }
- else if (test_case_num == 5){
- cout<<"Testing class User and operator+= for User"<<std::endl;
- cin.get();
- cin.getline(username,100);
- User u(username);
- int num_user_games;
- int game_type;
- cin >>num_user_games;
- try {
- for (int i=0; i<num_user_games; ++i){
- cin >> game_type;
- Game *g;
- // 1 - Game, 2 - SubscriptionGame
- if (game_type == 1){
- cin.get();
- cin.getline(game_name, 100);
- cin>>game_price>>game_on_sale;
- g = new Game(game_name, game_price, game_on_sale);
- }
- else if (game_type == 2){
- cin.get();
- cin.getline(game_name, 100);
- cin>>game_price>>game_on_sale;
- cin>>sub_game_monthly_fee;
- cin>>sub_game_month>>sub_game_year;
- g = new SubscriptionGame(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
- }
- u+=(*g);
- }
- }catch(ExistingGame &ex){
- ex.message();
- }
- cout<<u;
- }
- else if (test_case_num == 6){
- cout<<"Testing exception ExistingGame for User"<<std::endl;
- cin.get();
- cin.getline(username,100);
- User u(username);
- int num_user_games;
- int game_type;
- cin >>num_user_games;
- for (int i=0; i<num_user_games; ++i){
- cin >> game_type;
- Game *g;
- // 1 - Game, 2 - SubscriptionGame
- if (game_type == 1){
- cin.get();
- cin.getline(game_name, 100);
- cin>>game_price>>game_on_sale;
- g = new Game(game_name, game_price, game_on_sale);
- }
- else if (game_type == 2){
- cin.get();
- cin.getline(game_name, 100);
- cin>>game_price>>game_on_sale;
- cin>>sub_game_monthly_fee;
- cin>>sub_game_month>>sub_game_year;
- g = new SubscriptionGame(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
- }
- //cout<<(*g);
- try {
- u+=(*g);
- }
- catch(ExistingGame &ex){
- ex.message();
- }
- }
- cout<<u;
- }
- else if (test_case_num == 7){
- cout<<"Testing total_spent method() for User"<<std::endl;
- cin.get();
- cin.getline(username,100);
- User u(username);
- int num_user_games;
- int game_type;
- cin >>num_user_games;
- for (int i=0; i<num_user_games; ++i){
- cin >> game_type;
- Game *g;
- // 1 - Game, 2 - SubscriptionGame
- if (game_type == 1){
- cin.get();
- cin.getline(game_name, 100);
- cin>>game_price>>game_on_sale;
- g = new Game(game_name, game_price, game_on_sale);
- }
- else if (game_type == 2){
- cin.get();
- cin.getline(game_name, 100);
- cin>>game_price>>game_on_sale;
- cin>>sub_game_monthly_fee;
- cin>>sub_game_month>>sub_game_year;
- g = new SubscriptionGame(game_name, game_price, game_on_sale, sub_game_monthly_fee, sub_game_month, sub_game_year);
- }
- //cout<<(*g);
- u+=(*g);
- }
- cout<<u;
- cout<<"Total money spent: $"<<u.total_spent()<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement