Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <iostream>
- using namespace std;
- bool CheckYear(int number) { // возвращает true если год високосный
- if (number % 400 == 0 || number % 4 == 0 && number % 100 != 0) {
- return true;
- }
- return false;
- }
- int CalcDaysInYear(int arr[], int d1, int m1, int d2, int m2, int year){
- if (m1 == m2) {
- return d2 - d1;
- }
- int count = 0;
- count += arr[m1 - 1] - d1; // количество дней до конца начального месяца
- for (int i = m1 + 1; i < m2; i++) {
- count += arr[i - 1]; // увеличиваем на количество дней в месяцах между датами
- }
- count += d2; // добавляем количество дней в последнем месяце
- if (CheckYear(year) && m1 <= 2) { // если год високосный и январь либо февраль входят в выборку, прибавляем 1
- count += 1;
- }
- return count;
- }
- int CalcDays(int d1, int m1, int y1, int d2, int m2, int y2){
- int arr[12]{ 31,28,31,30,31,30,31,31,30,31,30,31 };
- if (y1 == y2) { // если года одинаковые, считаем дни между датами
- return CalcDaysInYear(arr, d1, m1, d2, m2, y1);
- }
- int count = 0;
- count += CalcDaysInYear(arr, d1, m1, 31, 12, y1); // прибавляем количество дней до конца y1
- for (int i = y1 + 1; i < y2; i++) {
- if (CheckYear(i)) { // прибавляем целые года между y1 и y2
- count += 366;
- }
- else {
- count += 365;
- }
- }
- count += CalcDaysInYear(arr, 1, 1, d2, m2, y2); // прибавляем количество дней от начала y2
- return count += 1;
- }
- int main() {
- cout << CalcDays(1, 3, 1999, 14, 7, 2023) << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment