2016-09-18 28 views
-1

我需要一些關於算法的幫助,我附加了一個問題,它說我必須爲可以將羅馬轉換爲十進制的程序開發算法。一個程序的算法,可以將羅馬轉換爲十進制

我不知道該怎麼做,寧願一個完整的算法,但任何幫助表示讚賞。 這是一個算法而不是程序!

enter image description here

+0

它將幫助,如果你說哪種編程語言你應該這樣做 – whitebrow

+0

它在C但它的算法 –

回答

0

的想法是遍歷從端羅馬數字串開始。對於每個字符,將相應的編號添加到結果中。對於一些特殊的 例如'I','X','C',檢查結果是否大於相應的數字。如果是,我們需要從結果中減去 。如果不是,我們需要將該數字添加到結果中。

res = 0 
for each character c backwards: 
    if c =='I' 
    res += res + (res >= 5 ? -1 : 1) 
    else if c=='V' 
    res += res + 5 
    else if c=='X' 
    res += 10 * (res >= 50 ? -1 : 1) 
    else if c=='L' 
    res += 50; 
    else if c == 'C' 
    res += 100 * (res >= 500 ? -1 : 1) 
    else if c== 'D' 
    res += 500 
    else if c=='M' 
    res += 1000 
return res 

例如:MMDCCCXCIX

= 0 + MMDCCCXCIX

= 10 + MMDCCCXCI

= 9 + MMDCCCXC(如10> 5)

= 109 + MMDCCCX

= 99 + MMDCCC(如109> 50)

= 199 + MMDCC

= 299 + MMDC

= 399 + MMD

= 899 + MM

= 1899 + M

= 2899

+0

謝謝。但請告訴我變量的縮寫。 –

+0

Like whats「res」etc .. –

+0

@HaXnainNoOrani res是結果,c是我們迭代的羅馬數字的當前字符。 – errorist

相關問題