Решение задачи День рождения с Меньшиков

Без пояснения   Просмотров: 78


Заданы день и месяц рождения, а также текущие день, месяц и год. Определить, сколько дней осталось до дня рождения.

Код

#include <iostream>
#include <cstdio>
 
using namespace std;
 
int n;
int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
struct date
{
    int day,mon,year;
 
    void input(int paramsCount)
    {
        scanf("%d",&day);
        scanf("%d",&mon);
        if (paramsCount == 3)
            scanf("%d",&year);
    }
    bool isLeap(int year)
    {
        return ((year % 4 == 0 && year %100 != 0) || year%400 == 0);
    }
    void CheckLeap()
    {
        if (isLeap(year))
            days[2] = 29;
        else
            days[2] = 28;
    }
    void IncDay()
    {
        day++;
        if (days[mon] < day)
        {
            day = 1;
            mon++;
            if (mon == 13)
            {
                mon = 1;
                year++;
                CheckLeap();
            }
        }
    }
};
bool operator != (const date &a, const date &b)
{
    return !(a.day == b.day && a.mon == b.mon);
}
date begin, end;
void input()
{
    end.input(2);
    begin.input(3);
}
void solve()
{
    int daysAmount = 0;
    begin.CheckLeap();
    while (begin != end)
    {
        daysAmount++;
        begin.IncDay();
    }
    cout<<daysAmount;
}
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
 
    input();
    solve();
    return 0;
}

         

Администратор Photo Автор: Администратор




Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться