想要完成日期計算器其實只要考慮完成兩個工作就可以了
實現第乙個工作時,如果是減去乙個天數,例如
給定2017 7 10
與減去乙個天數不同的加乙個天數(即多少天以後)需要向當前月份的下乙個月借天數減去目標天數來滿足年月日合法。加減乙個目標天數的實現思路個方法是一樣的。個中細節請參考**中的注釋。
實現第二個工作兩個給定的目標日期相減時,主要有兩種思路:
以下是實現**
#include
using
namespace
std;
//定義乙個全域性的陣列用來存放一年中的每個月天數,二月預設是平年天數
int monthday[13] = ;
//獲取天數這個函式呼叫頻繁所以設定成內聯函式(典型的以空間換時間)
inline
static
intgetmonthdays
(int year, int month)
//判斷日期是否合法
inline
static
bool
islegal
(int year, int month, int day)
class date
date(const date& d)
friend ostream& operator
<<(ostream& out, const date& d);
friend istream& operator>>(istream& in, date& d);
bool
operator>(const date& d)
bool
operator>=(const date& d)
bool
operator==(const date& d)
bool
operator!=(const date& d)
date operator-(int day)
date tmp = *this;
tmp._day -= day;//當前月的天數減去目標天數後判斷日期是否合法
while (!islegal(tmp._year, tmp._month, tmp._day))
tmp._day += getmonthdays(tmp._year, tmp._month);
}return tmp;
}date operator+(int day)
date tmp = *this;
tmp._day += day;
while (!islegal(tmp._year, tmp._month, tmp._day))
}return tmp;
}date& operator+=(int day)
date& operator++()
intoperator-(const date& d)
while (min != max)
return count*flag;
}private:
int _year;
int _month;
int _day;
};ostream& operator
<<(ostream& out, const date& d)
istream& operator>>(istream& in, date& d)
void
menu()}
}int
main
()
日期類不難就是得看你能不能想得通其中的思路,不要想得太複雜,其實寫起來還是挺複雜的。但是許多**是可以復用的,所以思考起來就不難了。關鍵還是看你怎麼考慮這些問題了。
日期類 日期計算器
date.h pragma once include using namespace std class date operator inline bool operator const date d const else if year d.year else if month d.month r...
實現日期類(日期計算器)
在日常生活中,需要我們計算一些日期,如果一些小的數字相加的話,我們便可以很方便的就計算出來,然而如果需要加上一些特別大的數字的時候,則會很浪費我們的時間,因此,日期計算機的出現,極大的方便了我們的生活,為我們帶來極大的便利。下面,我們將給出這個日期計算機的實現方式,希望大家相互學習,相互鼓勵。思路 ...
日期計算器
define crt secure no warnings include includeusing namespace std class date bool operator const date d 小於運算子的過載 bool operator const date d 等於運算子的過載 bo...