Принадлежит ли дата диапазону времени

Задача

В программе заданы месяц и год двух дат. Пользователь вводит еще одну дату (только месяц и год). Определить, принадлежит ли третья дата диапазону от первой даты до второй включительно. Задачу решить с использованием структуры данных.

Пояснение к задаче и алгоритм решения

  1. Если значение поля года введенной даты больше значения поля года первой даты и меньше поля года второй, то дата принадлежит диапазону.
  2. Иначе если год введенной даты совпадает с годом первой даты, то надо сравнить месяцы. Если месяц введенной даты больше или равен первой, то она принадлежит диапазону, иначе - нет.
  3. Если же год введенной даты совпадает с годом второй даты, то также надо сравнить месяцы. Дата будет принадлежать диапазону, если месяц введенной даты меньше или равен месяцу второй даты.
  4. Во всех остальных случаях введенная дата не будет принадлежать диапазону.

Исходный код на языке программирования Pascal

type date = record
    year: word;
    month: 1..12;
end;
 
var d1, d2, du: date;
 
begin
    d1.year := 1965;
    d1.month := 6;
    d2.year := 2014;
    d2.month := 7;
    write('Год: ');
    readln(du.year);
    write('Месяц: ');
    readln(du.month);
 
    if (du.year > d1.year) and (du.year < d2.year) then
        writeln('Да')
    else if du.year = d1.year then
        if du.month >= d1.month then
            writeln('Да')
        else
            writeln('Нет')
    else if du.year = d2.year then
        if du.month <= d2.month then
            writeln('Да')
        else
            writeln('Нет')
    else
        writeln('Нет');
end.

Пример(ы) выполнения программы на языке Pascal

Год: 2014
Месяц: 7
Да

Исходный код на языке программирования C

#include <stdio.h>
 
struct data {
    int year;
    int month;
};
 
main() {
    struct data d1, d2, du;
    d1.year = 1995;
    d1.month = 3;
    d2.year = 2015;
    d2.month = 11;
    printf("Год: ");
    scanf("%d", &du.year);
    printf("Месяц: ");
    scanf("%d", &du.month);
    if (du.year > d1.year && du.year < d2.year)
        printf("Да");
    else if (du.year == d1.year)
        if (du.month >= d1.month)
            printf("Да");
        else
            printf("Нет");
    else if (du.year == d2.year)
        if (du.month <= d2.month)
            printf("Да");
        else
            printf("Нет");
    else
        printf("Нет");
    printf("\n");
}

Исходный код на языке программирования Python

d1 = {'year': 2003, 'month': 12}
d2 = {'year': 2014, 'month': 6}
du = {}
du['year'] = int(input('Год: '))
du['month'] = int(input('Месяц: '))
if d1['year'] < du['year'] < d2['year']:
    print('Да')
elif du['year'] == d1['year']:
    if du['month'] >= d1['month']:
        print('Да')
    else:
        print('Нет')
elif du['year'] == d2['year']:
    if du['month'] <= d2['month']:
        print('Да')
    else:
        print('Нет')
else:
    print('Нет')

Пример(ы) выполнения программы на языке Python

Год: 2003
Месяц: 8
Нет

Тема

Структуры данных (записи, словари)

Уровень сложности

Средний

Дата публикации