Answer the question
In order to leave comments, you need to log in
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
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 questionAsk a Question
731 491 924 answers to any question