愷撒密碼(cin和getline連用出現問題),cingetline

來源:互聯網
上載者:User

愷撒密碼(cin和getline連用出現問題),cingetline

題目描述
愷撒生活在充滿危險和陰謀的時代. 愷撒面對的最困難的問題是生存. 為了生存, 他決定創造一種密碼. 這種密碼聽起來難以置信, 如果不知 道方法, 沒有人可以破解.
你是愷撒軍隊的一個上尉. 你的工作是解密訊息並將之提供給將軍. 密碼很簡單. 對明文的每個字母右移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組資料. 每組資料有如下格式, 中間無空行. 一組資料有3部分:
起始行 - 單獨一行: “START”
密文 - 單獨一行, 包含1到200個字元, 組成愷撒的訊息.
結束行 - 單獨一行: “END”
最後一組輸入是單獨一行: “ENDOFINPUT”.

輸出
對每組資料有一行輸出. 即愷撒的原始訊息.

範例輸入

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 start,str,end;    while(cin>>start&&start=="START")    {        cin.ignore();//看注釋        getline(cin,str);        cin>>end;        for (int i=0;i<str.size();i++)        {            if (str[i]>='A'&&str[i]<='Z')            {                str[i]=((str[i]-'A')+26-5)%26+'A';            }        }        cout<<str<<endl;    }    return 0;}

getline(cin,str)的讀取原理是將以‘/n’為結束符做為一完整讀取的一行,’/n’會讀。所以當之前用cin讀取一個字元的時候,你會輸入一個字元然後點擊斷行符號,那麼下面getline(cin,str)讀的時候會讀入這個斷行符號,並判斷結束了。

解決的方法是在getline前面加入cin.ignore().這個就會忽略那個斷行符號。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。 http://blog.csdn.net/qq_36667170/article/details/79089477

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.