/*Создайте класс 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;
}
//--------------перегрузка минуса--------------------------
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 ;
if ( month== end.month )
res= end.day - day;
else res = mas[ month- 1 ] - day+ end.day ;
return res;
}
Cdate ( int res) { } //конструктор для переопределения res к Cdate
//--------------перегрузка плюса----------------------------
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! = end.month - 1 || j! = end.year ; counter++ )
{
if ( counter>= 11 )
{
if ( j> year)
{
tmp+ = mas[ counter] ;
}
counter= 0 ;
j++ ;
}
if ( counter== end.month - 1 && j== end.year )
break ;
if ( ( ( j% 4 == 0 ) && ! ( j% 100 == 0 ) ) || ( j% 400 == 0 ) )
mas[ 1 ] = 29 ;
else
mas[ 1 ] = 28 ;
tmp+ = mas[ counter] ;
}
cout << res+ tmp<< endl<< endl;
return res;
}
//----------------------------------------------------------
operator int ( )
{
return res;
}
private :
int day;
int month;
int year;
int res;
} D;
void main( )
{
SetConsoleCP( 1251 ) ;
SetConsoleOutputCP( 1251 ) ;
while ( true )
{
Cdate start ( 19 , 12 , 2012 ) ;
Cdate end ( 13 , 1 , 2014 ) ;
cout << "начальная дата: " ;
start.print ( ) ; //показ начальной даты
cout << "конечная дата: " ;
end.print ( ) ; //показ конечной даты
int result = start- end;
cout << "дней между датами: " ;
result = start+ end;
//D.Plus(start, end, mas);
system ( "pause" ) ;
system ( "cls" ) ;
}
}
LyrQodC+0LfQtNCw0LnRgtC1INC60LvQsNGB0YEgRGF0ZSwg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDRgdC+0LTQtdGA0LbQsNGC0Ywg0LjQvdGE0L7RgNC80LDRhtC40Y4K0L4g0LTQsNGC0LUgKNC00LXQvdGMLCDQvNC10YHRj9GGLCDQs9C+0LQpLiDQoSDQv9C+0LzQvtGJ0YzRjiDQvNC10YXQsNC90LjQt9C80LAg0L/QtdGA0LXQs9GA0YPQt9C60LgK0L7Qv9C10YDQsNGC0L7RgNC+0LIsINC+0L/RgNC10LTQtdC70LjRgtC1INC+0L/QtdGA0LDRhtC40Y4g0YDQsNC30L3QvtGB0YLQuCDQtNCy0YPRhSDQtNCw0YIgKNGA0LXQt9GD0LvRjNGC0LDRggrQsiDQstC40LTQtSDQutC+0LvQuNGH0LXRgdGC0LLQsCDQtNC90LXQuSDQvNC10LbQtNGDINC00LDRgtCw0LzQuCksINCwINGC0LDQutC20LUg0L7Qv9C10YDQsNGG0LjRjgrRg9Cy0LXQu9C40YfQtdC90LjRjyDQtNCw0YLRiyDQvdCwINC+0L/RgNC10LTQtdC70LXQvdC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQtNC90LXQuS4gKi8KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8V2luZG93cy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIENkYXRlCnsKcHVibGljOgoJLy8tLS0tLS0tLS3QstCy0L7QtC/QstGL0LLQvtC0INC00LDQvdC90YvRhS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCUNkYXRlKCl7fS8v0LrQvtC90YHRgtGA0YPQutGC0L7RgCDQv9C+INGD0LzQvtC70YfQsNC90LjRjgoKCUNkYXRlIChpbnQgYSxpbnQgYixpbnQgYykvL9C60L7QvdGB0YLRgNGD0LrRgtC+0YAKCXsKCQlkYXk9YTsgbW9udGg9YjsJeWVhcj1jOwoJfQoKCQoKCXZvaWQgcHJpbnQoKS8v0L/QtdGH0LDRgtGMCgl7CgkJY291dDw8ZGF5PDwiLiI8PG1vbnRoPDwiLiI8PHllYXI8PGVuZGw7Cgl9Ci8vLS0tLS0tLS0tLS0tLS3Qv9C10YDQtdCz0YDRg9C30LrQsCDQvNC40L3Rg9GB0LAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkKCUNkYXRlIG9wZXJhdG9yLSAoY29uc3QgQ2RhdGUgJmVuZCkKCXsKCQlpbnQgbWFzW109ezMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxfTsKCQkJaWYgKHllYXIlND09MCkKCQkJCW1hc1sxXT0yOTsKCQkJaWYgKG1vbnRoPT1lbmQubW9udGgpCgkJCQlyZXM9ZW5kLmRheS1kYXk7CgkJCWVsc2UgcmVzID0gbWFzW21vbnRoLTFdLWRheStlbmQuZGF5OwoJCXJldHVybiByZXM7Cgl9CgkKCUNkYXRlIChpbnQgcmVzKXt9Ly/QutC+0L3RgdGC0YDRg9C60YLQvtGAINC00LvRjyDQv9C10YDQtdC+0L/RgNC10LTQtdC70LXQvdC40Y8gcmVzINC6IENkYXRlCgovLy0tLS0tLS0tLS0tLS0t0L/QtdGA0LXQs9GA0YPQt9C60LAg0L/Qu9GO0YHQsC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCUNkYXRlIG9wZXJhdG9yKyAoY29uc3QgQ2RhdGUgJmVuZCkKCXsKCQlpbnQgdG1wPTA7CgkJaW50IG1hc1tdPXszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMX07CgkJCQoJCWZvciAoaW50IGNvdW50ZXIgPSBtb250aC0xLCBqPXllYXI7IGNvdW50ZXIhPWVuZC5tb250aC0xfHxqIT1lbmQueWVhcjsgY291bnRlcisrKQoJCQl7CgoJCQkJaWYgKGNvdW50ZXI+PTExKQoJCQkJCXsKCQkJCQkJaWYgKGo+eWVhcikKCQkJCQkJewoJCQkJCQkJdG1wKz1tYXNbY291bnRlcl07CgkJCQkJCX0KCQkJCQkJY291bnRlcj0wOwoJCQkJCQlqKys7CgkJCQkJfQoKCQkJCWlmIChjb3VudGVyPT1lbmQubW9udGgtMSYmaj09ZW5kLnllYXIpCgkJCQkJYnJlYWs7CgoJCQkJaWYgKCgoaiU0PT0wKSAmJiAhKGolMTAwPT0wKSl8fChqJTQwMD09MCkpCgkJCQkJbWFzWzFdPTI5OwoJCQkJZWxzZQoJCQkJCW1hc1sxXT0yODsKCQkJCQoJCQkJCgkJCQl0bXArPW1hc1tjb3VudGVyXTsKCQkJCQoJCQl9CgkJY291dDw8cmVzK3RtcDw8ZW5kbDw8ZW5kbDsKCQlyZXR1cm4gcmVzOwoJfQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJb3BlcmF0b3IgaW50ICgpCgl7CgkJcmV0dXJuIHJlczsKCX0KCnByaXZhdGU6CglpbnQgZGF5OwoJaW50IG1vbnRoOwoJaW50IHllYXI7CglpbnQgcmVzOwp9RDsKCgoKdm9pZCBtYWluKCkKewoJU2V0Q29uc29sZUNQKDEyNTEpOwoJU2V0Q29uc29sZU91dHB1dENQKDEyNTEpOwoKCXdoaWxlKHRydWUpCgl7CgkJCgkJCgkJQ2RhdGUgc3RhcnQgKDE5LCAxMiwgMjAxMik7CgkJQ2RhdGUgZW5kICgxMywgMSwgMjAxNCk7CgkJCgkJY291dDw8ICLQvdCw0YfQsNC70YzQvdCw0Y8g0LTQsNGC0LA6ICI7CgkJc3RhcnQucHJpbnQoKTsvL9C/0L7QutCw0Lcg0L3QsNGH0LDQu9GM0L3QvtC5INC00LDRgtGLCgkJY291dDw8ICLQutC+0L3QtdGH0L3QsNGPINC00LDRgtCwOiAiOwoJCWVuZC5wcmludCgpOy8v0L/QvtC60LDQtyDQutC+0L3QtdGH0L3QvtC5INC00LDRgtGLCgkJaW50IHJlc3VsdCA9IHN0YXJ0LWVuZDsKCQljb3V0PDwi0LTQvdC10Lkg0LzQtdC20LTRgyDQtNCw0YLQsNC80Lg6ICI7CgkJcmVzdWx0ID0gc3RhcnQrZW5kOwoJCQoJCS8vRC5QbHVzKHN0YXJ0LCBlbmQsIG1hcyk7CgkJCgoKCQlzeXN0ZW0oInBhdXNlIik7CgkJc3lzdGVtKCJjbHMiKTsKCX0KfQ==