トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

2003aa1.c

// Probrem A

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAXLINE 100

void jjj(char s[MAXLINE])
{
	int i, len=strlen(s);
	char tmp;
	
	tmp=s[len-1];
	for(i=len-2; i>=0; i--){
		s[i+1]=s[i];
	}
	s[0]=tmp;
}

void ccc(char s[MAXLINE])
{
	int i, len=strlen(s);
	char tmp;
	
	tmp=s[0];
	for(i=0; i<=len-2; i++){
		s[i]=s[i+1];
	}
	s[len-1]=tmp;
}

void eee(char s[MAXLINE])
{
	int i, len=strlen(s);
	char tmp;
	
	for(i=0; i<len/2; i++){
		tmp=s[i];
		s[i]=s[len/2+i+(len%2)];
		s[len/2+i+(len%2)]=tmp;
	}
}

void aaa(char s[MAXLINE])
{
	int i, len=strlen(s);
	char tmp;
	
	for(i=0; i<len/2; i++){
		tmp=s[i];
		s[i]=s[len-1-i];
		s[len-1-i]=tmp;
	}
}

void ppp(char s[MAXLINE])
{
	int i, len=strlen(s);
	
	for(i=0; i<len; i++){
		if(isdigit(s[i])){
			s[i]=(10 + (s[i]-'0') -1 )%10 + '0';
		}
	}
}

void mmm(char s[MAXLINE])
{
	int i, len=strlen(s);
	
	for(i=0; i<len; i++){
		if(isdigit(s[i])){
			s[i]=(10 + (s[i]-'0') +1 )%10 + '0';
		}
	}
}

int main(int argc, char *argv[])
{
	FILE *fp;
	char order[MAXLINE], message[MAXLINE];
	int i,j,k,n,x,y,z;
	
	if(argc != 2){
		fprintf(stderr, "Usage: program input-file\n");
		exit(-1);
	}
	
	if((fp=fopen(argv[1],"r")) == NULL){
		fprintf(stderr, "can't open %s\n", argv[1]);
		exit(-1);
	}
	
	// 個数読み込み
	fscanf(fp, "%d", &n);
	
	for(i=0; i<n; i++){
		fscanf(fp, "%s", order);
		fscanf(fp, "%s", message);
		//printf("%s\n", order);
		//printf("%s\n", message);
		for(j=strlen(order)-1; j>=0; j--){
			switch(order[j]){
				case 'J': jjj(message); break;
				case 'C': ccc(message); break;
				case 'E': eee(message); break;
				case 'A': aaa(message); break;
				case 'P': ppp(message); break;
				case 'M': mmm(message); break;
				default: puts("error?"); break;
			}
		}
		printf("%s\n", message);
		//printf("\n");
	}
	
	fclose(fp);
	
	return(0);
}