日期類 日期計算器

2021-08-03 15:45:32 字數 1845 閱讀 4885

想要完成日期計算器其實只要考慮完成兩個工作就可以了

實現第乙個工作時,如果是減去乙個天數,例如 

給定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...