По текущей дате определить следующую дату - Lisp

Узнай цену своей работы

Формулировка задачи:

Дата некоторого дня определяется двумя натуральными числами: порядковым номером месяца и числом. Определить дату следующего дня.

Решение задачи: «По текущей дате определить следующую дату»

textual
Листинг программы
(defun next-day (d m)
  (let ((dlist '(31 28 31 30 31 30 31 31 30 31 30 31))
        (next-d (+ d 1)))
   (if (<= next-d (nth (- m 1) dlist)) (list next-d m) 
           (if (< m 12) (list 1 (+ 1 m)) (list 1 1)))))
                       
==> NEXT-DAY
 
(next-day 31 10)
 
==> (1 11)
 
(next-day 31 12)
 
==> (1 1)
        
==> NEXT-DAY
 
(next-day 12 10)
 
==> (13 10)
 
(next-day 30 10)
 
==> (31 10)

Объяснение кода листинга программы

В данном коде определен функционал для определения следующей даты по текущей, при этом учитывается количество дней в каждом месяце. Список функций и переменных с описанием:

  1. (defun next-day (d m) - определение функции next-day, принимающей два аргумента d - текущую дату и m - текущий месяц
  2. (let ((dlist '(31 28 31 30 31 30 31 31 30 31 30 31)) - инициализация переменной dlist, которая содержит количество дней в каждом месяце
  3. (next-d (+ d 1)) - определение переменной next-d, которая содержит следующую дату по текущей
  4. (if (<= next-d (nth (- m 1) dlist)) (list next-d m) - проверка условия, что следующая дата не превышает количество дней в предыдущем месяце
  5. (if (< m 12) (list 1 (+ 1 m)) (list 1 1)) - проверка условия, что текущий месяц не является декабрем
  6. (list 1 1) - возврат следующей даты и текущего месяца в случае, если текущий месяц - декабрь
  7. (1 11) - возврат следующей даты и текущего месяца в случае, если текущий месяц - ноябрь
  8. (13 10) - возврат следующей даты и текущего месяца в случае, если текущий месяц - октябрь и текущая дата - 30
  9. (31 10) - возврат следующей даты и текущего месяца в случае, если текущий месяц - октябрь и текущая дата - 31
  10. (12 10) - возврат следующей даты и текущего месяца в случае, если текущий месяц - октябрь и текущая дата - 30

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5