トップ 一覧 Farm 検索 ヘルプ RSS ログイン

05dc1.cの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 
 #define SMAX 100
 
 int mcxi(char s[SMAX])
 {
 	int i,b,num=0;
 	
 	for(i=0; i<strlen(s); i++){
 		if(isdigit(s[i])){
 			b=s[i]-'0';
 			i++;
 		}else{
 			b=1;
 		}
 		switch(s[i]){
 			case 'm': num+=b*1000; break;
 			case 'c': num+=b*100; break;
 			case 'x': num+=b*10; break;
 			case 'i': num+=b*1; break;
 		}
 	}
 	
 	return(num);
 } 
 
 int main(void)
 {
 	int a,i,n,sum;
 	char s1[SMAX],s2[SMAX];
 	
 	scanf("%d", &n);;
 	
 	for(i=0; i<n; i++){
 		scanf("%s %s", s1, s2);
 //		printf("%s + %s\n",s1, s2);
 		sum=mcxi(s1)+mcxi(s2);
 //		printf("%d + %d = %d\n",mcxi(s1), mcxi(s2), sum);
 		
 		a=sum/1000;
 		if(a==1){
 			printf("m");
 		}else if(a>1){
 			printf("%dm",a);
 		}
 		
 		a=(sum%1000)/100;
 		if(a==1){
 			printf("c");
 		}else if(a>1){
 			printf("%dc",a);
 		}
 		
 		a=(sum%100)/10;
 		if(a==1){
 			printf("x");
 		}else if(a>1){
 			printf("%dx",a);
 		}
 		
 		a=sum%10;
 		if(a==1){
 			printf("i");
 		}else if(a>1){
 			printf("%di",a);
 		}
 		printf("\n");
 	}
 	
 	return(0);
 }