Сколько дней между двумя датами Переполнение стека

У меня есть программа, которая использует две функции, которые я определил внутри класса. Мой класс работает нормально, но моя программа всегда возвращает сумму, которая составляет некоторое количество выходных. Существует больше ошибок, когда даты находятся дальше друг от друга. Мой код предназначен для того, чтобы в одной функции вычислить общее количество дней с 1582 года, а другая функция вычитает большее количество из меньшего. Откуда я получаю ошибку? Я знаю, что это может быть не самый эффективный способ сделать что-либо (мудрый процессор), но может ли кто-нибудь найти, где моя логика запуталась? Это также относится к високосным годам. Я проверял свою программу на сайте http://www.timeanddate.com/date/durationresult.html

int Date::totalDays()
{
int totalDays = 0;
int daysInMonth[]={0,31,28,31,30,31,30,31,31,31,31,30,31};
totalDays += day;
for (int i = month-1; i > 0; i--)
{
totalDays += daysInMonth[i];
}
for (int i = year-1; i > 1582; i--)
{
if(year % 100 == 0)
{
if(year % 400 == 0)
totalDays += 366;
else
totalDays += 365;
}
else
{
if(year % 4 == 0)
totalDays += 366;
else
totalDays += 365;
}
}
return totalDays;
}

int Date::daysBetween(Date other)
{
if (this->totalDays() > other.totalDays())
return this->totalDays() - other.totalDays();
else
return other.totalDays() - this->totalDays();
}

Спасибо.

0

Решение

Проблема 1:

int daysInMonth[]={0,31,28,31,30,31,30,31,31,31,31,30,31};

должно быть

int daysInMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//                                           ^^

Проблема 2:

если текущий year високосный год, и month больше 2, вам также нужно добавить один день в аккаунт на 29 февраля текущего года.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector