Напишите, пожалуйста, функцию в Homelisp, которая проверяет принадлежность элемента к списку

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

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

Напишите, пожалуйста, функцию в Homelisp, которая проверяет принадлежность элемента к списку. Но так, что бы список и элемент, который проверяется на принадлежность к этому списку задавался через диалоговые окна. Ну и результат в ввиде да/нет,... Вот был вариант реализации без форм самого алгоритма у

Catstail

:
((lambda (lst a f) (cond ((null lst) nil) 
                         ((equal a (car lst)) t)
                         (t (funcall f (cdr lst) a f))))
 '(a b (c d) e f) 'e 
 '(lambda (lst a f) (cond ((null lst) nil) 
                          ((equal a (car lst)) t)
                          (t (funcall f (cdr lst) a f)))))
А вот сам вариант работы с диал. окнами, не могу дотямкать как это объеденить в рабочее что-то, а то я пока что нуб:
(defun task ()
  (input (strCat "(" (ask "Введите фразу") ")")))
 
==> task
 
(task)
 
==> (Хорошо ходить конем, власть держать над полным залом)

Решение задачи: «Напишите, пожалуйста, функцию в Homelisp, которая проверяет принадлежность элемента к списку»

textual
Листинг программы
(defun isInList (a lst)
  (if lst (if (eq a (car lst)) t (isInList a (cdr lst))) nil))
 
==> isInList
 
(isInList 's '(a s d f))
 
==> T
 
(isInList 'q '(a s d f))
 
==> NIL
 
(defun task nil
  (let ((a (input (ask "Введите атом")))
        (lst (input (ask "Введите список"))))
    (if (isInList a lst) (say (strCat "Атом " (output a) " входит в список " (output lst)))
                         (say (strCat "Атом " (output a) " НЕ входит в список " (output lst))))))

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

В этом коде написана функция проверки принадлежности элемента к списку.

  1. В функции isInList первым аргументом является элемент, который нужно проверить на принадлежность к списку, вторым — сам список.
  2. Если список не пустой, то выполняется проверка: если первый элемент списка равен проверяемому элементу, то возвращается t (истина), то есть выводится сообщение о том, что элемент принадлежит списку.
  3. В противном случае функция вызывает саму себя, но уже без первого элемента списка.
  4. Если список пустой, то возвращается nil (ложь), то есть выводится сообщение о том, что элемент не принадлежит списку.
  5. В функции task сначала выполняется запрос на ввод элемента и списка, а затем вызывается функция isInList с введёнными данными.
  6. В зависимости от результата проверки выводится соответствующее сообщение.

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


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

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

11   голосов , оценка 4.091 из 5
Похожие ответы