C++ローマ数字と10進数の変換
1765 ワード
//
int map(char a)
{
switch (a)
{
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
default:
break;
}
return 0;
}
int RomanToInt(string s) { int result = 0;// // , , , , 2 for (size_t i = 0; i < s.size(); i++) { if (i>0 && map(s[i]) > map(s[i - 1])) result += map(s[i]) - 2 * map(s[i - 1]); else result += map(s[i]); } return result; }
//
string IntTorRoma(int num) { char* chac[4][10] = { { "","I","II","III","IV","V","VI","VII","VIII","IX" }, { "","X","XX","XXX","XL","L","LX","LXX","LXXX","XC" }, { "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM" }, { "","M","MM","MMM" } }; int num; cin >> num; string roam; roam.append(chac[3][num / 1000 % 10]); roam.append(chac[2][num / 100 % 10]); roam.append(chac[1][num / 10 % 10]); roam.append(chac[0][num % 10]); return roam;
}