2016-12-10 7 views
0

私はVigenere問題に関する多くのスタックとreddit質問を行ってきました。私はそれを私がそれを味わうことができることを理解することに非常に近いです!Vigenere BaZキーフラストレーション

私は最後の数時間、BaZキーの問題を解決してくれていて、私の髪を引き出す準備ができています。マイCS50チェックリターン:

:(私はキーのためにチェックして期待される出力\キーワード

として "バズ" を使用して "CaQGon" として "BaRFooを" 暗号化ではなく、 "CBzSREpon \ n" は

。大文字と小文字であること、そして論理的に私ができるようにすべてのものをしてきたこの時点で、私はあまりにも長い間、私の画面を見つめてきたし、何かが欠けています

は、これは私のコードです:。

for (i = 0, l = strlen(p); i < l; i++) 
{ 
    if (isalpha(p[i])) 
    { 
     if (isupper(p[i]) && isupper(k[n])) 
     { 
      int c = (p[i] - 65 + ((k[n]) - 65)) % 26; 
      printf("%c", c + 65); 
      n++; 
     } 
     if (isupper(p[i]) && islower(k[n])) 
     { 
      int c = (p[i] - 65 + (k[n] - 97)) % 26; 
      printf("%c", c + 65); 
      n++; 
     } 
     if (islower(p[i]) && islower(k[n])) 
     { 
      int c = (p[i] - 97 + (k[n] - 97)) % 26; 
      printf("%c", c + 97); 
      n++; 
     } 
     if (islower(p[i]) && isupper(k[n])) 
     { 
      int c = (p[i] - 97 + ((k[n]) - 65)) % 26; 
      printf("%c", c + 97); 
      n++; 
     } 
     if (n == g) 
      n = 0; 
    } 
    if (!isalpha(p[i])) 
    { 
     printf("%c", p[i]); 
    } 
} 
printf("\n"); 

return 0; 

私は何が欠けていますか?誰かが私が大げさになる前に私を助けてください!

答えて

0

1文字に複数の出力を指定しています。最初に "if"の後に "else if"を使用する必要があります。または、最初の大きなifブロックの最後にn ++を作成します。最初の内部のifブロックでnをインクリメントすると、ブロックの場合にもk [n]が変化するため、ブロックが2番目に入ります。

+0

私はとても愚かな気がします...私は講義で取ったメモからすべてをチェックし、ここからあらゆる種類の質問を読んだり、redditしたりしていました。私は多分これから休みを取って、私の脳をリセットさせるべきです! ありがとうございます。ほんとうにありがとう。 :D – RAMK

+0

それは起こる:)。良い仕事を続けて、来年前にコースとHWを完了させてください。リセットされます。 –

関連する問題