1. 程式人生 > 其它 >字串應用---簡單密碼

字串應用---簡單密碼

技術標籤:字串字串演算法

題目描述

Julius Caesar曾經使用過一種很簡單的密碼。 對於明文中的每個字元,將它用它字母表中後5位對應的字元來代替,這樣就得到了密文。 比如字元A用F來代替。如下是密文和明文中字元的對應關係。 密文 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 明文 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U 你的任務是對給定的密文進行解密得到明文。 你需要注意的是,密文中出現的字母都是大寫字母。密文中也包括非字母的字元,對這些字元不用進行解碼。
輸入描述:

輸入中的測試資料不超過100組。每組資料都有如下的形式,而且各組測試資料之間沒有空白的行。
一組測試資料包括三部分:

  1. 起始行 - 一行,包括字串 “START”
  2. 密文 - 一行,給出密文,密文不為空,而且其中的字元數不超過200
  3. 結束行 - 一行,包括字串 “END”
    在最後一組測試資料之後有一行,包括字串 “ENDOFINPUT”。

輸出描述:

對每組資料,都有一行輸出,給出密文對應的明文。

示例1
輸入

START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
START
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ

END
START
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
END
ENDOFINPUT

輸出

IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE

程式碼:

#include <iostream>
#include<string> using namespace std; int main() { string str; while(getline(cin,str)){ if(str=="ENDOFINPUT"){ break; } getline(cin,str); for (int i=0;i<str.size();i++){ if(str[i]>='A'&&str[i]<='Z'){ str[i]=(str[i]-'A'-5+26)%26+'A'; } } cout<<str<<endl; getline(cin,str); } return 0; }