Вход | Регистрация
 

Посчитать количество букв "а"

Посчитать количество букв "а"
Я
   mom64
 
17.01.19 - 18:28
Люди помогите пожалуйста.
Нужно:
1)Посчитать количество букв "а" во введенном слове без использования функции СтрЧислоВхождений( )

Синтаксис:
Процедура ПриНачалеРаботыСистемы()
    Перем R;
    
    ВвестиСтроку(R, "Строка: ", 40, Истина);
    Сообщить(КолБукв(R));
    
КонецПроцедуры
    
Функция КолБукв(Строка)
    КлБ = 0;
    I = СтрДлина(Строка);
    Сообщить("I = " + I);
    Для Счетчик = 1 По I Цикл
        Если Строка(Найти(Строка, "а" ) Тогда
            КлБ =  + 1;    
        КонецЕсли;
        Сред(
    КонецЦикла;  
    Возврат КлБ;
КонецФункции

PS. Я понимаю что функция "найти" мне здесь не поможет ни как.(это просто то на чем я остановился и попал в ступор не знаю как написать). Хотя бы посмотреть как выглядит функция СтрЧислоВхождений( ) изнутри что бы понять как написать.
 
 
   Вафель
 
1 - 17.01.19 - 18:29
юзай
Сред(Строка, Индекс. 1)

   mistеr
 
2 - 17.01.19 - 18:31
Преподам уже пора делать оговорку, что решение в помощью Мисты в зачет не идет.
   Вафель
 
3 - 17.01.19 - 18:33
(2) смотря как принимать.
Если чел может обосновать код, то вполне.
Stack Overflow Driven Development
   PR
 
4 - 17.01.19 - 18:36
(0) КоличествоСтрок(СтрЗаменить(Строка, "а", Символы.ПС)) - 1
   PR
 
5 - 17.01.19 - 18:38
А (0) я бы на работу не взял, если он даже не может в тупую в цикле по одному символу проверить на равенство "а" и увеличению счетчика, если равен
   trdm
 
6 - 17.01.19 - 18:40
(4) Херня. Но направление правильное.
// тест4() © trdm 2019-01-17 18:45

Процедура тест4()
    вТекст = "Ваша текста";
    вДлинаСтарт = СтрДлина(вТекст);
    вТекст = СтрЗаменить(вТекст,"а","");
    вКолво = вДлинаСтарт - СтрДлина(вТекст);
    Сообщить(вКолво);
КонецПроцедуры// тест4()
   Вафель
 
7 - 17.01.19 - 18:41
(4) а если в строке уже есть перенос строк?
   trdm
 
8 - 17.01.19 - 18:41
(7) Вот и я о том подумал.
   PR
 
9 - 17.01.19 - 18:42
(6) Иди паси гусей
   PR
 
10 - 17.01.19 - 18:44
(7) Тогда надо посчитать количество строк сначала, запомнить, после замены скорректировать на запомненное количество
Ну или перед всем этим заменить переносы строк на ""
Но тут вроде не я тестовое задание решаю, а ТС
 
 Рекламное место пустует
   trdm
 
11 - 17.01.19 - 18:50
(9) Завтра пойду чаек на речке терроризировать.
   Сергиус
 
12 - 17.01.19 - 18:56
(0)В функции КолБукв общий смысл верный, только вместо Найти внутри, получай текущий символ Сред(Строка,I,1) и сравнивай его с "а".
   trdm
 
13 - 17.01.19 - 19:05
(0) > Процедура ПриНачалеРаботыСистемы()

Просто создай обработку и редактируй её и переоткрывай в 1С-е.
   Sapiens_bru
 
14 - 17.01.19 - 19:10
(0)
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.global = Истина;
RegExp.pattern = "а";
Сообщить(RegExp.execute(СтрокаПроверки).count);
   mom64
 
15 - 17.01.19 - 19:14
Спасибо всем!) Аж 3 варианта как можно сделать задачку узнал! Только 2 день изучаю 1С. Если бы не вы долго бы думал как сделать всем спасибо!)
   Sapiens_bru
 
16 - 17.01.19 - 19:17
(0)
Сообщить(СтрДлина(СтрСоединить(СтрРазделить(СтрокаПроверки,СтрСоединить(СтрРазделить(СтрокаПроверки,"а"))))))
   OldCondom
 
17 - 17.01.19 - 19:21
Сообщить(СтрДлина(строка) - СтрДлина(СтрЗаменить(строка, "а", "")));
   MaxS
 
18 - 17.01.19 - 19:25
СтрРазделить(СтрокаПроверки,"а").Количество()
может быть -+1 потребуется. Тестировать нужно.
   xReason
 
19 - 17.01.19 - 19:25
СтрРазделить("Посчитать и узнать количество букв ""а""", "а").Количество() - 1
   trdm
 
20 - 17.01.19 - 19:32
Нормальный такой скрытый тролинг, давать новичку для семерки восьмерошный код.
   trdm
 
21 - 17.01.19 - 19:32
Типа пусть потрахается.
   OldCondom
 
22 - 17.01.19 - 19:36
Новичок на 7? Остановите планету
   trdm
 
23 - 17.01.19 - 19:41
момент, напутал. это восьмерка.
   AlvlSpb
 
24 - 17.01.19 - 23:24
Самое правильное и простое в (14)
   palsergeich
 
25 - 17.01.19 - 23:30
Функция КолБукв(Строка)
   
Строка = "." + Строка + ".";// если первый или последний символ = а - будет неверный результат

Строка = СтрЗаменить(Строка,"а","<HERE>");
Возврат СтрРазделить(Строка,"<HERE>").Количество();
КонецФункции
Без Com и Циклов!!!!
   palsergeich
 
26 - 17.01.19 - 23:33
Правда не тестировал, возможно при 0 вхождений будет неверный результат, но это легко лечится:
Функция КолБукв(Строка)
   
Строка = "." + Строка + "."// если первый или последний символ = а - будет неверный результат


Строка = СтрЗаменить(Строка,"а","<HERE>");
Возврат ?(СтрНайти(Строка,"<HERE>") = 0, 0, СтрРазделить(Строка,"<HERE>").Количество());
КонецФункции
Без Com и Циклов!!!!
   Доминошник
 
27 - 17.01.19 - 23:41
(24) А почему не в (6)?
   Garykom
 
28 - 17.01.19 - 23:51
А чем не нравится

Колво = СтрЧислоСтрок(СтрЗаменить(Стр,"а",Символы.ПС));


?
   Garykom
 
29 - 17.01.19 - 23:54
(28)+ Хотя да -1 надо и случаи когда "а" в начале или конце строки
   Garykom
 
30 - 17.01.19 - 23:55
Колво = СтрЧислоСтрок(СтрЗаменить("_"+Стр+"_","а",Символы.ПС))-1;
   Garykom
 
31 - 18.01.19 - 00:02
(30)+ Перенос строк внутри исходной строки еще убрать
Колво = СтрЧислоСтрок(СтрЗаменить(СтрЗаменить("_"+Стр+"_", Символы.ПС, ""), "а", Символы.ПС))-1;
   Fram
 
32 - 18.01.19 - 00:32
(31) смотри (4), и (17) все таки проще
   Fram
 
33 - 18.01.19 - 00:38
(32) пардон.. ты как раз (4) исправил в (31), но (17) все равно проще
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует