我正在编写一个程序,将罗马数字转换为阿拉伯数字,反之亦然,当我执行下面的代码时,我的输出就会跳闸。 (运行失败:退出值2)。
用户输入一个字符串值,代码确保数字为大写,然后尝试在单位数组中找到它并将其索引值传递给arabic的值。我是C ++的新手,所以任何输入都值得赞赏。我相信for / if循环是我的问题,但我不知道如何修复它?
//roman to arabic
int toArabic() {
transform(input.begin(), input.end(), input.begin(), ::toupper);
for (int i = 0; i < sizeof(units); i++) {
if (input == units[i]) {
arabic = i;
}
}
cout << arabic << endl;
}
//主要课程
int main(int argc, char** argv) {
while (!cin.eof()) {
getline(cin, input);
if (isdigit(input[0])) {
toRoman();
input.clear();
roman.clear();
}
else if (isalpha(input[0])) {
toArabic();
input.clear();
}
else {
return 0;
}
}
}
///单位数组(类似数组,数十,数百等)
string units[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
很抱歉,如果答案很明显/我的代码不好,我花了好几个小时就仍然无法弄清楚我的问题
答案 0 :(得分:0)
int toArabic()意味着你的函数将返回一个整数 - int。但是你的函数什么都不返回可能这就是你的编译器所抱怨的。更改为void toArabic()并查看是否清除了编译器错误。在这种情况下,void意味着什么都不返回。
或者这是运行时错误吗?构建此程序时的输出是什么?