Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите решить задачки 
:(
    Опции темы
DunhiL11
Дата 17.12.2011, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.12.2011

Репутация: нет
Всего: нет



Помогите пожалуйста решить три задачки по LISPу
1)В списке исключить последнее вхождение элемента 'two'
2)Вычислить сумму 15-ти членов арифметической прогрессии с начальным членом a0=2, d=3. то есть последовательность следующая: 2,5,8,11 и т.д
3) Написат программу, которая по координате (х,y) точки дает ответ, попадает ли точка в заштрихованную область
Радиус равен 1.
user posted image

Буду очень признателен, если поможете.Просто сам никогда не работал в Лисп до этого.
PM MAIL   Вверх
VH_
Дата 18.12.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



1)
Код
(defun F (L)
 (if L
  (if (equal (car L) "two")
   (if (member "two" (cdr L) :test 'equal)
    (cons (car L) (F (cdr L)))
    (cdr L))
   (cons (car L) (F (cdr L))))))

2)
Код
(defun F (A0 D N)
 (+ A0 (/ (* D N (1- N)) 2)))

3)
Код
(defun F (X Y)
 (and
  (>= (abs Y) 0.5)
  (<= (+ (* X X) (* Y Y)) 1)))

Код
(defun F (X Y R D)
 (and
  (>= (abs Y) D)
  (<= (+ (* X X) (* Y Y)) (* R R))))

PM MAIL   Вверх
DunhiL11
Дата 19.12.2011, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.12.2011

Репутация: нет
Всего: нет



Спасибо большое.
Подскажите еще пожалуйста как сделать чтоб проверялось одновременно два условия, то есть мне нужно проверить входит ли X в данный отрезок
1<X<6  Можно через Cond или через If 
Если 1<X<6 То Y = 5*X. Вот как это записать. Буду Вам очень признателен.


PM MAIL   Вверх
newbee
Дата 19.12.2011, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Цитата(DunhiL11 @  19.12.2011,  01:11 Найти цитируемый пост)
1<X<6
Код
(and (> x 1) (< x 6))


Цитата(DunhiL11 @  19.12.2011,  01:11 Найти цитируемый пост)
Y = 5*X
Код
(setq Y (* 5 X))


Это сообщение отредактировал(а) newbee - 19.12.2011, 00:36


--------------------
You're face to face
With man who sold the world
PM   Вверх
VH_
Дата 19.12.2011, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



LISP проще, достаточно:
Код
(< 1 x 6)

кстати, 1<X<6 называется не "отрезок", а "интервал"

Это сообщение отредактировал(а) VH_ - 19.12.2011, 01:03
PM MAIL   Вверх
DunhiL11
Дата 19.12.2011, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.12.2011

Репутация: нет
Всего: нет



Код

(defun f (x)
     (and (> x 1) (< x 6)) 
         (setq y (* x 5))
 (print (y)))


Как мне Y вывести на экран. через print что то не хочет. Результатом функции выдает только T или NIL( в зависимости от Х). как будто часть setq не выполняет чтоли... 
Ага я знаю что это интервал) просто писал быстро, особо не задумываясь. Для меня было главное узнать как проверить одновременно два условия)
Спс что отвечаете мне)

Это сообщение отредактировал(а) DunhiL11 - 19.12.2011, 01:16
PM MAIL   Вверх
VH_
Дата 19.12.2011, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



А чему равен Y, если X не попадает в данный интервал?
Вообще LISP ето не Бейсик - тут (setq) является лишним средством.
Вы расскажите задачу целиком - вероятно, ее надо иначе решать (чем, "выводом на экран").

Это сообщение отредактировал(а) VH_ - 19.12.2011, 01:22
PM MAIL   Вверх
DunhiL11
Дата 19.12.2011, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.12.2011

Репутация: нет
Всего: нет



Хм... по коду значение Y не должно вообще расчитываться если Х не попадает в интервал. а просто выдается NIL

Добавлено через 6 минут и 15 секунд
Написать программу которая по введенной координате Х вычисляет значение функции Y(x) заданной графически
Рисунок приложил. Он конечно корявый, там единичный отрезок= 2 клетки. Но тут мне главное понять ход решения. А интервалы потом можно точные указать

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  19122011212.jpg 974,72 Kb
PM MAIL   Вверх
VH_
Дата 19.12.2011, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



Счас сделаем.
PM MAIL   Вверх
DunhiL11
Дата 19.12.2011, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.12.2011

Репутация: нет
Всего: нет



Благодарствую)
PM MAIL   Вверх
VH_
Дата 19.12.2011, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



Что-нибудь типа этого:
Код
(defun Y (X)
 (cond
  ((< X -3) -1)
  ((<= -3 X -2) (+ X 2))
  ((<= -2 X 0) (sqrt (- 1 (* (+ X 1) (+ X 1)))))
  ((<= 0 X 1) (- X))
  ((<= 1 X 2) -1)
  ((<= 2 X 3) (- X 3))
  ((<= 3 X 4) (- 3 X))
  ((<= 4 X 5) (- X 5))
  ((<= 5 X 6) (- 5 X))
  (-1)))

PM MAIL   Вверх
DunhiL11
Дата 19.12.2011, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.12.2011

Репутация: нет
Всего: нет



спс. щас буду разбираться)

PM MAIL   Вверх
newbee
Дата 19.12.2011, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Цитата(VH_ @  19.12.2011,  02:02 Найти цитируемый пост)
(< 1 x 6)
Это верно, только я по привычке написала более общее и верное решение, в реальных задачах границы обычно не задаются константами, а являются результатом вычисления (у которого помимо времени выполнения могут быть еще и побочные эффекты). Будь < специальной ленивой формой, запись (< a x b) была бы хороша, но < - это просто функция, все параметры которой вычисляются перед ее вызовом.

Кстати, а есть лиспы, где < - не функция, а специальная форма?


--------------------
You're face to face
With man who sold the world
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.1759 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.