|
задача подсчета количества слов в строке | ☑ | ||
---|---|---|---|---|
0
TimonXPumbA
24.04.12
✎
17:31
|
Покажите пожалуйста кто-нибудь правильный код к задаче:
Нужно разработать функцию, на вход подается произвольная строка. Функция должна вернуть количество слов в ней. Слово - последовательность символов, не содержащая пробела. Считать, что слова могут разделяться любым количеством пробелов. я начинающий, примерно что нужно сделать знаю, но не знаю как реализовать в код :( |
|||
1
Дикообразко
24.04.12
✎
17:33
|
xxxxx:
В контрольной работе по информатике для студентов экономического факультета требовалось написать на Паскале программку - подсчитать сколько раз в введенной с клавиатуры строке встречается подстрока "мн". Выдержка из одной контрольной: ... writeln('Введите строку'); readln(str); writeln('Сколько раз в этой строке встречается подстрока "мн"?'); readln(n); writeln('Такая подстрока встречается:',n,'раз'); ... http://bash.im/quote/278092 и причем тут 1С ? |
|||
2
zak555
24.04.12
✎
17:34
|
не только пробел нужно учитывать, но и неразрывной
|
|||
3
Euguln
24.04.12
✎
17:34
|
СтрЧислоВхождений :)
|
|||
4
ptiz
24.04.12
✎
17:35
|
(3)+ Ну и сначала удалить соседние пробелы
|
|||
5
Дикообразко
24.04.12
✎
17:37
|
в принципе можно решить в одну строку ;)
|
|||
6
Господин ПЖ
24.04.12
✎
17:38
|
СтрЗаменить(" ", Символы.ПС) и посчитать кол-во не пустых ?
|
|||
7
Argon
24.04.12
✎
17:38
|
Черт я в 2 смог только :(
|
|||
8
Дикообразко
24.04.12
✎
17:39
|
(7) кмх.. наверно прав...
в одну не получиться :( хотя может стоит подумать подольше :) |
|||
9
Argon
24.04.12
✎
17:44
|
ЧислоСлов = СтрЧислоВхождений(СокрЛП(СтрЗаменить(СтрЗаменить(стр," "," ")," "," "))," ")+1;
|
|||
10
Широкий
24.04.12
✎
17:44
|
Если с "Выполнить" - то можно и в одну :))
|
|||
11
Argon
24.04.12
✎
17:44
|
Что то типа этого :)
|
|||
12
echo77
24.04.12
✎
17:46
|
// Функция "расщепляет" строку на подстроки, используя заданный
// разделитель. Разделитель может иметь любую длину. // Если в качестве разделителя задан пробел, рядом стоящие пробелы // считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр // игнорируются. // Например, // ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов, // три из которых - пустые строки, а // ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(" ку му", " ") возвратит массив значений из двух элементов // // Параметры: // Стр - строка, которую необходимо разложить на подстроки. // Параметр передается по значению. // Разделитель - строка-разделитель, по умолчанию - запятая. // // // Возвращаемое значение: // массив значений, элементы которого - подстроки // Функция мРазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить |
|||
13
Argon
24.04.12
✎
17:47
|
Блин просили не раскладывать, а посчитать слова :)
|
|||
14
Широкий
24.04.12
✎
17:47
|
Буду банальным :)
Функция КоличествоСлов(ИсходнаяСтрока) КоличествоСлов=0; ИсходнаяСтрокаМ=СтрЗаменить(ИсходнаяСтрока," ",Символы.ПС); Для сч=1 По СтрЧислоСтрок(ИсходнаяСтрокаМ) Цикл Если ПустаяСтрока(СтрПолучитьСтроку(ИсходнаяСтрокаМ,сч)) Тогда Продолжить; КонецЕсли; КоличествоСлов=КоличествоСлов+1; КонецЦикла; Возврат КоличествоСлов; КонецФункции |
|||
15
Deon
24.04.12
✎
17:49
|
А чё без запросов-то?
|
|||
16
Deon
24.04.12
✎
17:49
|
(9) Не делай так. Покусают же
|
|||
17
Дикообразко
24.04.12
✎
17:50
|
(9)
не выполняется "Считать, что слова могут разделяться любым количеством пробелов. " |
|||
18
Argon
24.04.12
✎
17:50
|
Извращенцы
|
|||
19
Argon
24.04.12
✎
17:50
|
(17) А если подумать?
|
|||
20
Широкий
24.04.12
✎
17:51
|
(19) "Это тебе надо подумать"
|
|||
21
Deon
24.04.12
✎
17:52
|
(19) На дырке из 3х пробелов уже сдохнет
|
|||
22
Дикообразко
24.04.12
✎
17:52
|
(20) все у него правильно :))
(19) понял.. зачет.. в две строки я думал через структуру сделать |
|||
23
Дикообразко
24.04.12
✎
17:52
|
(21) для этого у него контрольный стрзаменить ;)
|
|||
24
Argon
24.04.12
✎
17:53
|
(20) :( мну дурак
|
|||
25
Argon
24.04.12
✎
17:54
|
(22) при большем количестве пробелов не сработает реально я тупанул )
|
|||
26
Deon
24.04.12
✎
17:54
|
(23) А, не из 3х, из 5
|
|||
27
Дикообразко
24.04.12
✎
17:56
|
(26) кхм..
останется 2 пробела... |
|||
28
х86
24.04.12
✎
17:56
|
(0)меняешь 2,3,4,5 ... т.д пробелов на один пробел
считаешь количество пробелов |
|||
29
Argon
24.04.12
✎
17:58
|
Версия 1.1 (с костылями)
ЧислоСлов = СтрЧислоВхождений(СокрЛП(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(стр," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," ")," "," "))," ")+1; |
|||
30
zak555
24.04.12
✎
17:58
|
(29) что такое рекурсия не знаешь ?
|
|||
31
Дикообразко
24.04.12
✎
17:59
|
(29) не универсально :(
|
|||
32
Deon
24.04.12
✎
17:59
|
(30) В одну строку не взлетит )
|
|||
33
Дикообразко
24.04.12
✎
17:59
|
(30) для тупых или не читающих
мы тут обсуждаем как в одну строку сделать |
|||
34
Argon
24.04.12
✎
17:59
|
(31) главное не говорить об этом заказчику :)))
|
|||
35
gavrikprog
24.04.12
✎
18:03
|
(12)
самое оно... завернуть можно хоть в какую-нибудь сторону. И различные получить, и количество по факту |
|||
36
zak555
24.04.12
✎
18:07
|
Функция ПоОдномуПробелуВСтроке(Слово)
Возврат ? ( СтрЧислоВхождений (Слово , " ") > 0, ПоОдномуПробелуВСтроке ( СтрЗаменить(Слово, " ", " ") ), Слово ); КонецФункции |
|||
37
Argon
24.04.12
✎
18:17
|
Проверял?
|
|||
38
Argon
24.04.12
✎
18:25
|
1. Как бы где результат (количество слов)
2. СокрЛП забыл 3. Все таки 3 строки |
|||
39
Deon
24.04.12
✎
18:30
|
Нате вам боле менее универсальную фигулю в одну строку:
Слов = СтрЧислоВхождений ( СтрЗаменить( СтрЗаменить(СокрЛП(Стр), " ", "ЭтаПрабэл"), "таПрабэлЭ", ""), "ЭтаПрабэл") + 1; |
|||
40
zak555
24.04.12
✎
18:32
|
(39) что это ?
|
|||
41
Deon
24.04.12
✎
18:33
|
(40) Это хрень которая посчитает тебе количество слов в строке, разделенных любым количеством пробелов.
|
|||
42
Argon
24.04.12
✎
18:42
|
(41) четко :) но лучше комбинацию сцец символов )))
|
|||
43
Deon
24.04.12
✎
20:20
|
(42) Да, разумеется.
|
|||
44
Широкий
25.04.12
✎
09:54
|
(39) Зачет.. Сам придумал?
|
|||
45
Широкий
25.04.12
✎
10:09
|
И на выставку :)
КоличествоСлов=СтрЧислоВхождений(СтрЗаменить( СтрЗаменить(СокрЛП(ИсходнаяСтрока), " ", "$##$"), "##$$", ""),"$##$")+ЗначениеЗаполнено(ИсходнаяСтрока); |
|||
46
Дикообразко
25.04.12
✎
10:29
|
ну все,
ветку можно закрывать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |