Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
18.03.2015
Размер:
2.04 Кб
Скачать
#include "Date.h"
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;

/* Функция запрашивает ввод даты с клавиатуры и заносит её в структуру по
   адресу, переданному в качестве параметра */
void askForDate(Date* pDate)
{
	cout << "Enter date in format dd.mm.yyyy: ";

	int mm;
	char c; // символ для считывания точек

	cin >> pDate->dd >> c
		>> mm   >> c
		>> pDate->yyyy;
	pDate->mm = (Month)mm;
}

/* Функция для вывода даты на консоль */
void printDate(const Date* pDate)
{
	cout << setfill('0');
	cout << setw(2) << pDate->dd<< '.';
	cout << setw(2) << (int)pDate->mm << '.';
	cout << setw(4) << pDate->yyyy;
	cout << setfill(' ');
}

/* Функция для определения, является ли год переданной даты високосным */
bool isLeapYear(const Date* pDate)
{
	int y = pDate->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;
}


/* Функция сравнивает две даты. Возвращает отрицательное число,
   если первая дата предшествует второй, положительное - если наоборот,
   и ноль, если даты равны. */
int compareDates(const Date* pDate1, const Date* pDate2)
{
	if (int yyyyDiff = pDate1->yyyy - pDate2->yyyy) 
		return yyyyDiff;

	if (int mmDiff = pDate1->mm - pDate2->mm) 
		return mmDiff;

	return pDate1->dd - pDate2->dd;
}
Соседние файлы в папке 01_references
  • #
    18.03.2015891 б29CppProject.sln
  • #
    18.03.201512.8 Кб29CppProject.suo
  • #
    18.03.20154.18 Кб29CppProject.vcxproj
  • #
    18.03.20151.16 Кб29CppProject.vcxproj.filters
  • #
    18.03.2015143 б29CppProject.vcxproj.user
  • #
    18.03.20152.04 Кб30Date.cpp
  • #
    18.03.2015873 б29Date.h
  • #
    18.03.20151.37 Кб29main.cpp