• Предмет: Информатика
  • Автор: Kukuwka0Ha0DepeBe
  • Вопрос задан 2 месяца назад

С++
Завдання №1
Створіть клас Date, який буде містити інформацію
про дату (день, місяць, рік).
За допомогою механізму перевантаження операторів,
визначте операцію різниці двох дат (результат у вигляді
кількості днів між датами), а також операцію збільшення
дати на певну кількість днів.

Ответы

Ответ дал: flash77779
1

#include<iostream>

#include<ctime>

class Date {

   int day;

   int month;

   int year;

   

public:

   Date(int d, int m, int y) : day(d), month(m), year(y) {}

   // function to convert date to number of days

   int dateToDays() {

       int days = day;

       for (int i = 0; i < month - 1; i++) {

           days += 31;

           if (i == 1) {

               if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))

                   days -= 2;

               else

                   days -= 3;

           }

           else if (i == 3 || i == 5 || i == 8 || i == 10)

               days -= 1;

       }

       days += (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400;

       return days;

   }

   // function to convert number of days to date

   static Date daysToDate(int days) {

       int year = days / 365 + 1;

       days -= (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400;

       int month = 1;

       while (true) {

           int monthDays = 31;

           if (month == 2) {

               if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))

                   monthDays -= 2;

               else

                   monthDays -= 3;

           }

           else if (month == 4 || month == 6 || month == 9 || month == 11)

               monthDays--;

           if (days <= monthDays)

               break;

           days -= monthDays;

           month++;

       }

       return Date(days, month, year);

   }

   // Overloading '-' operator

   int operator - (Date date) {

       return dateToDays() - date.dateToDays();

   }

   // Overloading '+' operator

   Date operator + (int days) {

       return daysToDate(dateToDays() + days);

   }

   void print() {

       std::cout << day << "/" << month << "/" << year << std::endl;

   }

};


int main() {

   Date date1(1, 1, 2023);

   Date date2(14, 6, 2023);

   

   int days = date2 - date1;

   std::cout << "Number of days between dates: " << days << std::endl;

   

   Date newDate = date1 + 165;

   std::cout << "New date: ";

   newDate.print();

   

   return 0;

}

Вас заинтересует