CS50-将字符串转换为另一个新字符串中的数字副本

时间:2019-04-16 08:34:04

标签: cs50 vigenere

我正在CS50 Pset2上尝试Vigenere。

我正在创建一个新的数组,其长度与关键字相同,以移至其对应的数字。

但是我没有得到正确的答案,知道是什么问题吗?

//Ciphering Function
string plainToCipher(string plainText,string keyword)
{

    int i = strlen(plainText);
    int k = strlen(keyword); //used for modular cycle
    int i1 = 0;




    char newstring[k];
    //shifts keyword string to its digit counterpart
    do
    {
        if(keyword[i1]>='a') 
        {
            newstring[i1] = keyword [i1] - 'a';
        }

        else
        {
            newstring[i1] = keyword[i1] - 'A';
            printf("%c", newstring[i1]);
        }

    i1++;
    }while(i1<k);

    int j = 0;

    do
    {

            if(plainText[j] >= 'a' && plainText[j] <= 'z')
            {
                plainText[j] = ((plainText[j] - 'a') + ( (newstring[j%k]-'0') )) % 26 + 'a'; 
            }

            else if(plainText[j] >= 'A' && plainText[j] <= 'Z')
            {
                plainText[j] = ((plainText[j] - 'A') + ( (newstring[j%k]-'0') )) % 26 + 'A';
            }
    j++;

    }while(j<i);

    return plainText;

}

我的答案是:

~/ $ ./vigenere abc
plaintext: HELLO
ciphertext: 2086:

这是错误的。

0 个答案:

没有答案