- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
// 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);
}