CS50 - Перенос строк в их цифровой аналог в другой новой строке - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь Vigenere на CS50 Pset2.

Я создаю новый массив такой же длины, что и ключевое слово, чтобы перейти к его цифре.

Однако я не получаю правильный ответ, есть идеи, в чем проблема?

//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:

И это неправильно.

...