Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
18.03.2015
Размер:
2.37 Кб
Скачать
#include "Date.h"


/* Функция для определения, является ли год переданной даты високосным */
bool isLeapYear(const Date& date)
{
	const int& y = date.yyyy;
	
	if ( y % 4 == 0 &&
		(y % 100 != 0 || y % 400 == 0) )
		return true;
	else
		return false;
}

Date getCurrentDate()
{
	Date currentDate;

	time_t timestamp; // Отметка времени - количество секунд после начала Unix-эпохи
	tm* ptm;          // Указатель на структуру, которая будет содержать поля
	                  //  даты для числа, месяца, года и т.д.

	// Получаем кол-во секунд, прошедших с начала Unix-эпохи до тек. момента
	time(&timestamp); 

	// Заполняем структуру типа tm на основе переданной отметки времени
	ptm = gmtime(&timestamp);

	// Заполняем нашу переменную типа date на основе полей структуры типа tm
	currentDate.dd = ptm->tm_mday;
	currentDate.mm = (Month)(ptm->tm_mon + 1);
	currentDate.yyyy = ptm->tm_year + 1900;

	return currentDate;
}


/* Префиксный инкремент. Увеличивает дату на 1 день,
   возвращая ссылку на свой параметр */
Date& operator ++ (Date& date)
{
	// Реализовать, чтобы работало правильно
	date.dd++;
	return date;
}

/* Постфиксный инкремент. Увеличивает дату на 1 день,
   возвращая копию старого значения */
Date operator ++ (Date& date, int)
{
	// Реализовать
}

/* Операция вывода даты в поток в формате dd.mm.yyyy */
ostream& operator << (ostream& os, const Date& date)
{
	os << setfill('0');
	os << setw(2) << date.dd << '.';
	os << setw(2) << (int)date.mm << '.';
	os << setw(4) << date.yyyy;
	os << setfill(' ');
	return os;
}

/* Операция ввода даты из потока в формате dd.mm.yyyy */
istream& operator >> (istream& is, Date& d)
{
	// Реализовать
}


/* Операции сравнения. Та дата меньше, которая хронологически раньше */
bool operator < (const Date& date1, const Date& date2)
{
	return (date1.yyyy <  date1.yyyy) ||
		   (date1.yyyy == date2.yyyy && date1.mm <  date2.mm) ||
		   (date1.yyyy == date2.yyyy && date1.mm == date2.mm && date1.dd < date2.dd);
}

/* Реализовать */
bool operator >  (const Date& date1, const Date& date2);
bool operator == (const Date& date1, const Date& date2);
bool operator != (const Date& date1, const Date& date2);
int  operator -  (const Date& date1, const Date& date2);

Date& operator -- (Date& date);
Date  operator -- (Date& date, int);
Соседние файлы в папке 06_operator_overloading
  • #
    18.03.201512.29 Кб30CppProject.suo
  • #
    18.03.20154.18 Кб30CppProject.vcxproj
  • #
    18.03.20151.16 Кб31CppProject.vcxproj.filters
  • #
    18.03.2015143 б30CppProject.vcxproj.user
  • #
    18.03.20156.81 Mб30CppProjec_t.sdf
  • #
    18.03.20152.37 Кб30Date.cpp
  • #
    18.03.20151.59 Кб30Date.h
  • #
    18.03.2015177 б30main.cpp