Problem 3 (20 points): A. Create a class called date, with data fields for month, day and year. They should all be integers. For month: 1 means January, 2 means February, etc. Look at the other parts of this question to see what else this class should contain. class date { private: int month,day,year; public: int get_month(); int get_day(); int get_year(); }; B. Write a member function called get_month to return the month. int date::get_month() { return month; } C. Write a member function called get_day to return the day. int date::get_day() { return day; } D. Write a member function called get_year to return the year. int date::get_year() { return year; } D. Write a nonmember function that takes two dates as parameters and returns true if the first date occurs before the second, false otherwise. bool smaller(date d1, date d2) { if (d1.get_year() < d2.get_year()) return true; if (d1.get_year() > d2.get_year()) return false; if (d1.get_month() < d2.get_month()) return true; if (d1.get_month() > d2.get_month()) return false; if (d1.get_day() < d2.get_day()) return true; return false; } ------------------------------------------------------------------------------ Problem 4 (20 points): This problem uses the class from Problem 3, and may use any of the functions from Problem 3. A. Write a class called date_list, containing an array of dates, and the amount of the array that is filled, as data fields. Look at the other parts of this question to see what else the class should contain. class date_list { private: date A[100]; int filled; public: date earliest(); int count_jan(); }; C. Write a member function called earliest, which returns the earliest date in the date_list. date date_list::earliest() { date best = A[0]; int i; for (i=1; i