2017-01-25 24 views
-5

これはローマ数字を10進数に変換するCのコードの一部です。しかし、私は本当にそれが正確に何かを理解することはできません。誰かが私に説明を与えることができますか?ローマ数字をCの10進数に変換

if ((strlen(roman_Number) - i) > 2) { 
    if (digitValue(roman_Number[i]) < digitValue(roman_Number[i + 2])) { 
     printf("Invalid roman number"); 
     return 0; 
    } 
} 
if (digitValue(roman_Number[i]) >= digitValue(roman_Number[i + 1])) 
    number = number + digitValue(roman_Number[i]); 
else { 
    number = number + (digitValue(roman_Number[i + 1]) - digitValue(roman_Number[i])); 
    i++; 
} 
i++; 

} // unbalanced bracket 
+2

roman_Numberは数字を含む配列でなければなりません。digitValue()は魔法を行います。もちろん、私たちがあなたの宿題を解決してくれるのではないでしょうか? –

+0

@ user349821 [これのようなもの](http://ideone.com/s5I50U)はどうですか? – Michi

+0

この質問は将来の訪問者には有用ではないと思われるため、私はこの質問を議論の対象外としています。 –

答えて

0

始まる少なくとも3つの文字がある場合はiオフセット、および第三の最初のより大きな値を有する、ローマ数字は無効です。

文字の値が次の文字の値より小さい場合は、最初の値を2番目の値から減算し、合計に加算して両方をスキップします。

それ以外の場合は、現在の文字の値を合計に追加します。

これらの文は、文字列roman_Numberの長さに0からiを繰り返し処理forループの本体内であるべきです。

関連する問題