Форум программистов, компьютерный форум, киберфорум
Языки JVM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/40: Рейтинг темы: голосов - 40, средняя оценка - 4.58
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
1

Clojure Присвоение ввода с клавиатуры переменной в Clojure

13.06.2018, 18:31. Показов 7361. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужен код делающий следующее :
1. Присвоить ввод с клавы переменной.
2. "Сложить" её со строкой "Привет, ".
3. Результат вывести на экран.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2018, 18:31
Ответы с готовыми решениями:

Groovy Присвоение ввода с клавиатуры переменной в Groovy
Map rim_arab = BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) print...

Объявление переменной, после ввода её имени с клавиатуры
необходимо, чтобы пользователь имел возможность задавать свои имена переменных. А вообще требуется...

Ассемблерная вставка для ввода с клавиатуры значения переменной
Нужен пример программы на си, в которой ввод с клавиатуры строки в переменную производится с...

Присвоение к переменной цифры для получения новой переменной
даны переменные: define ("A1","aaaa"); define ("B1","ssss"); define ("A2","dddd"); ...

19
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.06.2018, 18:55 2
тебе нужно вежливости поучиться, а вообще стыдно такие вопросы задавать

Java
1
2
3
(defn hello-world []
  (let [name (read-line)]
    (println (format "Hello, %s" name))))
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
14.06.2018, 23:40  [ТС] 3
Итак, на CLISP следующее катит -

Break 1 [2]> (dolist (i `(1 2 3)) (print i))
1
2
3
NIL


а на Clojure следующее не катит -

user=> (dolist (i `(1 2 3)) (println i))
java.lang.Exception: Unable to resolve symbol: dolist in this context (NO_SOURCE_FILE:18)


Насколько я понимаю, dolist в Clojure нет ...
Поэтому просьба - напишите, как произвести итерацию по списку ...
0
19 / 17 / 7
Регистрация: 18.09.2017
Сообщений: 95
15.06.2018, 08:05 4
Lisp
1
(doseq [x '(1 2 3)] (println x))
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
15.06.2018, 22:11  [ТС] 5
Следующий вопрос - (? `(1 2 3) 4) => `(1 2 3 4) - что должно быть написано вместо ? ...
P.S. Я конечно понимаю, что задаю простейшие вопросы, но "Программирование на Clojure"
это болото мне легче так ...

Добавлено через 1 час 30 минут
(conj `(1 2 3) 4) => (4 1 2 3) - теперь сам собой возникает вопрос,
а (1 2 3 4) как получить ...

Добавлено через 6 минут
user=> (reverse (conj (reverse `(1 2 3)) 4))
(1 2 3 4)

Так что ли ...
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
15.06.2018, 22:26 6
например
(concat `(1 2 3) (list 4))
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
16.06.2018, 15:30  [ТС] 7
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defn spisok []
  (def order `(0)) (def q 0)
  (println " Vvedite N = ")
    (let [n (read-string (read-line))]
      (while (<= q n) 
        (def j 0) (def t (Math/round (rand n)))
          (doseq [i order] (if (not (= t i)) (inc j)))
    (if (= j (count order)) (def order (concat order (list t))))
      (def q (count order)))
        (def order (rest order))
          (print " S = ") (doseq [i order] (print " " i))))
Вот к чему всё шло, но код неправильный - такое впечатление
что прога впадает в бесконечный цикл ...
Просьба

Добавлено через 40 минут
Прога принимает число и строит список с таким же
числом элементов, без 0, без повторов, без лакун,
Элементы располагаются в случайном порядке ...

Добавлено через 4 часа 9 минут
Следует добавить что элементы, это
числа от 1 до N включительно ...

Добавлено через 3 часа 13 минут
Как должна работать прога:
стр. №2 - создание списка order с 1 элементом равным 0, обнуление длины списка q.
№4 - ввод строки, превращение её в число, присвоение его n.
№5 - цикл работает пока q <= n.
№6 - обнуление счётчика j, присвоение t случайного целого числа.
№7 - обход order, если числа t нет в списке - увеличение j.
№8 - если j = длине списка, т.е. совпадений не было найдено, то к списку прибавляется t.
№9 - q = длина списка, и идет сравнение с n.
№10 - удаление первого элемента.
№11 - так я пытаюсь вывести список ...

