Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I need to create two methods in the class Accomodation first a public member function with name get_arrival without parameter returning the arrival date.and the

I need to create two methods in the class Accomodation first a public member function with name get_arrival without parameter returning the arrival date.and the second is a public member function with name get_checkout without parameter returning the departure date (arrival date plus number of nights added by above defined operator in class Date).

these functions should make me able to ask and print the Date in yyyy-mm-dd form.

#include #include

using namespace std;

class Date {

private: int daysInMonth [12]={31,28,31,30,31,30,31,31,30,31,30,31}; short unsigned int day,month,year;

public: Date (int yy,int mm, int dd){

year=yy; month=mm; day=dd;

}

Date operator+(int n){ int newDay = day + n; int newMonth = month; int newYear = year;

while (newDay > daysInMonth[newMonth - 1]) { newDay -= daysInMonth[newMonth - 1]; newMonth++;

if (newMonth > 12) { newMonth = 1; newYear++; } }

return Date(newYear, newMonth, newDay); }

friend std::istream& operator>>(std::istream& is, Date& date) { char dash1, dash2; is >> date.year >> dash1 >> date.month >> dash2 >> date.day; return is; }

friend std::ostream &operator<<(std::ostream &os, const Date &d) { os << d.year << "-" << d.month << "-" << d.day; return os; }

};

enum struct Meals { no_meals, breakfast, half_board, all_inclusive };

std::ostream& operator<<(std::ostream& os, Meals meals) { switch (meals) { case Meals::no_meals: os << "no meals"; break; case Meals::breakfast: os << "breakfast"; break; case Meals::half_board: os << "half board"; break; case Meals::all_inclusive: os << "all inclusive"; break; } return os; }

double get_price(Meals meals) { switch (meals) { case Meals::no_meals: return 0; case Meals::breakfast: return 10; case Meals::half_board: return 20; case Meals::all_inclusive: return 50; } }

class Accomodation { private: std::string location; int nights; int singles; int doubles; double priceNightSingle; double priceNightDouble; double priceOneDayParking; Meals board; bool parking;

public: Accomodation(double priceNightSingle, double priceNightDouble, double priceOneDayParking) : priceNightSingle(priceNightSingle), priceNightDouble(priceNightDouble), priceOneDayParking(priceOneDayParking) { ask_data(); }

~Accomodation() { std::cout << "Accomodation successfully booked!" << std::endl; }

int get_guests() { return singles + doubles * 2; }

double get_price() { double price = (singles * priceNightSingle) + (doubles * priceNightDouble); if (parking) { price += (nights * priceOneDayParking); } return price + (get_guests() * get_price(board)); }

void ask_data() { std::cout << "Enter location of accomodation: "; std::cin >> location; std::cout << "Enter number of nights (max 28): "; std::cin >> nights; std::cout << "Enter number of single rooms: "; std::cin >> singles; std::cout << "Enter number of double rooms: "; std::cin >> doubles; std::cout << "Enter desired board (no_meals, breakfast, half_board, all_inclusive): "; std::cin >> board; std::cout << "Do you want to book a parking place? (y/n) "; char choice; std::cin >> choice; parking = (choice == 'y'); std::cout << "Total price: " << get_price() << " EUR" << std::endl; }

class Request { private: const unsigned int no; static unsigned int lastNo; Accomodation* accomodation; Request* next;

public: Request(Accomodation* accomodation, Request* next = nullptr) : no(++lastNo), accomodation(accomodation), next(next) {}

~Request() { std::cout << "Request #" << no << " has been deleted." << std::endl; delete accomodation; }

unsigned int get_no() { return no; }

Request* get_next() { return next; }

void set_next(Request* next) { this->next = next; }

double get_price() { return accomodation->get_price(); }

void print() { std::cout << "Request #" << no << ": "; accomodation->print(); } };

unsigned int Request::lastNo = 0;

void print() { std::cout << "Location: " << location << std::endl; std::cout << "Guests: " << get_guests() << std::endl; std::cout << "Nights: " << nights << std::endl; std::cout << "Single rooms: " << singles << " (" << priceNightSingle << " EUR/night)" << std::endl; std::cout << "Double rooms: " << doubles << " (" << priceNightDouble << " EUR/night)" << std::endl; std::cout << "Board: " << board << " (" << get_price(board) << " EUR/person/day)" << std::endl; std::cout << "Parking: " << (parking ? "yes" : "no") << " (" << (parking ? priceOneDayParking : 0) << " EUR/day)" << std::endl; std::cout << "Total price: " << get_price() << " EUR" << std::endl; } };

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions