Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Необходимо найти наибольший общий делитель
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
По умолчанию Необходимо найти наибольший общий делитель - 26.12.2007, 01:52


ПОМОГИТЕ ПОЖАЛУЙСТА!
Очень плохо знаю Lisp. Взялся писать на XLisp.
Необходимо найти наибольший общий делитель из 2-х чисел.
В принципе, программа написана, но она не работает. Почему?

Код:
(defun max(x y)(COND ((> x y) x)
((EQ x y) x)
(t y)))

(defun min(x y)(COND ((< x y) x)
((EQ x y) x)
(t y)))

(defun nod2(x y)(COND ((EQ x y) x)
(t (nod2 (- (max x y) (min x y)) (min x y)))))) 

(defun nod(S)(COND ((ATOM S) S)
((ATOM (CDR S)) (nod2 (CAR S) (Cdar S)))
(t (nod ((CONS (nod2 (CAR S) (Cdar S)) (Cddr S)))))))
Ответить с цитированием
  (#2 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
По умолчанию Необходимо найти наибольший общий делитель - 26.12.2007, 01:52


ПОМОГИТЕ ПОЖАЛУЙСТА!
Очень плохо знаю Lisp. Взялся писать на XLisp.
Необходимо найти наибольший общий делитель из 2-х чисел.
В принципе, программа написана, но она не работает. Почему?

Код:
(defun max(x y)(COND ((> x y) x)
((EQ x y) x)
(t y)))

(defun min(x y)(COND ((< x y) x)
((EQ x y) x)
(t y)))

(defun nod2(x y)(COND ((EQ x y) x)
(t (nod2 (- (max x y) (min x y)) (min x y)))))) 

(defun nod(S)(COND ((ATOM S) S)
((ATOM (CDR S)) (nod2 (CAR S) (Cdar S)))
(t (nod ((CONS (nod2 (CAR S) (Cdar S)) (Cddr S)))))))
Ответить с цитированием
  (#3 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
По умолчанию Необходимо найти наибольший общий делитель - 26.12.2007, 01:52


ПОМОГИТЕ ПОЖАЛУЙСТА!
Очень плохо знаю Lisp. Взялся писать на XLisp.
Необходимо найти наибольший общий делитель из 2-х чисел.
В принципе, программа написана, но она не работает. Почему?

Код:
(defun max(x y)(COND ((> x y) x)
((EQ x y) x)
(t y)))

(defun min(x y)(COND ((< x y) x)
((EQ x y) x)
(t y)))

(defun nod2(x y)(COND ((EQ x y) x)
(t (nod2 (- (max x y) (min x y)) (min x y)))))) 

