poj 2041 Unreliable Message 字符串处理

水的问题。直接附着到代码。

//poj 2041
//sep9
#include <iostream>
using namespace std;
char mode[128];
char ori[128],res[128];
int len;
void J()
{	
	ori[0]=res[len-1];
	for(int i=1;i<len;++i)
		ori[i]=res[i-1];
}
void C()
{
	ori[len-1]=res[0];
	for(int i=0;i<len-1;++i)
		ori[i]=res[i+1];
}
void E()
{
	int i;
	for(i=0;i<len/2;++i)		
		ori[i]=res[i+(len+1)/2];
	if(len%2==1)
		ori[len/2]=res[len/2];
	for(i=(len+1)/2;i<len;++i)
		ori[i]=res[i-(len+1)/2];
}
void A()
{
	for(int i=0;i<len;++i)
		ori[i]=res[len-1-i];
}
void P()
{
	for(int i=0;i<len;++i)
		if(res[i]<='9'&&res[i]>='0')
			ori[i]=res[i]=='0'?

'9':res[i]-1; else ori[i]=res[i]; } void M() { for(int i=0;i<len;++i) if(res[i]<='9'&&res[i]>='0') ori[i]=res[i]=='9'?'0':res[i]+1; else ori[i]=res[i]; } int main() { int i,n; scanf("%d",&n); while(n--){ scanf("%s%s",mode,res); len=strlen(res); ori[len]='\0'; for(i=strlen(mode)-1;i>=0;--i){ if(mode[i]=='J') J(); else if(mode[i]=='C') C(); else if(mode[i]=='E') E(); else if(mode[i]=='A') A(); else if(mode[i]=='P') P(); else if(mode[i]=='M') M(); strcpy(res,ori); } printf("%s\n",res); } return 0; }



posted @ 2015-10-05 16:25  hrhguanli  阅读(163)  评论(0编辑  收藏  举报