Задача Задача №3188603
А
А
Конечно! Вот пример кода VBA для функции Цезарь, которая шифрует или дешифрует слово по заданному ключу. В этом коде используются параметры: слово и ключ. Если ключ положительный — выполняется шифрование (сдвиг вперед), если отрицательный — дешифрование (сдвиг назад).
Function ЦЕЗАРЬ(Слово As String, Ключ As Integer) As String
Dim Результат As String
Dim i As Integer
Dim Символ As String
Dim Код As Integer
Результат = ""
For i = 1 To Len(Слово)
Символ = Mid(Слово, i, 1)
Код = Asc(Символ)
' Обработка заглавных букв
If Код >= 65 And Код <= 90 Then
' Шаг шифрования/дешифрования
Код = ((Код - 65 + Ключ) Mod 26)
If Код < 0 Then Код = Код + 26
Код = Код + 65
' Обработка строчных букв
ElseIf Код >= 97 And Код <= 122 Then
Код = ((Код - 97 + Ключ) Mod 26)
If Код < 0 Then Код = Код + 26
Код = Код + 97
End If
Результат = Результат & Chr(Код)
Next i
ЦЕЗАРЬ = Результат
End Function
Объяснение:
- Функция
ЦЕЗАРЬпринимает два аргумента: слово и ключ. - Для каждого символа строки определяется его ASCII-код.
- Если символ — заглавная буква (от A до Z), сдвиг происходит в диапазоне 65–90.
- Если — строчная буква (от a до z), сдвиг происходит в диапазоне 97–122.
- Для правильной работы используется оператор
Mod 26, чтобы цикл был по алфавиту. - В случае отрицательного Ключа функция корректно обрабатывает сдвиг назад.
- Остальные символы (пробелы, знаки препинания и т.д.) остаются без изменений, так как условие работает только для букв.
Если нужен пример использования или дополнения — скажите!