Добавлено через 1 час 27 минут
№7 - j увеличивается на 1 при каждом несовпадении t с i.
0
Эксперт функциональных языков программированияЭксперт Java
4539 / 2732 / 486
Регистрация: 28.04.2012
Сообщений: 8,628
16.06.2018, 17:18 8
Slenon, почитай про lexical scope, что ли.

Добавлено через 2 минуты
Ну и да, естественно она впадёт в бесконечный цикл, ведь (<= q n) всегда true
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
16.06.2018, 18:24  [ТС] 9
Цитата Сообщение от korvin_ Посмотреть сообщение
ведь (<= q n) всегда true
korvin, т.е. q всё время <= n - оно никак не может стать
больше чем n ...
И в этом виновато то, что я не правильно "использую"
пространство имён? ...
0
Эксперт функциональных языков программированияЭксперт Java
4539 / 2732 / 486
Регистрация: 28.04.2012
Сообщений: 8,628
16.06.2018, 23:12 10
Цитата Сообщение от Slenon Посмотреть сообщение
т.е. q всё время <= n - оно никак не может стать
больше чем n
Именно это я и сказал, зачем повторяешь?

Цитата Сообщение от Slenon Посмотреть сообщение
И в этом виновато то, что я не правильно "использую"
пространство имён?
Нет, в этом виновато, что ты не используешь голову, а пишешь код рандомно.
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
18.06.2018, 20:03  [ТС] 11
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defn spisok []  
     (def q 0) (def order `(0))
    (println " Vvedite N = ")
    (let [n (read-string (read-line))]       
      (while (<= q n)
       (def j 0) (def t (Math/round (rand n)))
         (doseq [i order] (if (not (= t i)) (def j (+ 1 j))))
      (if (= j (count order)) (def order (concat order (list t))))
        (def q (count order)))
          (def order (rest order))
    (print " S = (") (doseq [k order] (print " " k)) (print " )\n")))
*ns* -

Добавлено через 2 часа 38 минут
Lisp
1
(def order (rest order)) (println " S = " order)))
Добавлено через 11 часов 49 минут
Очередной ?
( ___ "Q" "W") => "QW" - что должно быть вместо ___ ? ...

Добавлено через 1 час 36 минут
(str "Q" "W")
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
27.06.2018, 20:15  [ТС] 12
Вопросы, вопросы, вопросы ...
Lisp
1
2
3
4
5
6
7
8
9
10
(defn spisok [] 
  (while (< 1 2) 
  (def order `(0))
  (println " Vvedite N = ")
    (let [n (read-string (read-line))]       
      (while (<= (count order) n)
       (def j `()) (def t (Math/round (rand n)))
         (doseq [i order] (if (not (= t i)) (def j (conj j 1))))
      (if (= (count j) (count order)) (def order (concat order (list t)))))
          (println " S = " (rest order)))))
Здесь убрано "накопление суммы" ...
Вопрос такой, является ли такой вариант кода более соответствующим
"духу" Clojure чем предыдущий ...

Добавлено через 5 минут
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defn arab_rim []
(def arab [1000 900 500 400 100 90 50 40 10 9 5 4 1 ])
(def rim  ["M" "CM" "D" "CD" "C" "XC" "L" "XL" "X" "IX" "V" "IV" "I"])
(while (< 1 2) 
(def e -1) (def Rim "")
    (println " Vvedite Arab = ")
  (let [Arab (read-string (read-line))]
       (def Arab1 Arab)  
      (while (< 0 Arab1)
        (def e (inc e))     
        (while (<= (nth arab e) Arab1)              
          (def Rim  (str Rim (nth rim e)))                 
          (def Arab1 (- Arab1 (nth arab e)))))
          (println " Rim  = " Rim))))
Вопрос, является ли (def Arab1 Arab) правильным путём решения
проблемы let, или существует более "формальный" способ ...

Добавлено через 18 минут
Lisp
1
2
3
4
5
6
7
8
9
10
(defn rim_arab []
  (def rimarab {:I 1 :V 5 :X 10 :L 50 :C 100 :D 500 :M 1000})
  (while (< 1 2) 
  (println " Введите Rim = ")
    (let [rim (read-line)]
      (def f1 (replace rim "IV" "IIII")) (def f2 (replace f1 "IX" "VIIII"))
      (def f3 (replace f2 "XL" "XXXX"))  (def f4 (replace f3 "XC" "LXXXX"))
      (def f5 (replace f4 "CD" "CCCC"))  (def f6 (replace f5 "CM" "DCCCC"))
        (def Arab 0) (doseq [i f6] (def Arab (+ Arab (get rimarab i))))
          (println " Arab = " Arab))))
А вот с этим кодом проблемы ...
Просьба ответить на следующие вопросы:
1. Как правильно заменить подстроку в строке (replace)
2. В строке (doseq [i f6] (def Arab (+ Arab (get rimarab i)))) i принимает
string значения ("V" например), а надо :V ...
Как решить эту проблему?

Добавлено через 20 часов 34 минуты
Вот результаты эксперемента:

C:\WINDOWS\system32>cd C:\Program Files\clojure-1.8.0\clojure-1.8.0\
C:\Program Files\clojure-1.8.0\clojure-1.8.0>java -cp clojure.jar clojure.main
Clojure 1.2.0
user=> *ns*
#<Namespace user>
user=> (def rimarab {"I" 1 "V" 5 "X" 10 "L" 50 "C" 100 "D" 500 "M" 1000})
#'user/rimarab
user=> (def Arab 0)
#'user/Arab
user=> (doseq [i "III"] (def Arab (+ Arab (get rimarab i))))
java.lang.NullPointerException (NO_SOURCE_FILE:0)
user=> (doseq [i "III"] (def Arab (+ Arab (get rimarab "I"))))
nil
user=> Arab
3
user=> (doseq [i "III"] (println i))
I
I
I
nil
user=>


Вопрос, если (doseq [i "III"] ...) выдаёт не "I" (3 раза),
то что получается на выходе (I - это что? ...) ...

Добавлено через 1 час 39 минут
Я так понимаю что на выходе была последовательность ...
Lisp
1
(def rimarab {"I" 1 "V" 5 "X" 10 "L" 50 "C" 100 "D" 500 "M" 1000})
Lisp
1
(doseq [i (map str rim)] (def Arab (+ Arab (get rimarab i))))
С replace по прежнему глухо

Добавлено через 6 часов 15 минут
Lisp
1
2
3
4
5
6
7
8
9
10
(defn rim_arab []
  (def rimarab {"I" 1 "V" 5 "X" 10 "L" 50 "C" 100 "D" 500 "M" 1000})
  (while (< 1 2) 
  (println " Введите Rim = ")
    (let [rim (read-line)]
      (def f (.replace rim "IV" "IIII")) (def f (.replace f "IX" "VIIII"))
      (def f (.replace f "XL" "XXXX"))   (def f (.replace f "XC" "LXXXX"))
      (def f (.replace f "CD" "CCCC"))   (def f (.replace f "CM" "DCCCC"))
        (def Arab 0) (doseq [i (map str f)] (def Arab (+ Arab (get rimarab i))))
          (println " Arab = " Arab))))
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
11.07.2018, 04:15  [ТС] 13
Lisp
1
2
3
4
5
6
7
8
(defn rim_arab []
(def w {"IV" "IIII" "IX" "VIIII" "XL" "XXXX" "XC" "LXXXX" "CD" "CCCC" "CM" "DCCCC"})
(def q (keys w)) (def r_a {"I" 1 "V" 5 "X" 10 "L" 50 "C" 100 "D" 500 "M" 1000}) 
 (while (< 1 2) (println " Введите Rim = ")
  (let [rim (read-line)] (def f rim)
   (doseq [j q] (def f (.replace f j (get w j))))
    (def Arab 0) (doseq [i (map str f)] (def Arab (+ Arab (get r_a i))))
     (println " Arab = " Arab))))
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
13.07.2018, 00:40  [ТС] 14
Lisp
1
2
3
4
5
6
7
8
9
10
(defn rim_arab []
(def r_a {"I" 1 "V" 5 "X" 10 "L" 50 "C" 100 "D" 500 "M" 1000})
(def q ["IV" "IX" "XL" "XC" "CD" "CM"])
(def w ["IIII" "VIIII" "XXXX" "LXXXX" "CCCC" "DCCCC"]) 
(def e [0 1 2 3 4 5])
 (while (< 1 2) (println " Введите Rim = ")
  (let [rim (read-line)] (def f rim)
   (doseq [j e] (def f (.replace f (nth q j) (nth w j))))
    (def Arab 0) (doseq [i (map str f)] (def Arab (+ Arab (get r_a i))))
     (println " Arab = " Arab))))
Добавлено через 2 часа 50 минут
Lisp
1
(doseq [j (range 6)] (def f (.replace f (nth q j) (nth w j))))
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
09.08.2018, 00:25  [ТС] 15
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
;arab_rim_2.clj
(defn arab_rim_2 []
 (def arab [1000 900 500 400 100 90 50 40 10 9 5 4 1 ])
 (def rim  ["M" "CM" "D" "CD" "C" "XC" "L" "XL" "X" "IX" "V" "IV" "I"])
 (def kol_vo [3 1 1 1 3 1 1 1 3 1 1 1 3])
  (while (< 1 2) (def K -1) (def Rim "")
   (println " Vvedite Arab = ")
    (let [Arab (read-string (read-line))] (def Arab_1 Arab)  
     (doseq [i kol_vo] (def K (inc K))
      (repeat i (if (<= 0 (- Arab_1 (nth arab K)))
                  (def Rim  (str Rim (nth rim K)))                               
                  (def Arab_1 (- Arab_1 (nth arab K)))
                  )))      
       (print " Arab  = " Arab) (print " ==> ") (println " Rim  = " Rim))))
Просьба - как изменить код, чтобы при значении true (if), вычислялись
строки 11 и 12 ...
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
12.08.2018, 20:57  [ТС] 16
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
;arab_rim_2.clj
(defn Q   [] (- Arab_1 (nth arab K))) (defn IF  [] (<= 0 (Q)))
(defn A_R [] (def Rim (str Rim (nth rim K))) (def Arab_1 (Q)))
(defn INC [] (def K (inc K)))
(defn arab_rim_2 []
 (def arab    [1000 900 500 400 100 90 50 40 10 9 5 4 1 ])
 (def rim     ["M" "CM" "D" "CD" "C" "XC" "L" "XL" "X" "IX" "V" "IV" "I"])
 (def kol_vo  [3 1 1 1 3 1 1 1 3 1 1 1 3])
  (while (< 1 2) (def K 0) (def Rim "") (println " Vvedite Arab = ")
   (let [Arab (read-string (read-line))] (def Arab_1 Arab)  
    (doseq [i kol_vo] (loop [x i] (if (IF) (recur (A_R)))) (INC))         
     (print " Arab  = " Arab) (print " ==> ") (println " Rim  = " Rim))))
0
Заблокирован
25.01.2019, 22:52 17
Цитата Сообщение от Slenon Посмотреть сообщение
Следующий вопрос - (? `(1 2 3) 4) => `(1 2 3 4) - что должно быть написано вместо ? ...
P.S. Я конечно понимаю, что задаю простейшие вопросы, но "Программирование на Clojure"
это болото мне легче так ...
Добавлено через 1 час 30 минут
(conj `(1 2 3) 4) => (4 1 2 3) - теперь сам собой возникает вопрос,
а (1 2 3 4) как получить ...
Добавлено через 6 минут
user=> (reverse (conj (reverse `(1 2 3)) 4))
(1 2 3 4)
Так что ли ...
В список всегда добавляется все в голову.
Поэтому
Lisp
1
2
(sort (cons 4 '(1 2 3)))
=>user (1 2 3 4)
или
Lisp
1
2
(seq (conj [1 2 3] 4))
=>user (1 2 3 4)
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
26.05.2019, 14:10  [ТС] 18
Построение вектора случайных чисел:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(ns vector_1)
;------------------------------------------------------------------------------
(defn del [v n] (into (subvec v 0 n) (subvec v (inc n))))
(defn vector_1 []
   (while (= 1 1)
       (println " Введите N = ")
        (let [n (read-string (read-line))] (def q n)         
          (def m (vec (rest (range (+ n 1))))) (def w [])
            (doseq [j  m]
                (def t (Math/round (rand q)))
                  (if (= t q) (def t (dec t)) t)               
                   (def w (conj  w (m t)))                                  
                     (def m (del m t))                     
                       (def q (dec q))                          
         )
         (println "    Vector =" w)   
      )
   )
)
Большая просьба, если кому не лень, оцените эффективность этого
алгоритма по сравнению с алгоритмом spisok-1 ! ...
0
5 / 5 / 3
Регистрация: 25.07.2016
Сообщений: 182
27.05.2019, 21:47  [ТС] 19
Нет предела совершенства …
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(ns vector_1)
;------------------------------------------------------------------------------
(defn del [v n] (into (subvec v 0 n) (subvec v (inc n))))
(defn upr [t] (def w (conj  w (m t))) (def m (del m t)))
(defn vector_1 []
   (while (= 1 1)
       (println " Введите N = ")
        (let [n (read-string (read-line))]
          (def m (vec (reverse (rest (range (+ n 1)))))) (def w [])
            (doseq [j  m]
                (def t (Math/round (rand j)))
                  (if (= t j) (upr (dec t)) (upr t))                                                                             
         )
         (println "N =" n " is " "Vector =" w)   
      )
   )
)
Добавлено через 1 час 8 минут

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(ns vector_1)
;------------------------------------------------------------------------------
(defn del [v n] (into (subvec v 0 n) (subvec v (inc n))))
(defn upr [t m w] (def w (conj  w (m t))) (def m (del m t)))
(defn vector_1 []
   (while (= 1 1)
       (println " Введите N = ")
        (let [n (read-string (read-line))]
          (def m (vec (reverse (rest (range (+ n 1)))))) (def w [])
            (doseq [j  m]
                (def t (Math/round (rand j)))
                  (if (= t j) (upr (dec t) m w) (upr t m w))                                                                             
         )
         (println "N =" n " is Vector =" w)   
      )
   )
)
Добавлено через 21 минуту
КТО НИБУДЬ ОБЯСНИТЕ МНЕ, КАК ЗАСТАВИТЬ NetBeans ПОНИМАТЬ Clojure!!!
0
1 / 1 / 0
Регистрация: 07.07.2019
Сообщений: 20
21.08.2019, 02:09 20
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
(ns vector_1)
;------------------------------------------------------------------------------
(defn delete [v n] (into (subvec v 0 n) (subvec v (inc n))))
(defn vector_1 []
   (while (= 1 1)
       (println " Введите N = ")
        (let [n (read-string (read-line))]
          (def m (vec (reverse (range 1 (+ n 1))))) (def w [])
            (doseq [j  m] (def t (rand-int j)) (def w (conj  w (m t))) (def m (delete m t)))
                (println "N =" n " is  Vector =" w)   
      )
   )
)
0
21.08.2019, 02:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2019, 02:09
Помогаю со студенческими работами здесь

Присвоение значения одной переменной значению другой переменной
Здравствуйте! При загрузке приложение считывает значения узлов в xml файле (например,...

Присвоение переменной среды значения переменной цикла
здравствуйте, у меня простой вопрос: for /l %%i in (10,10,100) do ( set /a w=%%i echo %%i=%w%...

Присвоение php переменной значения js переменной
Доброго времени суток, я только начинаю изучать JavaScript и у меня возник следующий вопрос:...

Присвоение переменной
Ребят, подскажите, пожалуйста, как задать строковую переменную, а мотом присвоить ей значение,...


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

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