Я пытаюсь сделать шифр Vigenere. Моя проблема в том, что я не получаю ожидаемый результат. При запуске программы он дает этот результат: HFNLP WPTLE. Правильный вывод должен быть: HFNLP YOSND.Как отладить шифр Vigenere в C?
Я думаю, что проблема заключается в плохом использовании modulo (mod). Когда я пытаюсь обернуть вокруг ключа (ABC) переменной i
, пространство ("") в plainText также обертывается, непосредственно влияя на результат обертывания. Я не делаю, чтобы получить правильный результат.
string plainText = "HELLO WORLD";
string keyword = "ABC";
for(int i = 0; i < strlen(plainText);i++)
{
int wrap = (int) strlen(keyword) % (int) strlen(plainText);
if(isalpha(plainText[i]))
{
int upper = 'A' + (plainText[i] + (toupper(keyword[i % wrap]))) % 26;
printf("%c", upper);
}
Подсказка: вам нужна дополнительная часть данных, чтобы сделать это. Итерация должна каким-то образом узнать, сколько мест было обнаружено до этой точки. Есть несколько способов отслеживать это. – spectras
Спасибо, что помогли мне. :) –