Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2008, 01:35   #1
IGREK
Пользователь
 
Регистрация: 04.06.2008
Сообщений: 16
Восклицание Кто-нибудь шарит в Common Lisp? Нужна помощь.

подскажите пожалуйста, как покрасивее реализовать вычисление остатка от деления числа на 3. Казалось бы, задача пустяковая, однако не все так просто .
IGREK вне форума Ответить с цитированием
Старый 05.06.2008, 08:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я может не в тему, но как по мне можно и обычной арифметикой обойтись:
Код:
(- 11 (* 3 (/ 11 3)))
Здесь 11 - то самое число.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.06.2008, 15:59   #3
IGREK
Пользователь
 
Регистрация: 04.06.2008
Сообщений: 16
По умолчанию

Спасибо.Пробовал,не то.В приведенной тобой строке операция деления должна давать целую часть результата,тогда получится.Есть идеи?
IGREK вне форума Ответить с цитированием
Старый 07.06.2008, 21:40   #4
VH_
Новичок
Джуниор
 
Регистрация: 07.06.2008
Сообщений: 2
По умолчанию

Код:
(defun F (N)
 (cond
  ((< N 3) N)
  (T (F (- N 3)))))
Код:
(defun F (N)
 (if (< N 3) N
  (F (- N 3))))
VH_ вне форума Ответить с цитированием
Старый 08.06.2008, 18:13   #5
IGREK
Пользователь
 
Регистрация: 04.06.2008
Сообщений: 16
По умолчанию

Спасибо,конечно,но рекурсией такое считать - это экстрим. Сегодня узнал,что все намного проще: всего-лишь одна команда mod справляется наура .
IGREK вне форума Ответить с цитированием
Старый 08.06.2008, 23:46   #6
VH_
Новичок
Джуниор
 
Регистрация: 07.06.2008
Сообщений: 2
По умолчанию

В LISPе нет «команд», а только функции (и их вызовы), специальные формы и макро. Термин «реализовать» обычно подразумевает "предоставить функцию (либо макро - и это оговаривается), возвращающую требуемый результат, и использующую базовые функции и специальные формы, а встроенные функции - минимально и по необходимости".
На вопрос "какая встроенная функция возвращает остаток от деления" немедленно последовал бы ответ: (rem) и (mod), а также можно использовать функции (truncate), (round) и (floor), возвращающие остаток от деления как второе значение.
VH_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие документов Microsofrt Common Console через delphi )Игнат( Общие вопросы Delphi 6 24.01.2008 17:09
Кто шарит в PHP Simply-Art PHP 3 20.05.2007 21:01