#12812: 怎麼說呢 為什麼又WA了


axxonyen (牧瀨紅莉栖)

學校 : 臺北市立大安高級工業職業學校
編號 : 59913
來源 : [140.124.184.137]
最後登入時間 :
2018-01-06 11:09:37
a013. 羅馬數字 -- NPSC 模擬試題 | From: [61.228.147.60] | 發表日期 : 2017-10-14 22:22

以下為我的程式內容

有興趣的人可以試試看

#include<iostream>
#include<string>
#include<cstdio>
#include<cstdlib>
using namespace std;
int translate(char U){
switch(U){
case 'I':return 1;
break;
case 'V':return 5;
break;
case 'X':return 10;
break;
case 'L':return 50;
break;
case 'C':return 100;
break;
case 'D':return 500;
break;
case 'M':return 1000;
break;

}
}
string translate2(int U){
string a="";
if(U/1000<4){
for(int r=0;r<U/1000;r++)a+="M";
}

if((U/100)%10<4){
for(int r=0;r<(U/100)%10;r++)a+="C";
}
else if((U/100)%10==4){
a+="CD";
}
else if((U/100)%10==9){
a+="CM";
}
else if((U/100)%10>4){
a+="D";
for(int r=0;r<(U/100)%10-5;r++)a+="C";
}

if((U/10)%10<4){
for(int r=0;r<(U/10)%10;r++)a+="X";
}
else if((U/10)%10==4){
a+="XL";
}
else if((U/10)%10==9){
a+="XC";
}
else if((U/10)%10>4){
a+="L";
for(int r=0;r<(U/10)%10-5;r++)a+="X";
}

if(U%10<4){
for(int r=0;r<U%10;r++)a+="I";
}
else if(U%10==4){
a+="IV";
}
else if(U%10==9){
a+="IX";
}
else if(U%10>4){
a+="V";
for(int r=0;r<U%10-5;r++)a+="I";
}
if(a=="")return "ZERO";
else return a;
}
int T(string input){
int r;//sum
int pyon=0;//now 加權
int poi=0;//現在取的值
for(int e=input.length()-1;e>=0;e--){
poi=translate(input[e]);
if(poi<pyon){
r-=poi;
}
else{
r+=poi;
pyon=poi;
}
}
return r;
}

int main(){
string x="";
getline(cin,x);
while(x!="#"){
char a[99]="";
char b[99]="";
for(int e=0;e<x.length();e++){
//A B
if(x[e]==' '){
for(int ii=0;ii<x.length()-e-1;ii++)
{
b[ii]=x[ii+e+1];
}
break;
}
else{
a[e] = x[e];
}
}
int V;
if(T(a)>T(b))V=T(a)-T(b);
else V=T(b)-T(a);
//cout<<a<<b<<endl;
cout<<translate2(V)<<endl;


string null="";
x=null;
getline(cin,x);
}
}

 
#13240: Re:怎麼說呢 為什麼又WA了


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a013. 羅馬數字 -- NPSC 模擬試題 | From: [125.227.36.82] | 發表日期 : 2018-01-12 23:28

第76行 int T(string input)下面那一行

把 int r;//sum 改成 int r=0;

 
#13241: Re:怎麼說呢 為什麼又WA了


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a013. 羅馬數字 -- NPSC 模擬試題 | From: [125.227.36.81] | 發表日期 : 2018-01-12 23:35

另外你的程式中輸入的地方處理得很複雜,我建議使用cin >> x,以下提供我的作法讓你參考:

string input1,input2;
	while(cin >> input1){
		if(input1=="#") break;
		cin >> input2;
		
......
}
 
ZeroJudge Forum