-2 / 4 / 2
Регистрация: 13.03.2013
Сообщений: 203
1

Описать на языке Лисп функцию f(x y z)

13.10.2013, 17:47. Показов 1305. Ответов 6
Метки нет (Все метки)

Описать на языке Лисп функцию f(x y z) от трёх аргументов, которая формирует из своих аргументов список и выполняет его обработку в соответствии с вариантом задания

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



Помогите , кто разбирается!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2013, 17:47
Ответы с готовыми решениями:

Описать на языке Лисп функцию f(x y z) от трёх аргументов
Описать на языке Лисп функцию f(x y z) от трёх аргументов, которая формирует из своих аргументов...

Написать языке Лисп функцию, которая заменяет все отрицательные элементы списка значением 0
Написать языке Лисп функцию, которая заменяет все отрицательные элементы списка значением 0.

ветвление на языке Лисп
Помогите, пожалуйста, решить задачу на языке ЛИСП. Заданы три числа a, b, c. Определить являются...

Рекурсивное программирование на языке Лисп
Помогити парни! Задание №1. Разработать рекурсивный вариант программы в функциональном стиле для...

6
Модератор
Эксперт функциональных языков программированияЭксперт Python
29986 / 16463 / 3333
Регистрация: 12.02.2012
Сообщений: 27,384
Записей в блоге: 5
13.10.2013, 19:30 2
Цитата Сообщение от neva Посмотреть сообщение
Проверить, является ли первый элемент списка четным числом. Если является, то вернуть исходный список, выполнив замену первого элемента на ближайшее большее нечетное число, иначе удалить первый элемент.
- а если "ближайшего большего нечетного" в списке нет, что делать? Оставить список без изменений?

Добавлено через 7 минут
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
;; Вспомогательная функция, которая выполняет описанные действия
;; с произвольным числовым списком
 
(defun chk-list (lst)
  (let ((a1 (car lst))
        (rest (remove-if #'(lambda (x) (and (oddp x) (> x (car lst)))) (cdr lst))))
       (cond ((oddp a1) (cdr lst))
             (rest (cons (car rest) (cdr lst)))
             (t lst)))) 
 
==> chk-list
 
;; Проверка
 
(chk-list '(1 2 3 4 5))
 
==> (2 3 4 5)
 
(chk-list '(2 3 4 5))
 
==> (4 3 4 5)
 
;; Решение задачи
 
(defun task (x y z)
  (chk-list (list x y z)))
 
==> task
 
;; проверка
 
(task 1 2 3)
 
==> (2 3)
 
(task 2 3 3)
 
==> (2 3 3)
 
(task 2 3 4)
 
==> (4 3 4)
0
Заблокирован
13.10.2013, 19:47 3
Lisp
1
2
3
4
5
6
(defun for_newbie ( x y z)
  (if (evenp x)
    (cons (1+ x) (list  y z))
    (list  y z)
  )
)
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
29986 / 16463 / 3333
Регистрация: 12.02.2012
Сообщений: 27,384
Записей в блоге: 5
13.10.2013, 19:57 4
А я понял, что "ближайшее нечетное" нужно искать в списке (где его может и не оказаться).
0
Заблокирован
13.10.2013, 21:22 5
Цитата Сообщение от Catstail Посмотреть сообщение
А я понял, что "ближайшее нечетное" нужно искать в списке (где его может и не оказаться).
да, уж, печально, что некоторые преподаватели не умеют формулировать задачи. более того, задача поставлена не правильно изначально. незачем формировать список сразу в данном случае
если искать нужно в списке, а список тут как ни крути из трех элементов, они же аргументы функции, то проще так:
Lisp
1
2
3
4
5
6
7
8
(defun for_newbie2 ( x y z)
  (cond
    ((oddp x) (list y z))
    ((oddp y) (list y y z))
    ((oddp z) (list z y z))
    (t (list y z))
  )
)
1
-2 / 4 / 2
Регистрация: 13.03.2013
Сообщений: 203
18.10.2013, 15:36  [ТС] 6
Цитата Сообщение от ur_naz Посмотреть сообщение
да, уж, печально, что некоторые преподаватели не умеют формулировать задачи. более того, задача поставлена не правильно изначально. незачем формировать список сразу в данном случае
если искать нужно в списке, а список тут как ни крути из трех элементов, они же аргументы функции, то проще так:
Lisp
1
2
3
4
5
6
7
8
(defun for_newbie2 ( x y z)
  (cond
    ((oddp x) (list y z))
    ((oddp y) (list y y z))
    ((oddp z) (list z y z))
    (t (list y z))
  )
)
А как теперь вызвать эту функцию? Вообще посоветуйте пожалуйста литературу . Потому что никак не могу освоить этот лисп
0
4423 / 3425 / 347
Регистрация: 12.03.2013
Сообщений: 5,911
18.10.2013, 16:39 7
Цитата Сообщение от neva Посмотреть сообщение
Вообще посоветуйте пожалуйста литературу .
Поищите в разделе, неоднократно было. Можно на lisp.ru посмотреть, там много книг скачиваются. Graham, ANSI Common Lisp хорошая.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2013, 16:39

Описать функцию PowerA234(A) На языке си . Builder
Буду очень признательна если поможете с данной задачей:-) На языке Си Описать функцию...

Как создать на Лисп встроенную функцию?
Я заинтересовался математическими функциями на Лисп. Обратил внимание, что нет десятичного...

Лисп определить рекурсивную функцию, определяющую сумму первых десяти членов произвольной ^арифметической прогрессии.
Задание 2.1 На языке Лисп определить рекурсивную функцию, определяющую сумму первых десяти членов...

В Лисп реализовать функцию f (n)=5f (n−1)^3+4f (n−2)^2
В Лисп реализовать функцию f (n)=5f (n−1)^3+4f (n−2)^2 , f (1)=2, f (2)=4 Сначала определите...

Описать на языке С# сложную формулу
Здравствуйте, мне нужно описать следующую формулу...

Описать последовательность на языке Lisp
У меня возникли затруднения с реализацией последовательности (бесконечной) на лиспе. Возможно,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.