Write a program to implement the Date class which has three data members named day, month and year.
Â
1.  Provide a constructor, which takes arguments (you may set values of data members to 0).
Â
2.  Write getter and setter functions (input and show functions) for the Date class.
3.  Also write a member function void CompareDates(Date d1, Date d2) which tells which date comes first.
Â
Example output:
13/11/2009 comes before 20/12/2009
#include <iostream>
using namespace std;
class Date {
public:
  Date(int d=0, int m=0, int y=0);
  int getDay() const;
  void setDay(int d);
  int getMonth() const;
  void setMonth(int m);
  int getYear() const;
  void setYear(int y);
  void show() const;
  static void CompareDates(Date d1, Date d2);
private:
  int day;
  int month;
  int year;  Â
};
Date::Date(int d, int m, int y) {
  setDay(d);
  setMonth(m);
  setYear(y);
}
int Date::getDay() const {
  return day;
}
void Date::setDay(int d) {
  if (d < 0 || d > 31) {
    day = 0;
  }
  else {
    day = d;
  }
}
int Date::getMonth() const {
  return month;
}
void Date::setMonth(int m) {
  if (m < 0 || m > 12) {
    month = 0;
  }
  else {
    month = m;
  }
}
int Date::getYear() const {
  return year;
}
void Date::setYear(int y) {
  year = y;
}
void Date::show() const {
  cout << day << '/' << month << '/' << year;
}
void Date::CompareDates(Date date1, Date date2) {
  int d1 = date1.year*372 + date1.month*31 + date1.day;
  int d2 = date2.year*372 + date2.month*31 + date2.day;
  if (d1 < d2) {
    date1.show();
    cout << " comes before ";
    date2.show();
    cout << endl;
  }
  else if (d1 > d2) {
    date1.show();
    cout << " comes after ";
    date2.show();
    cout << endl;
  }
  else {
    cout << "The dates are the same" << endl;
  }
}
int main() {
  Date d1(13, 11, 2009);
  Date d2(20, 12, 2009);
  Date::CompareDates(d1, d2);
  return 0;
}
Comments
Leave a comment