2017年12月4日 星期一

題目32. 字母往後移(C++)

題目32. 字母往後移

問題描述
志明跟春嬌是班上的一對情侶,他們有寫交換日記來打發時間的習慣,為了防止他們寫的內容被幫忙傳的同學,或者是不小心被老師沒收,而曝光了裡面寫的東西,他們想到了一個辦法,就是把內容的所有字母都往後數幾次的字母替代,而往後數幾次的數目就寫在內容的下一行。但是,問題來了,春嬌覺得每次寫完都要在數來數去的轉化成”加密”格式,實在是太麻煩了。但又礙於不想被輕易的看到內容,於是她拜託你寫個程式幫忙她可以直接把寫好的內容轉化成”加密”的型態。加密結果不會影響原字母的大小寫,且數字部分亦作相同處理,但不處理符號及特殊字元及中文。
輸入說明
第一行為想輸入的內容,不超過 100 個字
第二行為打完你想輸入的內容之後,換行輸入你想要往後替代的數目
輸出說明
印出轉換後的句子。
範例
Sample InputSample Output
How are you?
2
Jqy ctg aqw?


  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     // 題目32. 字母往後移  
  6.     string text;  
  7.     int n;  
  8.     getline(cin, text);  
  9.     cin >> n;  
  10.     char c_text[text.size()];  
  11.     for(int i = 0;i < text.size();i++)  
  12.     {  
  13.         if(65 <= (char)text[i] && (char)text[i] <= 90)//大寫  
  14.         {  
  15.             if((int)text[i]+n <= 90)  
  16.             {  
  17.                 c_text[i] = (char)(text[i]+n);  
  18.             }  
  19.             else  
  20.             {  
  21.                 c_text[i] = (char)(((int)text[i]+n-1)-'Z'+'A');  
  22.             }  
  23.         }  
  24.         else if(97 <= (char)text[i] && (char)text[i] <= 122)//小寫  
  25.         {  
  26.             if((int)text[i]+n <= 122)  
  27.             {  
  28.                 c_text[i] = (char)(text[i]+n);  
  29.             }  
  30.             else  
  31.             {  
  32.                 c_text[i] = (char)(((int)text[i]+n-1)-122+97);  
  33.             }  
  34.         }  
  35.         else if(48 <= (char)text[i] && (char)text[i] <= 57)//數字  
  36.         {  
  37.             if((int)text[i]+n <= 57)  
  38.             {  
  39.                 c_text[i] = (char)(text[i]+n);  
  40.             }  
  41.             else  
  42.             {  
  43.                 c_text[i] = (char)(((int)text[i]+n-1)-57+48);  
  44.             }  
  45.         }  
  46.         else  
  47.         {  
  48.             c_text[i] = text[i];      
  49.         }  
  50.     }  
  51.     for(int i = 0;i < text.size();i++)  
  52.     {  
  53.         cout << c_text[i];  
  54.     }  
  55.     cout << endl;  
  56.     return 0;  
  57. }  

沒有留言:

張貼留言