Pset2 需要帮助加密单词
Pset2 Need help encrypting words
Vigenere 错误地加密了消息,例如,如果密钥是 "hello" 并且消息是 hello,加密文本现在是 "eipsv",而它应该是 "hello"。
非常感谢有关修复此错误的任何提示。
string message = GetString();
int m = strlen(message);
int i = 0;
if(isalpha(message[i]))
{
for(int j = 0; j < n; i++)
{
key[j] = tolower(key[j]) - 97;
j++;
for (i = 0; i < m; i++)
{
char c = message[i];
if (islower(c))
{
c = (((c - 'a' + key[j%n])%26) +'a');
j++;
printf("%c", c);
}
if (isupper (c))
{
c = (((c - 'A' + key[j%n])%26) +'A');
j++;
printf("%c", c);
}
else if (!isupper(c) && !islower(c))
{
printf("%c", c);
j++;
}
}
}
}
printf("\n");
}
使用关键字 "hello" 会对您的消息 "hello" 进行如下编码:
h -> (shift 7) -> o
e -> (shift 4) -> i
l -> (shift 11) -> w
l -> (shift 11) -> w
0 -> (shift 14) -> c
所以,结果应该是"oiwwc"。
好的,进行一些更改:
将密钥转换为值 0 - 25 的第一个循环应该与编码循环处于不同的循环中。转换密钥,然后进入编码循环。
在编码循环中,您将需要两个增量器,"i" 和 "j",它们都需要在您的 FOR ( ...;...; 中重新初始化为 0。 .. ) 线。您不能从密钥转换循环中重用 "j",因为它超出了范围。
从编码循环中的 ELSE IF 语句中的 printf() 行之后删除 j++。如果字母未编码,则不会递增 "j"。
顺便说一下,一旦您更新了您的程序并通过 check50 运行 它,您会发现几个错误检查错误,因为您有一些错误条件要检查,我在您当前的代码中没有看到.但是,它应该通过上述更改正确编码。
Vigenere 错误地加密了消息,例如,如果密钥是 "hello" 并且消息是 hello,加密文本现在是 "eipsv",而它应该是 "hello"。
非常感谢有关修复此错误的任何提示。
string message = GetString();
int m = strlen(message);
int i = 0;
if(isalpha(message[i]))
{
for(int j = 0; j < n; i++)
{
key[j] = tolower(key[j]) - 97;
j++;
for (i = 0; i < m; i++)
{
char c = message[i];
if (islower(c))
{
c = (((c - 'a' + key[j%n])%26) +'a');
j++;
printf("%c", c);
}
if (isupper (c))
{
c = (((c - 'A' + key[j%n])%26) +'A');
j++;
printf("%c", c);
}
else if (!isupper(c) && !islower(c))
{
printf("%c", c);
j++;
}
}
}
}
printf("\n");
}
使用关键字 "hello" 会对您的消息 "hello" 进行如下编码:
h -> (shift 7) -> o
e -> (shift 4) -> i
l -> (shift 11) -> w
l -> (shift 11) -> w
0 -> (shift 14) -> c
所以,结果应该是"oiwwc"。
好的,进行一些更改:
将密钥转换为值 0 - 25 的第一个循环应该与编码循环处于不同的循环中。转换密钥,然后进入编码循环。
在编码循环中,您将需要两个增量器,"i" 和 "j",它们都需要在您的 FOR ( ...;...; 中重新初始化为 0。 .. ) 线。您不能从密钥转换循环中重用 "j",因为它超出了范围。
从编码循环中的 ELSE IF 语句中的 printf() 行之后删除 j++。如果字母未编码,则不会递增 "j"。
顺便说一下,一旦您更新了您的程序并通过 check50 运行 它,您会发现几个错误检查错误,因为您有一些错误条件要检查,我在您当前的代码中没有看到.但是,它应该通过上述更改正确编码。