powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сложить символы слов если а=1 б=2 в=3 г=4
15 сообщений из 40, страница 2 из 2
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655173
Ghjuf [jlzxfz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad

Так Вам подсказать надо?
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655187
ДисАбеба
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConn Deggasad VladConnИ потом, у вас там ActiveDocument... Подразумевается Word? Почему именно он?

Потому что автор топика в соседнем топике просил в ворде!

ОК, но где вы видите соседний топик от Forrtran?

Там где тема "Чтение документа Word в котором хранятся 20 слов " и автор Хуршед. И вопрос, ну, очень странно, походит на этот, в топике, только макросом сделать просили.
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655193
ДисАбеба
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConnЧто вы имеете ввиду?

Что вы хвалите макрос, созданный из моего, только пару новых функций добавили, но и идея с массивом тоже моя
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655272
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДисАбеба VladConnЧто вы имеете ввиду?

Что вы хвалите макрос, созданный из моего, только пару новых функций добавили, но и идея с массивом тоже моя
А я по твоему должен сам имена всем переменным придумать и ещё как нибуть в другом порядке их определить??? Делать мне больше нечего...
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655463
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я тут попробовал оптимизировать.
Итак, три варианта функций подсчета сумм символов русского алфавита (где а=1, б=2 и т.д).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Function СчитаемСумму_1(MyText As String) As Long
    Const ss As String = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
    Dim j As Long, i As Long
    
    For j =  1  To Len(MyText)
        i = i + InStr( 1 , ss, Mid$(MyText, j,  1 ))
    Next
    СчитаемСумму_1 = i
End Function

Function СчитаемСумму_2(MyText As String) As Long
    Dim j As Long, i As Long, k As Integer
    
    For j =  1  To Len(MyText)
        k = Asc(Mid$(MyText, j,  1 ))
        If k <  224  Then
            If k =  184  Then i = i +  7 
        ElseIf k <  230  Then
            i = i + k -  223 
        Else
            i = i + k -  222 
        End If
    Next
    СчитаемСумму_2 = i
End Function

Function СчитаемСумму_3(MyText As String) As Long
    Dim j As Long, i As Long, k As Integer, m() As Byte
    
    m = MyText
    For j =  0  To UBound(m) -  1  Step  2 
        k = m(j)
        If k >  47  Then
            If k <  54  Then
                i = i + k -  47 
            ElseIf k <  80  Then
                i = i + k -  46 
            ElseIf k =  81  Then
                i = i +  7 
            End If
        End If
    Next
    СчитаемСумму_3 = i
End Function

Выполняем следующий тестик:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    Dim t As Double, ss As String, s As String, i As Long, sss As String

    ss = ... ' Заполняем переменную 3300033 символами

    ss = LCase$(ss)

    t = Timer
    i = СчитаемСумму_1(ss)
    t = Timer - t
    sss = "1: Символов = " & Len(ss) & ",  Сумма = " & i & ",  Время, с = " & Format$(t, "#,##0.000000") & vbCrLf

    t = Timer
    i = СчитаемСумму_2(ss)
    t = Timer - t
    sss = sss & "2: Символов = " & Len(ss) & ",  Сумма = " & i & ",  Время, с = " & Format$(t, "#,##0.000000") & vbCrLf

    t = Timer
    i = СчитаемСумму_3(ss)
    t = Timer - t
    sss = sss & "3: Символов = " & Len(ss) & ",  Сумма = " & i & ",  Время, с = " & Format$(t, "#,##0.000000")
    
    Debug.Print sss
    MsgBox sss

В результате в IDE или P-Code имеем:

1: Символов = 3300033, Сумма = 48000480, Время, с = 1,297000
2: Символов = 3300033, Сумма = 48000480, Время, с = 1,266000
3: Символов = 3300033, Сумма = 48000480, Время, с = 1,234000

А скомпилировав проект в Native Code уже получим:

1: Символов = 3300033, Сумма = 48000480, Время, с = 0,797000
2: Символов = 3300033, Сумма = 48000480, Время, с = 0,641000
3: Символов = 3300033, Сумма = 48000480, Время, с = 0,062000

То бишь с явным отрывом побеждает третий вариант.
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655474
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, окончательный и более правильный вариант 3-ей функции (цифры в тесте приведенном выше получены с ним):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Function СчитаемСумму_3(MyText As String) As Long
    Dim j As Long, i As Long, k As Integer, m() As Byte
    
    m = MyText
    For j =  0  To UBound(m) -  1  Step  2 
        If m(j +  1 ) =  4  Then
            k = m(j)
            If k >  47  Then
                If k <  54  Then
                    i = i + k -  47 
                ElseIf k <  80  Then
                    i = i + k -  46 
                ElseIf k =  81  Then
                    i = i +  7 
                End If
            End If
        End If
    Next
    СчитаемСумму_3 = i
End Function
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655705
ДисАбеба
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndrFДа, окончательный и более правильный вариант 3-ей функции (цифры в тесте приведенном выше получены с ним):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Function СчитаемСумму_3(MyText As String) As Long
    Dim j As Long, i As Long, k As Integer, m() As Byte
    
    m = MyText
    For j =  0  To UBound(m) -  1  Step  2 
        If m(j +  1 ) =  4  Then
            k = m(j)
            If k >  47  Then
                If k <  54  Then
                    i = i + k -  47 
                ElseIf k <  80  Then
                    i = i + k -  46 
                ElseIf k =  81  Then
                    i = i +  7 
                End If
            End If
        End If
    Next
    СчитаемСумму_3 = i
End Function


Молодец!!!!!Богатым будешь!!!!!
Модератор: А ты забаненым будешь в скором времени. Хватит провоцировать срачи.
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655802
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFТо бишь с явным отрывом побеждает третий вариант.

Может оно и так только 1-й варинат уж куда более гибкий и это лишь один из многочисленных способов его использования. Как и любое универсальное средство возможно не самый быстрый в данной конкретной задаче.
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655811
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И при всей своей гибкости болеее чем одназначен для понимания даже начинающего любителя - програмиста.
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34655918
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadИ при всей своей гибкости болеее чем одназначен для понимания даже начинающего любителя - програмиста.

Ну а не любителям надо все же понимать, как можно выжимать максимальную производительность, когда это требуется в работе. А не вечно применять одну и ту же пузырьковую сортировку лишь из-за ее наглядности.
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34656146
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrF DeggasadИ при всей своей гибкости болеее чем одназначен для понимания даже начинающего любителя - програмиста.

Ну а не любителям надо все же понимать, как можно выжимать максимальную производительность, когда это требуется в работе. А не вечно применять одну и ту же пузырьковую сортировку лишь из-за ее наглядности.

Согласен!
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34656601
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДисАбеба VladConnЧто вы имеете ввиду?

Что вы хвалите макрос, созданный из моего, только пару новых функций добавили, но и идея с массивом тоже моя

ЛОЖЬ
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34657393
LbcF,t,f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladConn ДисАбеба VladConnЧто вы имеете ввиду?

Что вы хвалите макрос, созданный из моего, только пару новых функций добавили, но и идея с массивом тоже моя

ЛОЖЬ

А жизнь так вообще попа!!! И что из этого, помечтать нельзя? вот только почему у человека процедура тоже Макрос3 называется, да и буковки кое-где совпадают? вы, уважаемый владконь, смотрели мой макрос в теме, что я указал с автором Хуршедом? сравнивали? или сразу наобум и обвинять, и идею с массивом символов (в ВБ просто строка, в ВС2005 такое щас возможно) тоже первым я предложил в топике, где про транслит говорили? может вы как хороший человек сначала сравните всё, а уж потом будете обвинять, вы же не чета такому грубияну и невежде как я, или вы так хотите донести, что тоже на мой уровень опустились?
Кстати, уже человек доказал, что и мой вариант покеазателен, но не эффективен, и его цепочка множественного выбора работает быстрее. Хотя моя идея с массивом была бы эффективнее кода, чем у товарища, если бы в ВБ был подход к строке как к массиву, тогда при прямом доступе к символу, а не через эти долбанные функции мида лефта и райта, я думаю, моя идейка работала куда быстрее. Вот и буду её реализовывать в ВС2005
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34657555
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LbcF,t,f
Хотя моя идея с массивом была бы эффективнее кода, чем у товарища, если бы в ВБ был подход к строке как к массиву, тогда при прямом доступе к символу, а не через эти долбанные функции мида лефта и райта, я думаю, моя идейка работала куда быстрее. Вот и буду её реализовывать в ВС2005
Так если вспомнить изначально было пожелание в Ворде. и я предлагал именно в ворде перебирать символы (семейство или коллекция как там это называется), а не засовывать их в строковую переменную. Строковая переменная это только для примера.
В ячейке Exel тоже можно символы перебрать
Код: plaintext
1.
2.
3.
4.
With Range("B4")
  For n =  1  To .Characters.Count
    Debug.Print .Characters(n,  1 ).Text
  Next n
End With
...
Рейтинг: 0 / 0
Как сложить символы слов если а=1 б=2 в=3 г=4
    #34657685
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LbcF,t,f,

1.Пример, который я отметил, не использует массивы и не зависит от Оффиса, поэтому он лучше.
2. Ваш ответ звучал так, что и я тоже что-то там у вас украл. Вот этот нюанс я и охарактеризовал по вашим заслугам.

Других заслуг ваших никто не умаляет. Молодца, массивы и Instr знаете. Учите теперь коллекции хотя бы на примере моего кода.

Просьба модератору закрыть тему как исчерпавшую себя и ставшую омерзительной.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сложить символы слов если а=1 б=2 в=3 г=4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]