Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Составить список, состоящий из натуральных чисел
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
OKSI55 OKSI55 вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.03.2008
По умолчанию Составить список, состоящий из натуральных чисел - 13.05.2008, 23:02

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

Заранее признательна и благодарна.
Ответить с цитированием
  (#2 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 13.05.2008, 23:59

a)
Код:
(defun F (N1 N2)
  (if (>= N1 N2)
   (cons N2 nil)
   (cons N1 (F (1+ N1) N2))))
в)
Код:
(defun REVERSE1 (L); основа - Хювёнен-Сеппянен "Мир Лиспа" т.1 стр.219
  (if L
   (append
    (REVERSE1 (cdr L))
    (cons (car L) nil))))
Код:
(defun REV (L); Хювёнен-Сеппянен "Мир Лиспа" т.1 стр.234
  (cond
   ((null L) L)
   ((null (cdr L)) L)
   (T
    (cons
     (car (REV (cdr L)))
     (REV (cons (car L) (REV (cdr (REV (cdr L))))))))))
г) как должен выглядеть список '(0 1 2 3) после "утроения"?
Ответить с цитированием
  (#3 (permalink)) Старый
OKSI55 OKSI55 вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.03.2008
По умолчанию 14.05.2008, 11:43

Уважаемый VH, список (0 1 2 3) после утроения выглядит так: (0 1 2 3 0 1 2 3 0 1 2 3).
Спасибо за помощь!
Ответить с цитированием
  (#4 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 14.05.2008, 12:24

б)
Код:
(defun F (L &optional (R '((minusp . 0) (zerop . 0) (plusp . 0))))
  (if (null L) R
   (F
    (cdr L)
    ((lambda (op)
      ((lambda (value)
        (substitute (cons op (1+ (cdr value))) value R))
       (assoc op R)))
     ((lambda (elem)
       (cond
        ((minusp elem) 'minusp)
        ((zerop elem) 'zerop)
        (T 'plusp)))
      (car L))))))
Ответить с цитированием
  (#5 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 14.05.2008, 12:28

г)
Код:
(defun F (L)
  (append L L L))
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
OKSI55 OKSI55 вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.03.2008
По умолчанию 14.05.2008, 20:00

Спасибо ОГРОМНОЕ. Буду разбираться.
Ответить с цитированием
  (#7 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 14.05.2008, 21:08

б)
Код:
(defun F (L &optional (R '(0 0 0)))
  (if (null L) R
   (F
    (cdr L)
    (mapcar '+
     R
     ((lambda (elem)
       (cond
        ((minusp elem) '(1 0 0))
        ((zerop elem) '(0 1 0))
        (T '(0 0 1))))
      (car L))))))
Ответить с цитированием
  (#8 (permalink)) Старый
OKSI55 OKSI55 вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.03.2008
По умолчанию 15.05.2008, 19:43

Уважаемые господа, не подскажите ли ВЫ?!
Как из этих четырех задач сделать одну, так чтобы на экран выводилось примерно вот такое меню:
l. Создание списка между двумя заданными числами\n"),
2. Инвертировать список\n"),
3. Количество отрицательных элементов\n"),
4. Количество положительных элементов\n"),
5. Количество нулевых элементов\n"),
6. Утроить список\n"),

А затем при нажатии цифры 1,2,3,4,5,6 выполнялось то или иное действие.

Заранее благодарю.
Ответить с цитированием
  (#9 (permalink)) Старый
OKSI55 OKSI55 вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.03.2008
По умолчанию 16.05.2008, 12:39

Всё сдано! Премного благодарна за помощь!
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно разобрать программу для перевода списка арабских чисел в список римских чисел. RuslanTM Prolog 2 18.12.2011 17:04
файл из натуральных чисел tupoi Prolog 7 04.12.2011 19:44
Надо построить список состоящий из левых частей голов Ilyxa68 Lisp 7 13.04.2011 04:17
Нахождение суммы натуральных чисел на С++ Shenan Вопросы начинающих программистов 0 13.12.2010 02:46
Написать функцию нахождения наибольший общий делителя двух натуральных чисел. DrDre9991 Pascal 1 13.10.2010 17:19
Вывести на экран все пары натуральных чисел bastar Вопросы начинающих программистов 1 03.10.2010 21:35
Записать в файл последовательного доступа N натуральных чисел Роман ТС Вопросы начинающих программистов 1 16.09.2010 16:43
Дан список, состоящий из букв найти их частоту avi Lisp 5 20.09.2009 13:10
Составить программу записи натуральных чисел во внешнюю память akylich Assembler 2 05.05.2008 22:55
По списку, состоящему из атомов-чисел, составить список значений super_girl Lisp 8 12.04.2007 15:16
Составить программу умножения чисел merk Assembler 0 25.03.2007 16:25
Создание программы на поиск всех натуральных чисел не превосходящих числа m FARA Вопросы начинающих программистов 2 07.12.2005 12:58



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