We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
- Prepare
- C++
- Debugging
- Hotel Prices
- Discussions
Hotel Prices
Hotel Prices
+ 0 comments #include
include
using namespace std;
class HotelRoom { public: HotelRoom(int bedrooms, int bathrooms) : bedrooms_(bedrooms), bathrooms_(bathrooms) {}
virtual int get_price() { return 50*bedrooms_ + 100*bathrooms_; }
private: int bedrooms_; int bathrooms_; };
class HotelApartment : public HotelRoom { public: HotelApartment(int bedrooms, int bathrooms) : HotelRoom(bedrooms, bathrooms) {}
int get_price() { return HotelRoom::get_price() + 100; }
};
int main() { HotelRoom* hotel_room; HotelApartment* hotel_apartment; hotel_room = hotel_apartment;
int n; cin >> n; vector<HotelRoom*> rooms; for (int i = 0; i < n; ++i) { string room_type; int bedrooms; int bathrooms; cin >> room_type >> bedrooms >> bathrooms; if (room_type == "standard") { rooms.push_back(new HotelRoom(bedrooms, bathrooms)); } else if (room_type == "apartment") { rooms.push_back(new HotelApartment(bedrooms, bathrooms)); } } int total_profit = 0; for (auto room : rooms) { total_profit += room->get_price(); } cout << total_profit << endl; for (auto room : rooms) { delete room; } rooms.clear(); return 0;
}
+ 0 comments It's a matter of overriding.
#include <iostream> #include <vector> using namespace std; class HotelRoom { int bedrooms; int bathrooms; public: HotelRoom(int &bed, int &bath) : bedrooms(bed), bathrooms(bath) {} virtual int get_price() { return 50 * bedrooms + 100 * bathrooms; } }; class HotelApartment : public HotelRoom { public: HotelApartment(int &bedrooms, int &bathrooms) : HotelRoom(bedrooms, bathrooms) {} int get_price() override { return HotelRoom::get_price() + 100; } }; int main() { int n; cin >> n; vector<HotelRoom*> rooms; for (int i = 0; i < n; ++i) { string room_type; int bedrooms; int bathrooms; cin >> room_type >> bedrooms >> bathrooms; if (room_type == "standard") { rooms.push_back(new HotelRoom(bedrooms, bathrooms)); } else { rooms.push_back(new HotelApartment(bedrooms, bathrooms)); } } int total_profit = 0; for (auto room : rooms) { total_profit += room->get_price(); } cout << total_profit << endl; for (auto room : rooms) { delete room; } rooms.clear(); return 0; }
+ 0 comments #include <iostream> #include <vector> using namespace std; class HotelRoom { public: HotelRoom(int bedrooms, int bathrooms) : bedrooms_(bedrooms), bathrooms_(bathrooms) {} virtual int get_price() { return 50*bedrooms_ + 100*bathrooms_; } private: int bedrooms_; int bathrooms_; }; class HotelApartment : public HotelRoom { public: HotelApartment(int bedrooms, int bathrooms) : HotelRoom(bedrooms, bathrooms) {} int get_price() { return HotelRoom::get_price() + 100; } }; int main() { HotelRoom* hotel_room; HotelApartment* hotel_apartment; hotel_room = hotel_apartment; int n; cin >> n; vector<HotelRoom*> rooms; for (int i = 0; i < n; ++i) { string room_type; int bedrooms; int bathrooms; cin >> room_type >> bedrooms >> bathrooms; if (room_type == "standard") { rooms.push_back(new HotelRoom(bedrooms, bathrooms)); } else if (room_type == "apartment") { rooms.push_back(new HotelApartment(bedrooms, bathrooms)); } } int total_profit = 0; for (auto room : rooms) { total_profit += room->get_price(); } cout << total_profit << endl; for (auto room : rooms) { delete room; } rooms.clear(); return 0; }
+ 0 comments just use virtual function to override the function of get_price
+ 0 comments just use virtual function to override the function of get_price
Load more conversations
Sort 96 Discussions, By:
Please Login in order to post a comment