Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
SzRoman
0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 5
#1

Отладить программу

19.01.2015, 23:31. Просмотров 346. Ответов 5
Метки нет (Все метки)

Доброго времени суток. Помогите, пожалуйста, отладить программу. Задание следующее:

Написать программу на Лиспе формирования списка, состоящего из всех списков, которые не являются списками самого высокого уровня (не считая нулевой уровень) и списками самого низкого уровня для заданного списка.

Пример

Lisp
1
2
(a(b(c)((1)))d(e(f(g) h))) ==> ((c)(f(g)h)(g))
(((((a))))) ==>((((a)))((a)))
Мой код:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(defun pp1(L)
  (setq Rez () cL 0 mL 0 pr 0)    ; cL - текущий уровень, mL - максимальный уровень Rez - результат
  (dolist (x L)
    (if (listp x) (progn  (setq cL 0) (pp2 x)))
  )
  (dolist (x L)
    (if (listp x)(progn (setq cL 0)(pp3 x)))
  )
  (princ "mL=")(princ mL)(terpri)
  (princ "Rez=")(princ Rez)(terpri)
)
(defun pp2(x)
  (if (= pr 0) (setq cL (1+ cL)))
  ;(princ "pp2 cL=")(princ cL)(terpri)  
  (if (> cL mL) (setq mL cL))
  ;(princ "pp2 mL=")(princ mL)(terpri)  
  (dolist (y x) (if (listp y)(progn (pp2 y)(setq pr 1))))
  (setq pr 0)
)
(defun pp3(x) 
  (setq cl (1+ cL))
  (princ "pp3 cL=")(princ cL)(terpri)  
  (if (and (> cL 1)(<  cL  mL)) (progn (setq Rez (append Rez (cons x ())))))
  (dolist (y x)  (if (listp y) (pp3 y)))
 )
Заранее спасибо всем неравнодушным!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2015, 23:31
Ответы с готовыми решениями:

Разработать алгоритм и тесты, написать и отладить программу Выполнить программу, проанализировать результат
Из матрицы У(k, k) получить вектор Т, элементами которого являются элементы...

отладить программу
Гипер гимаройная задача.... услове! Имееться таблица данных ...

Отладить программу
Вот программа, которая в каждом слове текста заменяет &quot;а&quot; на букву &quot;е&quot;, если...

отладить программу
в 6 пункте нужно чтобы выходило из таблицы в главное меню, а оно что то глючит...

Отладить программу
У нас дан однонаправленный список, добавили кнопку удаления последнего...

5
_sg
3722 / 3519 / 237
Регистрация: 12.05.2012
Сообщений: 2,450
20.01.2015, 10:22 #2
как вариант:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(defun max-depth (w)
  (cond ((null w) 0)
        ((atom (car w)) (max-depth (cdr w)))
        ((max (1+ (max-depth (car w))) (max-depth (cdr w)))))) 
 
(defun dive (n w &aux (a (car w)) (d (cdr w)))
   (cond ((null w) nil)
         ((= n 0) (list w))
         ((atom a) (dive n d))
         ((nconc (dive (1- n) a) (dive n d)))))
 
(defun in-depth (w &aux (m (max-depth w)))
  (loop for a from 2 to (1- m) nconc (dive a w)))
 
> (max-depth '(a (b (c) ((1))) d (e (f (g) h))))
3
> (dive  0 '(a (b (c) ((1))) d (e (f (g) h))))
((A (B (C) ((1))) D (E (F (G) H))))
> (dive  1 '(a (b (c) ((1))) d (e (f (g) h))))
((B (C) ((1))) (E (F (G) H)))
> (dive  2 '(a (b (c) ((1))) d (e (f (g) h))))
((C) ((1)) (F (G) H))
> (dive  3 '(a (b (c) ((1))) d (e (f (g) h))))
((1) (G))
> (dive  4 '(a (b (c) ((1))) d (e (f (g) h))))
NIL
> (in-depth '(a (b (c) ((1))) d (e (f (g) h))))
((C) ((1)) (F (G) H))
3
Catstail
Модератор
23575 / 11676 / 2043
Регистрация: 12.02.2012
Сообщений: 19,050
20.01.2015, 12:42 #3
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun slst (lst &optional (n 0))
  (let ((res nil))
    (iter (for a in lst)
      (when (listp a) (collecting (list n a) into res)
                      (setq res (append res (slst a (+ n 1)))))) res))
 
(defun task (lst)
  (let* ((s (slst lst))
         (min (apply 'min (mapcar 'car s)))
         (max (apply 'max (mapcar 'car s)))
         (q (remove-if #'(lambda (x) (or (= (car x) min) (= (car x) max))) s)))
     (mapcar 'cadr q)))
 
==> task
 
(task '(a (b (c) ((1))) d ( e (f (g) h))))
 
==> ((c) ((1)) (f (g) h))
1
SzRoman
0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 5
20.01.2015, 20:31  [ТС] #4
Огромное человеческое СПАСИБО неравнодушным!)
0
RedBull89
0 / 0 / 0
Регистрация: 04.06.2012
Сообщений: 120
25.01.2015, 19:18 #5
Подскажите пожалуйста, что означает функция ITER ?
0
Catstail
Модератор
23575 / 11676 / 2043
Регистрация: 12.02.2012
Сообщений: 19,050
25.01.2015, 19:31 #6
Цитата Сообщение от RedBull89 Посмотреть сообщение
Подскажите пожалуйста, что означает функция ITER ?
- универсальный и очень мощный итератор (организатор циклов). В CL оформлен в виде макро, который нужно подключать; в HomeLisp встроен в ядро.
1
25.01.2015, 19:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2015, 19:31

отладить программу
программа компилируется,но выводит какие то иероглифы,помогите найти ошибки ...

Отладить программу
Помогите пожалуйста, сегодня надо сдать программу. Нужно отладить мой код. Вот...

Отладить программу
дано было задание...чтобы программа решали систему линейных уравнений методом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru