Δionysus βenstein2018-02-11 18:56:39
Qt
Δionysus βenstein, 2018-02-11 18:56:39

Caesar cipher in C++/Qt?

Who is not too lazy to describe, please, how it would be possible to implement the method of encryption and decryption by the Caesar algorithm. I wrote this on pure pluses, I had problems with Qt

Answer the question

In order to leave comments, you need to log in

1 answer(s)
P
Profi_GMan, 2018-02-11
@Benstein

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;
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question