題目32. 字母往後移
問題描述
志明跟春嬌是班上的一對情侶,他們有寫交換日記來打發時間的習慣,為了防止他們寫的內容被幫忙傳的同學,或者是不小心被老師沒收,而曝光了裡面寫的東西,他們想到了一個辦法,就是把內容的所有字母都往後數幾次的字母替代,而往後數幾次的數目就寫在內容的下一行。但是,問題來了,春嬌覺得每次寫完都要在數來數去的轉化成”加密”格式,實在是太麻煩了。但又礙於不想被輕易的看到內容,於是她拜託你寫個程式幫忙她可以直接把寫好的內容轉化成”加密”的型態。加密結果不會影響原字母的大小寫,且數字部分亦作相同處理,但不處理符號及特殊字元及中文。
輸入說明
第一行為想輸入的內容,不超過 100 個字
第二行為打完你想輸入的內容之後,換行輸入你想要往後替代的數目。
輸出說明
印出轉換後的句子。
範例
志明跟春嬌是班上的一對情侶,他們有寫交換日記來打發時間的習慣,為了防止他們寫的內容被幫忙傳的同學,或者是不小心被老師沒收,而曝光了裡面寫的東西,他們想到了一個辦法,就是把內容的所有字母都往後數幾次的字母替代,而往後數幾次的數目就寫在內容的下一行。但是,問題來了,春嬌覺得每次寫完都要在數來數去的轉化成”加密”格式,實在是太麻煩了。但又礙於不想被輕易的看到內容,於是她拜託你寫個程式幫忙她可以直接把寫好的內容轉化成”加密”的型態。加密結果不會影響原字母的大小寫,且數字部分亦作相同處理,但不處理符號及特殊字元及中文。
輸入說明
第一行為想輸入的內容,不超過 100 個字
第二行為打完你想輸入的內容之後,換行輸入你想要往後替代的數目。
輸出說明
印出轉換後的句子。
範例
Sample Input | Sample Output |
How are you? 2 | Jqy ctg aqw? |
- #include <iostream>
- using namespace std;
- int main() {
- // 題目32. 字母往後移
- string text;
- int n;
- getline(cin, text);
- cin >> n;
- char c_text[text.size()];
- for(int i = 0;i < text.size();i++)
- {
- if(65 <= (char)text[i] && (char)text[i] <= 90)//大寫
- {
- if((int)text[i]+n <= 90)
- {
- c_text[i] = (char)(text[i]+n);
- }
- else
- {
- c_text[i] = (char)(((int)text[i]+n-1)-'Z'+'A');
- }
- }
- else if(97 <= (char)text[i] && (char)text[i] <= 122)//小寫
- {
- if((int)text[i]+n <= 122)
- {
- c_text[i] = (char)(text[i]+n);
- }
- else
- {
- c_text[i] = (char)(((int)text[i]+n-1)-122+97);
- }
- }
- else if(48 <= (char)text[i] && (char)text[i] <= 57)//數字
- {
- if((int)text[i]+n <= 57)
- {
- c_text[i] = (char)(text[i]+n);
- }
- else
- {
- c_text[i] = (char)(((int)text[i]+n-1)-57+48);
- }
- }
- else
- {
- c_text[i] = text[i];
- }
- }
- for(int i = 0;i < text.size();i++)
- {
- cout << c_text[i];
- }
- cout << endl;
- return 0;
- }
沒有留言:
張貼留言