Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3188603
А
Аноним
10 мая 2025 17:49 · публичный вопрос
А
Аноним

Создайте функцию пользователя ЦЕЗАРЬ (Слово, Ключ), выполняющую по заданному значению ключа шифрование (дешифрование) заданного слова шифром Цезаря. Напиши код VBA

Ответ нейросети
10 мая 2025 17:49

Конечно! Вот пример кода 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, чтобы цикл был по алфавиту.
  • В случае отрицательного Ключа функция корректно обрабатывает сдвиг назад.
  • Остальные символы (пробелы, знаки препинания и т.д.) остаются без изменений, так как условие работает только для букв.

Если нужен пример использования или дополнения — скажите!