-2
我基本上试图做一个程序,将罗马数字变成十进制,这是为了验证只有罗马数字被接受为输入。有没有更好的方法来解决这个问题?
我相信有这样做的更有效的方法。我对编程非常陌生。
int main()
{
string valid = {"IIIIIVIIXIILIICIIDIIMIVIIVVIVXIVLIVCIVDIVMIXIIXVIXXIXLIXCIXDIXMILIILVILXILLILCILDILMICIICVICXICLICCICDICMIDIIDVIDXIDLIDCIDDIDMIMIIMVIMXIMLIMCIMDIMMVIIVIVVIXVILVICVIDVIMVVIVVVVVXVVLVVCVVDVVMVXIVXVVXXVXLVXCVXDVXMVLIVLVVLXVLLVLCVLDVLMVCIVCVVCXVCLVCCVCDVCMVDIVDVVDXVDLVDCVDDVDMVMIVMVVMXVMLVMCVMDVMMXIIXIVXIXXILXICXIDXIMXVIXVVXVXXVLXVCXVDXVMXXIXXVXXXXXLXXCXXDXXMXLIXLVXLXXLLXLCXLDXLMXCIXCVXCXXCLXCCXCDXCMXDIXDVXDXXDLXDCXDDXDMXMIXMVXMXXMLXMCXMDXMMLIILIVLIXLILLICLIDLIMLVILVVLVXLVLLVCLVDLVMLXILXVLXXLXLLXCLXDLXMLLILLVLLXLLLLLCLLDLLMLCILCVLCXLCLLCCLCDLCMLDILDVLDXLDLLDCLDDLDMLMILMVLMXLMLLMCLMDLMMCIICIVCIXCILCICCIDCIMCVICVVCVXCVLCVCCVDCVMCXICXVCXXCXLCXCCXDCXMCLICLVCLXCLLCLCCLDCLMCCICCVCCXCCLCCCCCDCCMCDICDVCDXCDLCDCCDDCDMCMICMVCMXCMLCMCCMDCMMDIIDIVDIXDILDICDIDDIMDVIDVVDVXDVLDVCDVDDVMDXIDXVDXXDXLDXCDXDDXMDLIDLVDLXDLLDLCDLDDLMDCIDCVDCXDCLDCCDCDDCMDDIDDVDDXDDLDDCDDDDDMDMIDMVDMXDMLDMCDMDDMMMIIMIVMIXMILMICMIDMIMMVIMVVMVXMVLMVCMVDMVMMXIMXVMXXMXLMXCMXDMXMMLIMLVMLXMLLMLCMLDMLMMCIMCVMCXMCLMCCMCDMCMMDIMDVMDXMDLMDCMDDMDMMMIMMVMMXMMLMMCMMDMMM"};
string s;
while (true) {
cout << "Please enter a roman numeral or Q to quit the program: ";
cin >> s;
if (valid.find(s) != string::npos) {
int num;
num = intConversion(s);
cout << num << "\n";
}
else if (s == "Q") {
cout << "Thank you for using the program." << "\n";
break;
} else {
cout << "Invalid letter!" << "\n";
}
}
return 0;
system("pause");
}
这确实属于在以下网页:http://codereview.stackexchange.com/ –
BTW,你的算法将测试用例失败:IIIII,这是不是一个合法的罗马数。此外,八是一个有效的数字,将失败你的测试。 –