Description
Edward, a poor copy typist, is a user of the Dvorak Layout. But now he has only a QWERTY Keyboard with a broken Caps Lock key, so Edward never presses the broken Caps Lock key. Luckily, all the other keys on the QWERTY keyboard work well. Every day, he has a lot of documents to type. Thus he needs a converter to translate QWERTY into Dvorak. Can you help him?
The QWERTY Layout and the Dvorak Layout are in the following:
Input
A QWERTY document Edward typed. The document has no more than 100 kibibytes. And there are no invalid characters in the document.
Output
The Dvorak document.
Sample Input
Jgw Gqm Andpw a H.soav Patsfk f;doe
Nfk Gq.d slpt a X,dokt vdtnsaohe
Kjd yspps,glu pgld; aod yso kd;kgluZ
1234567890
`~!@#$%^&*()}"']_+-=ZQqWEwe{[\|
ANIHDYf.,bt/
ABCDEFuvwxyz
Sample Output
Hi, I'm Abfl, a Dvqrak Layqut usfr.
But I'vf qnly a Owfrty kfybqard.
Thf eqllqwing linfs arf eqr tfsting:
1234567890
`~!@#$%^&*()+_-={}[]:"'<>,.?/\|
ABCDFEuvwxyz
AXJF>Ugk,oe;
解析
按第一个键盘输入,按第二个键盘输出
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
char upper[26]={'A','X','J','F','>','U','I','D','C','H','T','N','M','B','R','L','"','P','Q','Y','G','K','<','O','E',':'};
char lower[26]={'a','x','j','f','.','u','i','d','c','h','t','n','m','b','r','l','\'','p','q','y','g','k',',','o','e',';'};
while(getline(cin,s))
{
int len=s.size();
for(int i=0;i<len;i++)
{
if(s[i]>='0'&&s[i]<='9')
cout<<s[i];
else if(s[i]>='A'&&s[i]<='Z')
cout<<upper[s[i]-'A'];
else if(s[i]>='a'&&s[i]<='z')
cout<<lower[s[i]-'a'];
else
{
int flag=0;
switch(s[i])
{
case '_':cout<<'{';flag=1;break;
case '+':cout<<'}';flag=1;break;
case '-':cout<<'[';flag=1;break;
case '=':cout<<']';flag=1;break;
case '{':cout<<'?';flag=1;break;
case '}':cout<<'+';flag=1;break;
case '[':cout<<'/';flag=1;break;
case ']':cout<<'=';flag=1;break;
case '<':cout<<'W';flag=1;break;
case ',':cout<<'w';flag=1;break;
case '>':cout<<'V';flag=1;break;
case '.':cout<<'v';flag=1;break;
case '?':cout<<'Z';flag=1;break;
case '/':cout<<'z';flag=1;break;
case ':':cout<<'S';flag=1;break;
case ';':cout<<'s';flag=1;break;
case '"':cout<<'_';flag=1;break;
case '\'':cout<<'-';flag=1;break;
}
if(!flag)
cout<<s[i];
}
}
printf("\n");
}
return 0;
}