ローマ数字を読むために文字列を部分に分割しようとしています。ユーザーが文字列を部分に分割する方法 - ローマ数字
"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;
}
私は ' - '文字がどこから来ているのか理解していません...ローマ数字には負の記号はありません。 – Polaris878
私は自分のローカル目的のためにそれをサポートしています。あなたがそれを好きではない場合は、それを裂く。 – chaos
する割り当てを用心します'='と比較 '=='、文字列 '' X ''と' 'X' 'の文字の間にあります。また、 '' int roman + = 10; ''の宣言は、あなたが意図したものではない、不確定な値に10を加えます。さらに、' 'if''ステートメントの外に蓄積された値の宣言を隠します。 –
これはちょうど短い例だったので、人々は私が意味することの要点を得るでしょう:/あなたは代入演算子、タイプミスについては正しいです。 – trikker