2017-04-21 41 views
0

任務:凱撒算法(cipher(c))通過按鍵(k)位置「旋轉」每個字母來加密消息。在保存案例的同時使用密鑰加密文本?

實現:ci =(pi + k)mod26 其中ci是密碼,pi是明文,k是密鑰。

我的僞代碼:從命令行參數

  1. 獲取密鑰。
  2. 將密鑰(k)轉換爲整數。
  3. 爲純文本(PI)
  4. 每個純文本字符,保存的情況下提示用戶(使用因而isalpha,isupper和islower判斷功能中C.
  5. 通過例如鍵明文字符最後轉移 - 「回家! 「--- 」惠普Ipnf!「(如果密鑰k = 1,並保留字母/小寫,!仍爲!)。** 我這個
  6. 打印密文掙扎。

int main (int argc, string argv[]) //get key from command line argument   
    { 
     if (argc != 2 || atoi(argv[1]) < 0) 
     { 
     printf ("print valid key"); 
     return 1; 
     } 

     int k = atoi(argv[1]); 

     string p = get_string(); //prompt for plaintext 

     for (int i=0, n = strlen(p); i < n; i++) 
     { if (isalpha('p')) 
     { 
     if (isupper('p')) 
     { 
      printf ("%c", p[i]); 
     } 
     if (islower('p')) 
     { 
      printf ("%c", p[i]); 
     } 
     } 
     } 

    c[i]=(p[i]+k)%26; 
     printf ("%c", c[i]); 
    } 
+1

有沒有問題在這裏的某個地方? –

+0

剛編輯我的問題。正如我在我的僞代碼中提到的,我正在努力改變這些信件。 – Aakash

+0

'c'是什麼?它沒有在這個範圍內聲明。你有正確的想法,但是當你'%26'結束時你會得到一個介於0到25之間的數字,這些大多數是不可打印的ASCII字符,你需要添加''a'或''A'到它讓他們在字母表中。 –

回答

0

實際上,您已寫入將簡單地返回純文本的值已輸入 邏輯爲這個問題的代碼是 C [1] =(P [1] + K)%26 你必須使不同套用這個公式的大寫和小寫 我可以給你的代碼片段,這將幫助您解決問題

int l = (p[ i ] -65+k)%26 printf("%c",l+65);

這裏,k是關鍵 在此我有使用字母的ASCII值作爲ASCII值是整數,我有使用d是一個整數,用於存儲該值並應用給定的操作。 我使用了65,因爲大寫字母'A'的ASCII值是65. 由於我們必須打印字符,所以我們使用%c來打印字符。 這是大寫,你可以做類似的小寫 如果這個答案是有幫助的,請點擊這個旁邊的箭頭 謝謝:)

相關問題