Процедура обработки строки состоит из двух последовательных операций: заменить в строке все символы 'a' на подстроку 'ab' заменить в строке все подстроки 'bb' на символ 'с' процедура может выполняться многократно. в этом случае, при очередном вызове, на вход процедуре подается строка, получившаяся в результате предыдущего выполнения процедуры. например, если исходно была строка 'aab' и процедура выполнилась 3 раза, то в результате получится строка 'abcacc'. пусть исходно была строка 'abab', и процедуру выполнили 333 раза. определите количество каждого символа в получившейся строке. в ответе укажите через запятую три числа: сначала количество символов 'a', затем количество символов 'b' и затем количество символов 'c'.

Вопрос:

Процедура обработки строки состоит из двух последовательных операций: заменить в строке все символы 'a' на подстроку 'ab' заменить в строке все подстроки 'bb' на символ 'с' процедура может выполняться многократно. в этом случае, при очередном вызове, на вход процедуре подается строка, получившаяся в результате предыдущего выполнения процедуры. например, если исходно была строка 'aab' и процедура выполнилась 3 раза, то в результате получится строка 'abcacc'. пусть исходно была строка 'abab', и процедуру выполнили 333 раза. определите количество каждого символа в получившейся строке. в ответе укажите через запятую три числа: сначала количество символов 'a', затем количество символов 'b' и затем количество символов 'c'.
Информатика
admin 13.12.2022 68

Ответ учителя:

Создаем в Excel VBA две пользовательские функции:

Function newstr(str As String, n As Integer) As String

Dim i As Integer

For i = 1 To n

str = Replace(str, "a", "ab")

str = Replace(str, "bb", "c")

Next

newstr = str

End Function

Function chrcount(str1 As String, str2 As String) As Integer

Dim str() As String

str = Split(str1, str2)

chrcount = UBound(str, 1)

End Function

В ячейку рабочего листа вставляем формулу:

= chrcount(newstr("abab"; 333); "a")&","&chrcount(newstr("abab"; 333); "b")&","&chrcount(newstr("abab"; 333); "c")

Получаем результат:

2,0,334


Другие вопросы
Создать вопрос

Похожие вопросы: