#c
#c
Вопрос:
Я работаю над pset, и мне нужна помощь. Цель программы — принять аргумент командной строки и использовать его в качестве ключа для шифрования некоторого открытого текста, введенного пользователем, и сдвинуть его на количество заданных букв. Прописные буквы должны оставаться прописными, строчные — строчными. Все остальные символы должны оставаться неизменными. Мой код шифрует только буквы нижнего регистра, но не верхний регистр. Пожалуйста, помогите мне понять, почему.
void encryption(string plaintext, int k, string ciphertext);
int main(int argc, string argv[])
{
string plaintext;
int n = strlen(plaintext);
char ciphertext[n 1]; //the lenght of the plaintext 1 extra char which i
int k = atoi(argv[1]); //Convert string into an integer, i.e parsing
if (argc != 2)
{
printf("Usage: ./caesar keyn");
return 1;
}
else
{
for (int i = 0, m = strlen(argv[1]); i < m; i )
{
if (isdigit(argv[1][i]))
{
plaintext = get_string("Plaintext:");
encryption(plaintext, k, ciphertext); //calling the encryption function
printf("Ciphertext: %sn", ciphertext);
return 0;
}
else
{
printf("Usage: ./caesar keyn");
return 1;
}
}
}
}
void encryption(string plaintext, int k, string ciphertext)
{
for (int i = 0, n = strlen(plaintext); i < n; i )
{
if (isupper(plaintext[i]))
{
int pi = plaintext[i] - 65;
char ci = ((pi k) % 26) 65;
ciphertext[i] = ci;
}
if (islower(plaintext[i]))
{
int pi1 = plaintext[i] - 97;
char ci1 = ((pi1 k) % 26) 97;
ciphertext[i] = ci1;
}
else
{
ciphertext[i] = plaintext[i];
}
}
}
Комментарии:
1. Здесь:
else { ciphertext[i] = plaintext[i]; }
где вы изменили его обратно на обычный текст. Приведенный выше тестif (islower(plaintext[i]))
должен бытьelse if (islower(plaintext[i]))
. Я думаю, вы имели в виду: если это прописные буквы, иначе , если это строчные, иначе простые.2. Большое вам спасибо. Теперь это работает.
3. Рассмотрите возможность именования функций с использованием глаголов, а не существительных. Функции что-то делают , и на языке мы описываем это с помощью глагола. Если вы сохраняете некоторую согласованность с обычным языком в своей программе, его становится легче читать и понимать. Особенно по мере усложнения кода.
4. Спасибо, Пэдди. Я буду делать это с этого момента.