Benstein
@Benstein
Software and Game Development Engineer.

Шифр Цезаря на C++/Qt?

Кому не лень опишите пожалуйста, как можно было бы реализовать метод шифрования и дешифрования алгоритмом Цезаря. Писал такой на чистых плюсах, с Qt возникли проблемы
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
  • Profi_GMan
    @Profi_GMan
    QString encode(QString input, int offset) {
        for(int i = 0; i < input.length(); i++) {
            int sym = 0;
            if(input[i].toLatin1() > 64 && input[i].toLatin1() < 91 && (sym = input[i].toLatin1() + offset) > 90)
                //Если буква большая и если буква + смещение превышает код буквы Z
                input[i] = QChar(sym - 90 + 64);
            //sym - 90 получаем, насколько превышает код буквы Z, + 65 прибавляем к коду символа до A полученный результат
            //Теперь тоже самое но с проверкой на маленькую букву
            else if(input[i].toLatin1() > 96 && input[i].toLatin1() < 123 && (sym = input[i].toLatin1() + offset) > 122)
                //Если буква маленькая и если буква + смещение превышает код буквы z
                input[i] = QChar(sym - 122 + 96);
            //sym - 90 получаем, насколько превышает код буквы z, + 65 прибавляем к коду символа до a полученный результат
            else input[i] = QChar(input[i].toLatin1() + offset);
        }
        return input;
    }
    
    QString decode(QString input, int offset) {
        for(int i = 0; i < input.length(); i++) {
            int sym = 0;
            if(input[i].toLatin1() > 64 && input[i].toLatin1() < 91 && (sym = input[i].toLatin1() - offset) < 65)
                //Если буква большая и если буква - смещение меньше кода буквы A
                input[i] = QChar(sym - 64 + 90);
            //Получаем исходный символ (обратно sym - 90 + 64)
            //Теперь тоже самое но с проверкой на маленькую букву
            else if(input[i].toLatin1() > 96 && input[i].toLatin1() < 123 && (sym = input[i].toLatin1() - offset) < 97)
                //Если буква маленькая и если буква - смещение меньше кода буквы a
                input[i] = QChar(sym - 96 + 122);
            //Получаем исходный символ (обратно sym - 122 + 96)
            else input[i] = QChar(input[i].toLatin1() - offset);
        }
        return input;
    }
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы