2
我試圖將字符串劃分爲用於讀取羅馬數字的部分。例如,如果用戶輸入如何將字符串劃分爲若干部分 - 羅馬數字
"XI"
我希望程序要能明白,我是1和X是10爲了使數據驗證這樣的工作。
if(string roman == "X") int roman += 10;
etc.
我試圖將字符串劃分爲用於讀取羅馬數字的部分。例如,如果用戶輸入如何將字符串劃分爲若干部分 - 羅馬數字
"XI"
我希望程序要能明白,我是1和X是10爲了使數據驗證這樣的工作。
if(string roman == "X") int roman += 10;
etc.
從字符串訪問個性,使用方括號:
int num = 0;
char r = roman[0];
if (r == 'X') {
num += 10;
}
以上絕非一個完整的例子,但應該足以讓你開始。本示例查看字符串roman
中的第一個字符(字符從索引0開始在左邊開始編號)。它檢查看人品是否'X'
,如果是的話,由10
功能從你不懂得的語言這樣做遞增num
變量,當作僞代碼:
int from_roman_numeral(string val) {
val = upper_case(val);
if(val == "N")
return 0;
status neg = False;
if(val[0] == '-') {
neg = True;
val = val[1..];
}
int out = 0;
int last = 0;
int array values = allocate(127);
values['M'] = 1000;
values['D'] = 500;
values['C'] = 100;
values['L'] = 50;
values['X'] = 10;
values['V'] = 5;
values['I'] = 1;
int value;
int next;
for(int idx = 0, int len = strlen(val); idx < len; idx++) {
value = values[val[idx]];
unless(value)
error("'" + val + "' is not a valid Roman numeral sequence");
if(idx < len - 1 && (next = values[val[idx + 1]]) && next > value) {
out += next - value;
idx++;
} else {
out += value;
}
}
return neg ? -out : out;
}
謹防分配`=`與比較`==`,字符串`「X」`和字符`'X'`。另外,'int roman + = 10;`'聲明會將一個不確定的值加10 - 不可能是你想要的,並且它隱藏了在'if'聲明之外累積的任何值的聲明。 – 2009-07-26 01:35:50
這只是一個簡短的例子,所以人們會得到我的意思的要點:/但你說的是賦值運算符,是一個錯字。 – trikker 2009-07-26 01:38:02