因為我是把題目分開階段來寫,最後在合併到一起,各別用很簡單的邏輯想,寫得有點亂,要是很難看懂很抱歉QQ
我自己一筆一筆資料測試都正常,但送出解答時就都是同一個錯誤結果,看了很久都看不到問題
每次錯誤都是這個↓
#0: 100% WA (line:8)
您的答案為: V
正確答案為: XVIII
我看不太懂#0、100%、line:8的意思,希望可以跟我說明一下是甚麼含意,感謝!
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int function(string str_1){ //羅馬數字轉阿拉伯數字
int i=0;
int a=0;
int length=str_1.length();
while(i<length){
switch(str_1[i]){
case 'M': //1000
a= a+1000;
i++;
break;
case 'D': //500
a= a+500;
i++;
break;
case 'C':
if(str_1[i+1]=='M'){ //900
a= a+900;
i=i+2;
break;
}
else if(str_1[i+1]=='D'){ //400
a= a+400;
i=i+2;
break;
}
else { //100
a= a+100;
i++;
break;
}
case 'L': //50
a= a+50;
i++;
break;
case 'X':
if(str_1[i+1]=='C'){ //90
a= a+90;
i=i+2;
break;
}
else if(str_1[i+1]=='L'){ //40
a= a+40;
i=i+2;
break;
}
else { //10
a= a+10;
i++;
break;
}
case 'V': //5
a= a+5;
i++;
break;
case 'I':
if(str_1[i+1]=='X'){ //9
a= a+9;
i=i+2;
break;
}
else if(str_1[i+1]=='V'){ //4
a= a+4;
i=i+2;
break;
}
else { //1
a= a+1;
i++;
break;
}
}
}
return a;
}
int function_2(int a){ //轉換成羅馬數字
//設變數
int I=0; //1
int V=0; //5
int X=0; //10
int L=0; //50
int C=0; //100
int D=0; //500
int M=0; //1000
int IV=0; //4
int IX=0; //9
int XL=0; //40
int XC=0; //90
int CD=0; //400
int CM=0; //900
//運算
if(a==0){ //判斷是否為0
cout<<"ZERO"<<endl;return 0;
}
I=a%10; //1(個位數)
X=a/10%10; //10(十位數)
C=a/100%10; //100(百位數)
M=a/1000%10; //1000(千位數)
// cout<<M<<" "<<C<<" "<<X<<" "<<I<<endl<<endl; //驗算,顯示千、百、十、個位
if(I==9){ //判斷是否為9
I-=9;IX++;
}
if(I==4){ //判斷是否為4
I-=4;IV++;
}
if(X==9){ //判斷是否為90
X-=9;XC++;
}
if(X==4){ //判斷是否為40
X-=4;XL++;
}
if(C==9){ //判斷是否為900
C-=9;CM++;
}
if(C==4){ //判斷是否為400
C-=4;CD++;
}
if(I/5){ //判斷是否為5
I-=5;V++;
}
if(X/5){ //判斷是否為50
X-=5;L++;
}
if(C/5){ //判斷是否為500
C-=5;D++;
}
//輸出
for( M; M>0; M--){ //1000
cout<<"M";
}
for( CM; CM>0; CM--){ //900
cout<<"CM";
}
for( D; D>0; D--){ //500
cout<<"D";
}
for( CD; CD>0; CD--){ //400
cout<<"CD";
}
for( C; C>0; C--){ //100
cout<<"C";
}
for( XC; XC>0; XC--){ //90
cout<<"XC";
}
for( L; L>0; L--){ //50
cout<<"L";
}
for( XL; XL>0; XL--){ //40
cout<<"XL";
}
for( X; X>0; X--){ //10
cout<<"X";
}
for( IX; IX>0; IX--){ //9
cout<<"IX";
}
for( V; V>0; V--){ //5
cout<<"V";
}
for( IV; IV>0; IV--){ //4
cout<<"IV";
}
for( I; I>0; I--){ //1
cout<<"I";
}
cout<<endl;
return 0;
}
int main(){
string str_1,str_2;
int a=0,b=0;
while(cin>>str_1 && str_1!="#" && cin>>str_2){
a= function(str_1);
b= function(str_2);
a= a-b;
function_2(a);
}
return 0;
}