Форум программистов, компьютерный форум, киберфорум
AutoLISP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 02.06.2014
Сообщений: 4
1

AutoLisp, поменять порядок цифр числа

08.01.2016, 18:24. Показов 1754. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо перевернуть натуральное число n в том случае, если в него входит цифра 3. Я смог только проверить число на наличие тройки, а вот с переворотом беда. Помогите пожалуйста.

Lisp
1
2
3
4
5
(DEFUN REV(X)
(COND
((< X 10) (COND ((= X 3) T) (T nil)))
((= (REM X 10) 3) T)
(T (REV (FIX (/ X 10))))))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2016, 18:24
Ответы с готовыми решениями:

Поменять порядок цифр числа n на обратный
вести число n.Поменять порядок цифр числа n на обратный.

Поменять порядок цифр числа n на обратный
Вести число n.Поменять порядок цифр числа n на обратный.То есть число 12345 перевести в 54321. ...

Поменять порядок цифр числа на обратный
Поменять порядок цифр числа на обратный. Например, было 12345, стало 54321.

Поменять порядок цифр числа на обратный
В архиве прилагаю мои, пока что нерешенные практические работы. Нужно решить там задачки(на...

6
621 / 941 / 150
Регистрация: 10.08.2015
Сообщений: 5,018
08.01.2016, 19:27 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
(defun explode ( num / lst)
  ;; Разбивает число на список его цифр
  ;; (explode 153) ==> (1 5 3)
  (while (> num 0)
    (setq lst   (cons (rem num 10) lst)
          num (/ num 10)))
  lst
)
 
(defun implode ( lst / num )
  ;; Восстанавливает число из списка его цифр
  ;; (implode '(1 5 3)) ==> 153
  (setq num 0
        len (1- (length lst)))
  (while lst
   (setq num (+ num (* (car lst) (expt 10 len) ))
         len (1-  len)
         lst (cdr lst)))
  num
)
 
(if (member 3 (setq num 153 lst (explode num)))
  (implode (reverse lst)))
3
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,643
Записей в блоге: 13
08.01.2016, 22:17 3
В HomeLisp это будет так:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun task (n)
  (let ((l (explode n)))
    (if (member 3 l) (implode (reverse l)) n)))
 
==> task
 
(task 123)
 
==> 321
 
(task 124)
 
==> 124
2
1050 / 944 / 107
Регистрация: 04.11.2012
Сообщений: 974
Записей в блоге: 3
08.01.2016, 22:58 4
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun F (integer / str)
  (setq str (itoa integer))
  (if (vl-string-search "3" str)
      (read (vl-list->string (reverse (vl-string->list str))))
      integer))
 
Command: (F 1234)
4321
 
Command: (F 124)
124
2
0 / 0 / 0
Регистрация: 02.06.2014
Сообщений: 4
10.01.2016, 09:45  [ТС] 5
Большое спасибо!!
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
13.01.2016, 00:49 6
Лучший ответ Сообщение было отмечено _sg как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
;; racket-lang.org
(define (foo n)
  (when (number? n)
    (let ((m (string->list (number->string n))))
      (if (member #\3 m)
          (string->number (list->string (reverse m)))
          n))))
 
(foo 1234)
;4321
(foo 2244)
;2244
3
621 / 941 / 150
Регистрация: 10.08.2015
Сообщений: 5,018
13.01.2016, 02:51 7
Вот так будет быстрее всего
Lisp
1
2
3
(defun foo ( num / lst)
  (if (vl-position 51 (setq lst (vl-string->list (itoa num))))
    (atoi (vl-list->string (reverse lst))) num))
4
13.01.2016, 02:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2016, 02:51
Помогаю со студенческими работами здесь

Поменять порядок цифр числа N на обратный
общий алгоритм ясен , но проблема в том что я впервые работаю с визуальным приложением , и не знаю...

Поменять порядок цифр числа n на обратный
Поменять порядок цифр числа n на обратный. Помогите сделать так чтобы работала с...

Поменять порядок цифр натурального числа на обратный
Сам смог сделать только это #include &lt;iostream&gt; using namespace std; int main() { int...

Поменять порядок цифр заданного числа на обратный
I. Дано натуральное число n. Поменять порядок цифр числа n на обратный. Проанализировать...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru