Арифметика календарных дат на C или C++ (добавьте N дней к заданной дате)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Арифметика календарных дат на C или C++ (добавьте N дней к заданной дате)

Сообщение Anonymous »

Мне дали дату, которую я принимаю в качестве входных данных, например (день, месяц, год): 12, 03, 87.

Теперь мне нужно узнать дату через n дней.

Я написал для этого код, но он неэффективен. Подскажите, пожалуйста, какую-нибудь хорошую логику, которая работает быстрее и менее сложна.

#include

static int days_in_month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int day, month, year;

unsigned short day_counter;

int is_leap(int y) {
return ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0);
}

next_day()
{
day += 1; day_counter++;
if (day > days_in_month[month]) {
day = 1;
month += 1;
if (month > 12) {
month = 1;
year += 1;
if (is_leap(year)) {
days_in_month[2] = 29;
} else {
days_in_month[2] = 28;
}
}
}
}

set_date(int d, int m, int y)
{
m < 1 ? m = 1 : 0;
m > 12 ? m = 12 : 0;
d < 1 ? d = 1 : 0;
d > days_in_month[m] ? d = days_in_month[m] : 0;
if (is_leap(y)){
days_in_month[2] = 29;
}
else {
days_in_month[2] = 28;
}
day = d;
month = m;
year = y;
}

skip_days(int x)
{
int i;
for (i=0;i

Подробнее здесь: https://stackoverflow.com/questions/156 ... given-date
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»