|   |   | 
| 
 | задача подсчета количества слов в строке | ☑ | ||
|---|---|---|---|---|
| 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 | 
        ну все,
  ветку можно закрывать | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |