Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- using namespace std;
- class Date
- {
- private:
- int day;
- int month;
- int year;
- int cmp(Date d1, Date d2)
- {
- if (d1.year>d2.year)
- return 1;
- else
- if (d1.year<d2.year)
- return -1;
- else
- if (d1.month>d2.month)
- return 1;
- else
- if (d1.month<d2.month)
- return -1;
- else
- if (d1.day>d2.day)
- return 1;
- else
- if (d2.day<d2.day)
- return -1;
- return 0;
- }
- bool vys(int year)
- {
- bool res= false;
- if (year%4==0)
- res= true;
- if (year%100==0)
- res= false;
- if (year%400==0)
- res= true;
- return res;
- }
- void Add(Date &d)//функция увеличивает дату на 1, то есть показывает слудуущий день
- {
- int mes[]= {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- if (vys(d.year))//если высокосный год то в фефрале 29 дней
- mes[1]= 29;
- d.day++;//увеличиваем день
- if (d.day>mes[d.month-1])//если привысили месяц, то увеличиваем месяц
- {
- d.day= 1;
- d.month++;
- if (d.month>12)
- {
- d.month= 1;
- d.year++;
- }
- }
- }
- public:
- Date(int day, int month, int year){SetDay(day); SetMonth(month); SetYear(year);}
- Date(){day=0; month=0; year=0;}
- int GetDay(){return day;}
- int GetMonth(){return month;}
- int GetYear(){return year;}
- void SetDay(int day){this->day= day;}
- void SetMonth(int month){this->month= month;}
- void SetYear(int year){this->year= year;}
- void Vvod(){cout<<"Введите дату в формате dd.mm.yyyy: ";scanf("%d.%d.%d", &day, &month, &year);}
- void Vyvod(){printf("%.2d.%.2d.%.4d", day, month, year);}
- int raz(Date d)
- {
- Date date1= *this;
- Date date2= d;
- if (cmp(date1, date2)>0)
- swap(date1, date2);
- int kol=0;
- for (int i=date1.year; i<date2.year; i++)
- {
- kol+= 365;
- if (vys(i))
- kol++;
- }
- while ((date1.day!=date2.day)||(date1.month!=date2.month))
- {
- kol++;
- Add(date1);
- }
- return kol;
- }
- };
- int week(Date ob1)
- {
- int a, y, m, R;
- a = ( 14 - ob1.GetMonth() ) / 12;
- y = ob1.GetYear() - a;
- m = ob1.GetMonth() + 12 * a - 2;
- R = 7000 + (ob1.GetDay() + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12 );
- return R % 7;
- }
- int main()
- {
- setlocale(LC_ALL,"");
- Date d1;
- Date d2;
- Date d3;
- d1.Vvod();
- d2.Vvod();
- int q = d1.raz(d2);
- cout<<"Разница в днях: " << q << endl << endl;
- int a;
- cin >> a;
- d3.SetDay(d1.GetDay()+a);
- d3.SetMonth(d1.GetMonth());
- d3.SetYear(d1.GetYear());
- cout << "\nДата, отстающая от первой даты на " << a << " дней\n\n";
- d3.Vyvod();
- cout << "\n\nДень недели последней даты : ";
- if(week(d3) == 0) cout << "\nВоскресенье";
- if(week(d3) == 1) cout << "\nПонедельник";
- if(week(d3) == 2) cout << "\nВторник";
- if(week(d3) == 3) cout << "\nСреда";
- if(week(d3) == 4) cout << "\nЧетверг";
- if(week(d3) == 5) cout << "\nПятница";
- if(week(d3) == 6) cout << "\nСуббота";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement