Задача состоит в том, чтобы при запуске программы дать ключевой аргумент, который я сохранил как string k
, затем пользователь вводит текст, и программа выводит этот введенный текст в соответствии с ключевым словом. A = 0, B = 1, поэтому, если ключевое слово ABABA, а текст hello, будет выведено hflmo.
Если я запусту программу, указав argv[1]
как "abc", то обычный текст pt
как"привет", я должен получить "hfnlp", но вместо этого я получаю "hnflv", почему последняя буква не шифруется правильно?
string k = argv[1];
int l = strlen(argv[1]);
printf("plaintext: ");
string pt = get_string("");
printf("ciphertext: ");
for (int i = 0, shift = 0; i < strlen(pt); i++)
{
if (!isalpha(pt[i]))
{
printf("%c", pt[i]);
}
else
{
if (isupper(pt[i]))
{
if (isupper(k[shift]))
{
printf("%c", (((pt[i] - 65) + (k[shift % l] - 65)) %26) + 65);
shift++;
}
else
{
printf("%c", (((pt[i] - 65) + (k[shift % l] - 97)) %26) + 65);
shift++;
}
}
else if (islower(pt[i]))
{
if (isupper(k[shift]))
{
printf("%c", (((pt[i] - 97) + (k[shift % l] - 65)) %26) + 97);
shift++;
}
else
{
printf("%c", (((pt[i] - 97) + (k[shift % l] - 97)) %26) + 97);
shift++;
}
}
}
}
printf("\n");
return 0;
}