Форум программистов, компьютерный форум, киберфорум
Наши страницы
Clojure
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
murlok
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 8
1

Подсчет числа заданных букв в строке (HomeLisp)

13.03.2017, 16:21. Просмотров 1045. Ответов 10

здравствуйте можете помочь в написание программы? к примеру сколько букв "а" или букв "б" в тексте
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2017, 16:21
Ответы с готовыми решениями:

В заданой строке определить количество слов (HomeLISP)
В заданной строке определить количество слов (слова могут разделяться одним или несколькими...

В заданной строке для каждого слова указать его длину (HomeLISP)
В заданной строке для каждого слова указать его длину. P.S. помогите пожалуйста, решить задачу -...

Подсчет букв в строке
Написать фрагмент кода, который считывает количество букв в введённой строке. И дополнительный код...

Подсчет букв в строке
нужно, чтобы кроме введенных букв ничего не подсчитывал, например,ни от F1 до F12, -> <- ни...

Подсчет букв в словах в строке
Дана строка, в которой слова разделены одним пробелом. Подсчитайте, сколько букв 'a' встречается в...

10
vlisp
564 / 538 / 116
Регистрация: 10.08.2015
Сообщений: 2,048
Завершенные тесты: 1
13.03.2017, 16:53 2
и как название темы согласуется с ее содержанием?
0
Catstail
Модератор
24608 / 12515 / 2285
Регистрация: 12.02.2012
Сообщений: 20,334
13.03.2017, 17:43 3
Например, так:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(defun counter (txt lett) ;; подсчет вхождений без учета регистра
  (- (strLen txt) (strLen (strRep (strUcase txt) (strUcase lett) ""))))
 
==> COUNTER
 
(counter "Проба пера" "р")
 
==> 2
 
(counter "Проба пера" "п")
 
==> 2
 
(counter "Проба пера" "б")
 
==> 1
1
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
13.03.2017, 18:13 4
Lisp
1
2
3
4
5
6
(def text1 "qwwqer qwasdfas")
(defn countL [text char] (reduce 0
                                 #(if (= %2 char) (+ %1 1) (+ %1 0))
                                 text)
  )
(println (countL text1 "q"))
Я попробовал соорудить нечто такое на кложе, но я уже не первый раз встречаю ошибку
java.lang.Long cannot be cast to clojure.lang.IFn
И не могу понять с чем она связана, синтаксически все правильно же вроде.
0
13.03.2017, 18:13
murlok
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 8
13.03.2017, 18:18  [ТС] 5
впервые работаю в lisp, можете обьяснить, получается

Lisp
1
2
 (defun counter (txt lett) ;; подсчет вхождений без учета регистра
  (- (strLen txt) (strLen (strRep (strUcase txt) (strUcase lett) ""))))
{создаем файл с этим кодом}, далее в отладчике прописываем ==> COUNTER

(counter "Проба пера" "р") ???
0
Catstail
Модератор
24608 / 12515 / 2285
Регистрация: 12.02.2012
Сообщений: 20,334
13.03.2017, 19:18 6
Лучший ответ Сообщение было отмечено murlok как решение

Решение

Цитата Сообщение от murlok Посмотреть сообщение
далее в отладчике прописываем ==> COUNTER
- нет, это не надо. Да и файл создавать не обязательно.
3
Миниатюры
Подсчет числа заданных букв в строке (HomeLisp)   Подсчет числа заданных букв в строке (HomeLisp)   Подсчет числа заданных букв в строке (HomeLisp)  

Подсчет числа заданных букв в строке (HomeLisp)  
Catstail
Модератор
24608 / 12515 / 2285
Регистрация: 12.02.2012
Сообщений: 20,334
13.03.2017, 19:24 7
ntlinuxnt, у меня такое ощущение, что плюс вы пытаетесь применить к символам. По ключевым словам "cannot be cast to clojure.lang.IFn" вы в Гугле найдете объяснение (но in English). А я с Clojure не знаком.
0
murlok
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 8
13.03.2017, 19:37  [ТС] 8
Catstail,
Спасибо вам большое
0
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
13.03.2017, 19:52 9
Catstail, я местами аргументы попутал инициализация должна быть перед списком, а не функцией, а я подставлял init значение вместо функции получается, вот оно и ругалось.
Lisp
1
2
3
4
5
6
7
8
(def text1 "qwwqer qwasdfas")
(defn countL [text char] (reduce #(if (= %2 char)
                                    (+ %1 1)
                                    (+ %1 0))
                                 0 text)
  )
(println (countL text1 \q))
;3
Вот это решает поставленную задачу.
Но так же можно решить короче.
Lisp
1
2
3
4
(count (filter #(= % \q) text1)); вариант 1
;3
(count (filter #{\q} text1)); вариант 2
;3
Добавлено через 2 минуты
Цитата Сообщение от Catstail Посмотреть сообщение
(но in English)
Да с этим проблем нет. Просто это ошибка очень интересная, она вылазит по разному и нет универсального решения.
2
_sg
4123 / 3870 / 294
Регистрация: 12.05.2012
Сообщений: 2,724
13.03.2017, 20:34 10
как вариант (Common Lisp):
Lisp
1
2
3
4
5
6
(defun cnt (a s) (count a s))
 
> (cnt #\a "aaaaaabbbbb")
6
> (cnt #\b "aaaaaabbbbb")
5
2
_sg
4123 / 3870 / 294
Регистрация: 12.05.2012
Сообщений: 2,724
01.04.2017, 11:59 11
Lisp
1
2
3
4
5
6
7
(defun cnt (a s) 
  (loop for e across s when (eql e a) count e))
 
> (cnt #\a "aaaaaabbbbb")
6
> (cnt #\b "aaaaaabbbbb")
5
1
01.04.2017, 11:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2017, 11:59

Подсчет согласных букв в строке
программа должна подсчитать сколько согласных в строке uses crt; const n=2; //const R=; type ...

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

Подсчет количества букв а в строке
дана строка символов подсчитать кол-во букв а в строке


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

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

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