> 1 <

Автор Сообщение

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1193   2010-01-25 21:17 GMT+3 часа(ов)      
Задачки вроде бы простые, на паскале и с++ я такие писала но в этом языке и с такой громоздкой литературой не могу вобще разобраться. Mlisp интерпритатор... если кто-нибудь поможет буду очень признательна.

1.Определить функцию которая возвращает максимальное из 3х чисел.
2.(С рекурсией, причём не с параллельной (я не знаю что это такое )) Дан числовой список, посчитать сумму его элементов.

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#1195   2010-01-25 22:12 GMT+3 часа(ов)      
(defun F (A B C)
(if (> A B)
(if (> A C) A C)
(if (> B C) B C)))

(defun F (L)
(if (null L) 0
(+ (car L) (F (cdr L)))))

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1196   2010-01-25 23:09 GMT+3 часа(ов)      
Обьясни мне глупенькой пожалуйста если не трудно...

со второго примера defun- это функция так ?!?
(L) - это список так?
если список пстой то функция возвращает 0 и это же (if (null L) 0условие терминального выхода так?
car - это первый элемент списка так ?
cdr - это список без первого элемента так?
т.е. мы постоянно берём первый элемент из списка которыйкаждый раз становться на первый элемент короче) и накопляем в F


И по поводу первого задания...
а нет в лиспе ф-ций типа
Maximum (a b c)
?
и ещё раз спасибо не суди строго я первый день вижу это язык (K)

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1197   2010-01-25 23:15 GMT+3 часа(ов)      
А можно как-нибудь не через if а через cond написать? :S у нас просто ещё такого не было...

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1198   2010-01-25 23:53 GMT+3 часа(ов)      
И ещё вопросик ясебе тут всю голову уже с этим лиспом сломала
вот есть функция и надо определить её значение
(Eval (Cdr '(Quote '(a b c)))) - cdr возвращает список а Eval не работает со списками и выдаёт ошибку - значит эт лабуда так ?

и
(Eval(Car '(Quote '(J J)))) - мои женско-логические рассуждения
(Car '(Quote '(J J)))) - т.к. Car возвращает только первый элемент то всё это вернёт нам Quote
а Eval(Quote) вернёт нам Nil так почему интерпритатор МюЛисп возвращает мне Quote от изначального выражения?

p.s. боже за что мне такие предметы :'(

a.mutual.thrill

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#1199   2010-01-26 00:08 GMT+3 часа(ов)      
Цитата
Алина :
И ещё вопросик ясебе тут всю голову уже с этим лиспом сломала
вот есть функция и надо определить её значение
(Eval (Cdr '(Quote '(a b c)))) - cdr возвращает список а Eval не работает со списками и выдаёт ошибку - значит эт лабуда так ?

и
(Eval(Car '(Quote '(J J)))) - мои женско-логические рассуждения
(Car '(Quote '(J J)))) - т.к. Car возвращает только первый элемент то всё это вернёт нам Quote
а Eval(Quote) вернёт нам Nil так почему интерпритатор МюЛисп возвращает мне Quote от изначального выражения?

p.s. боже за что мне такие предметы :'(



(eval '(car (quote (a b c)))) -> a
(eval '(cdr (quote (a b c)))) -> (b c)

a.mutual.thrill

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#1200   2010-01-26 00:11 GMT+3 часа(ов)      
Цитата
Алина :
А можно как-нибудь не через if а через cond написать? :S у нас просто ещё такого не было...



(defun f (l)
(cond ((null l) 0)
(t
(+ (car l) (f (cdr l))))))

(defun max2 (a b)
(cond ((> a b) a)
(t b)))

(defun max3 (a b c)
(max2 (max2 a b) c))

В common lisp есть функция (max ...)

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1201   2010-01-26 00:13 GMT+3 часа(ов)      
(eval '(car (quote (a b c)))) -> a
(eval '(cdr (quote (a b c)))) -> (b c)

Я с тобой согласна но только задание

(eval(cdr '(quote '(a b c)))) -лабуда?!?
(eval(car '(quote '(j j)))) - nill или quote и если можно обьясните почему интерпритатор думает не так как я

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1202   2010-01-26 00:16 GMT+3 часа(ов)      
(defun max3 (a b c)
(max2 (max2 a b) c))

В common lisp есть функция (max ...)

а в МюЛиспе нету ((
сделай без Max пожалуйста

отредактировал(а) Алина: 2010-01-26 00:22 GMT+3 часа(ов)

a.mutual.thrill

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#1204   2010-01-26 00:25 GMT+3 часа(ов)      
 
(defun f2 (a b)
(cond ((> a b) a)
(t b)))
 
(defun f (a b c)
(f2 (f2 a b) c))
 


или

 
(defun f (a b c)
(defun f2 (a b)
(cond ((> a b) a)
(t b)))
(f2 (f2 a b) c))
 

отредактировал(а) a.mutual.thrill: 2010-01-26 01:02 GMT+3 часа(ов)

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1206   2010-01-26 00:30 GMT+3 часа(ов)      
Спасибо!!! только надо без Max в мюлиспе его нету а надо обязательно на нём

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1207   2010-01-26 00:32 GMT+3 часа(ов)      
(eval(cdr '(quote '(a b c)))) -лабуда?!?
(eval(car '(quote '(j j)))) - nill или quote и если можно обьясните почему интерпритатор думает не так как я

реши пожалуйста мои разногласия с интерпритатором

и как сделать
Определить функцию которая возвращает максимальное из 3х чисел. (без if и без Max)

отредактировал(а) Алина: 2010-01-26 00:56 GMT+3 часа(ов)

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1210   2010-01-26 01:12 GMT+3 часа(ов)      
Всё пасиба

Алина

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1212   2010-01-26 01:27 GMT+3 часа(ов)      
если не трудно поясни что такое (t b)

a.mutual.thrill

Members


Статус

4 сообщений

Где: Russia
Род занятий:
Возраст:

#1214   2010-01-26 01:40 GMT+3 часа(ов)      
 
(cond ((условие) действие)
...
((условие) действие)
; если ни одно условие не выполняется
; выполняется эта ветвь
; t - true
(t действие))
 

то же самое что и default в switch {} c/c++
или else в pascal
> 1 <


Онлайн :

0 пользователь(ей), 43 гость(ей) :