Имя: Пароль:
1C
 
Посчитать количество букв "а"
0 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)
2 mistеr
 
17.01.19
18:31
Преподам уже пора делать оговорку, что решение в помощью Мисты в зачет не идет.
3 Вафель
 
17.01.19
18:33
(2) смотря как принимать.
Если чел может обосновать код, то вполне.
Stack Overflow Driven Development
4 PR
 
17.01.19
18:36
(0) КоличествоСтрок(СтрЗаменить(Строка, "а", Символы.ПС)) - 1
5 PR
 
17.01.19
18:38
А (0) я бы на работу не взял, если он даже не может в тупую в цикле по одному символу проверить на равенство "а" и увеличению счетчика, если равен
6 trdm
 
17.01.19
18:40
(4) Херня. Но направление правильное.
// тест4() © trdm 2019-01-17 18:45
Процедура тест4()
    вТекст = "Ваша текста";
    вДлинаСтарт = СтрДлина(вТекст);
    вТекст = СтрЗаменить(вТекст,"а","");
    вКолво = вДлинаСтарт - СтрДлина(вТекст);
    Сообщить(вКолво);
КонецПроцедуры // тест4()
7 Вафель
 
17.01.19
18:41
(4) а если в строке уже есть перенос строк?
8 trdm
 
17.01.19
18:41
(7) Вот и я о том подумал.
9 PR
 
17.01.19
18:42
(6) Иди паси гусей
10 PR
 
17.01.19
18:44
(7) Тогда надо посчитать количество строк сначала, запомнить, после замены скорректировать на запомненное количество
Ну или перед всем этим заменить переносы строк на ""
Но тут вроде не я тестовое задание решаю, а ТС
11 trdm
 
17.01.19
18:50
(9) Завтра пойду чаек на речке терроризировать.
12 Сергиус
 
17.01.19
18:56
(0)В функции КолБукв общий смысл верный, только вместо Найти внутри, получай текущий символ Сред(Строка,I,1) и сравнивай его с "а".
13 trdm
 
17.01.19
19:05
(0) > Процедура ПриНачалеРаботыСистемы()

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

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


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


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

Колво = СтрЧислоСтрок(СтрЗаменить(СтрЗаменить("_"+Стр+"_", Символы.ПС, ""), "а", Символы.ПС))-1;
32 Fram
 
18.01.19
00:32
(31) смотри (4), и (17) все таки проще
33 Fram
 
18.01.19
00:38
(32) пардон.. ты как раз (4) исправил в (31), но (17) все равно проще