(defun nod(S)(COND ((ATOM S) S)
((ATOM (CDR S)) (nod2 (CAR S) (Cdar S)))
(t (nod ((CONS (nod2 (CAR S) (Cdar S)) (Cddr S)))))))
Ответить с цитированием
  (#4 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 26.12.2007, 07:56

NOD2 решает поставленную задачу (если убрать лишнюю скобку в конце).

Вопрос но NOD: что точно эта функция должна делать? Если находить НОД списка чисел, то так:
Код:
(defun nod(S)
  (COND ((null (cdr S)) (car S))
        (t (nod (CONS (nod2 (CAR S) (Cadr S)) (Cddr S))))))
Ответить с цитированием
  (#5 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 26.12.2007, 07:56

NOD2 решает поставленную задачу (если убрать лишнюю скобку в конце).

Вопрос но NOD: что точно эта функция должна делать? Если находить НОД списка чисел, то так:
Код:
(defun nod(S)
  (COND ((null (cdr S)) (car S))
        (t (nod (CONS (nod2 (CAR S) (Cadr S)) (Cddr S))))))
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 26.12.2007, 07:56

NOD2 решает поставленную задачу (если убрать лишнюю скобку в конце).

Вопрос но NOD: что точно эта функция должна делать? Если находить НОД списка чисел, то так:
Код:
(defun nod(S)
  (COND ((null (cdr S)) (car S))
        (t (nod (CONS (nod2 (CAR S) (Cadr S)) (Cddr S))))))
Ответить с цитированием
  (#7 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
По умолчанию 26.12.2007, 23:52

СПАСИБО ЗА ПОДСКАЗКУ!
Файл загружается. Ищется НОД для двух чисел. А вот для списка выдаёт ошибку. (СКОРЕЕ ВСЕГО Я КАК-ТО НЕ ТАК ЗАПИСЫВАЮ).
Пишу:
(nod (26 28 30))
Выдаёт
error: bad function - 26

И ещё вопрос "Что значит "nul"?". Я такого ещё не использовал.
Ответить с цитированием
  (#8 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
По умолчанию 26.12.2007, 23:52

СПАСИБО ЗА ПОДСКАЗКУ!
Файл загружается. Ищется НОД для двух чисел. А вот для списка выдаёт ошибку. (СКОРЕЕ ВСЕГО Я КАК-ТО НЕ ТАК ЗАПИСЫВАЮ).
Пишу:
(nod (26 28 30))
Выдаёт
error: bad function - 26

И ещё вопрос "Что значит "nul"?". Я такого ещё не использовал.
Ответить с цитированием
  (#9 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
По умолчанию 26.12.2007, 23:52

СПАСИБО ЗА ПОДСКАЗКУ!
Файл загружается. Ищется НОД для двух чисел. А вот для списка выдаёт ошибку. (СКОРЕЕ ВСЕГО Я КАК-ТО НЕ ТАК ЗАПИСЫВАЮ).
Пишу:
(nod (26 28 30))
Выдаёт
error: bad function - 26

И ещё вопрос "Что значит "nul"?". Я такого ещё не использовал.
Ответить с цитированием
  (#10 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 27.12.2007, 07:53

Цитата:
Пишу:
(nod (26 28 30))
Выдаёт
error: bad function - 26
(nod '(26 28 30))

Цитата:
И ещё вопрос "Что значит "nul"?". Я такого ещё не использовал.
Я тоже. А NULL - это функция, проверяющая список на пустоту: (NULL '()) => T, (NULL '(1 2 3)) => NIL.
Ответить с цитированием
  (#11 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 27.12.2007, 07:53

Цитата:
Пишу:
(nod (26 28 30))
Выдаёт
error: bad function - 26
(nod '(26 28 30))

Цитата:
И ещё вопрос "Что значит "nul"?". Я такого ещё не использовал.
Я тоже. А NULL - это функция, проверяющая список на пустоту: (NULL '()) => T, (NULL '(1 2 3)) => NIL.
Ответить с цитированием
  (#12 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 27.12.2007, 07:53

Цитата:
Пишу:
(nod (26 28 30))
Выдаёт
error: bad function - 26
(nod '(26 28 30))

Цитата:
И ещё вопрос "Что значит "nul"?". Я такого ещё не использовал.
Я тоже. А NULL - это функция, проверяющая список на пустоту: (NULL '()) => T, (NULL '(1 2 3)) => NIL.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
Post 28.12.2007, 14:23

ВСЁ РАБОТАЕТ!
Большое спасибо!
Ответить с цитированием
  (#14 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
Post 28.12.2007, 14:23

ВСЁ РАБОТАЕТ!
Большое спасибо!
Ответить с цитированием
  (#15 (permalink)) Старый
DYX_56 DYX_56 вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 26.12.2007
Post 28.12.2007, 14:23

ВСЁ РАБОТАЕТ!
Большое спасибо!
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать из пяти координат наибольший по площади треугольник Patiss С/С++ 2 21.10.2011 06:55
Написать функцию нахождения наибольший общий делителя двух натуральных чисел. DrDre9991 Pascal 1 13.10.2010 17:19
Найти сумму ряда с точностью ɛ, общий член которого задан формулой lesya-smile Lisp 4 31.03.2010 20:49
Найти в массиве из 5-ти переменных наибольший отрицательный элемент Shura Assembler 0 02.01.2010 14:59
Найти наибольший общий делитель для чисел в простом списке evgeniuz74 Lisp 0 19.12.2009 17:57
Дан массив из 8 байтов, необходимо найти в этом массиве максимальный четный элемент Alex_Jan Assembler 2 04.04.2009 22:30
Наибольший элемент в трехмерном массиве размерностью MxMxМ в С++ mary_jane Вопросы начинающих программистов 6 25.11.2007 22:30
Необходимо найти парсер C# для проектов на Visual Studio FreeZ .NET 1 07.05.2007 20:53
Наибольший симметричный подсписок Vl_r Prolog 1 06.04.2005 13:48
Найти наибольший элемент среди стоящих на главной и побочной диагоналях Petr-formatted Delphi 6 25.01.2005 19:08
Необходимо авт. найти сервер в сети .... TNT Visual Basic 1 16.09.2003 21:13
В Exele необходимо найти адрес самой нижней ячейки Kain Visual Basic 1 28.11.2002 14:25



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов