/*Создайте класс Date, который будет содержать информацию о дате (день, месяц, год). С помощью механизма перегрузки операторов, определите операцию разности двух дат (результат в виде количества дней между датами), а также операцию увеличения даты на определенное количество дней. */ #include <iostream> #include <string.h> #include <Windows.h> using namespace std; class Cdate { public: //---------ввод/вывод данных------------------------- Cdate(){}//конструктор по умолчанию Cdate (int a,int b,int c)//конструктор { day=a; month=b; year=c; } void print()//печать { cout<<day<<"."<<month<<"."<<year<<endl; } //--------------------------------------------------- int Plus (Cdate start, Cdate end, int *mas) { int tmp = mas[start.month+1]-start.day; cout<<tmp<<endl; return tmp; } //--------------перегрузка минуса-------------------------- Cdate operator- (const Cdate &end) { int mas[]={31,28,31,30,31,30,31,31,30,31,30,31}; if (year%4==0) mas[1]=29; res = mas[month-1]-day+end.day; return res; } //--------------перегрузка плюса---------------------------- Cdate operator+ (const Cdate &end) { int tmp=0; int mas[]={31,28,31,30,31,30,31,31,30,31,30,31}; for (int counter = month-1, j=year; ; counter++) { if (counter==11) { counter=0; j++; } if (counter+1==end.month&&j==end.year) break; if (j%4==0) mas[1]=29; else mas[1]=28; tmp+=mas[counter]; } cout<<res+tmp<<endl; return res; } //---------------------------------------------------------- Cdate (int res){}//конструктор для переопределения res к Cdate operator int () { return res; } private: int day; int month; int year; int res; }D; void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); while(true) { Cdate start (15, 12, 2012); Cdate end (13, 2, 2013); start.print();//показ начальной даты end.print();//показ конечной даты int result = start-end; result = start+end; //D.Plus(start, end, mas); system("pause"); system("cls"); } } |