請問各位高手..
我要寫一個程式 將阿拉伯數字轉換成羅馬數字
範圍只要從1~3999 當我輸入負數的時候為何會出現over flow的訊息
另外..還有當我輸入4000的時候 會顯示四個M
輸出結果 同一個符號不能連續出現四次
例如: 4 不等於IIII (要變成 IV)
9=IX
   14=XIV
   40=XL
...............以此類推
但是...我假設我不知道5000的符號
所以不能算出4000以上的數字
請問我要怎麼樣才能把範圍設在1~3999呢?
謝謝各位的幫忙!!
I=1
V=5
X=10
L=50
C=100
D=500
M=1000
以下是程式碼部分:

Function ToRoman(x As Integer) As String
'function provided by Jason Roozee
   'jason@vbhelp.com
   'www.VBHelp.com
Dim sFinished As String
sFinished = String(Int(x / 1000), "M")
x = x - (Int(x / 1000) * 1000)
If x >= 900 Then
sFinished = sFinished & "CM"
ElseIf x >= 500 And x < 900 Then
sFinished = sFinished & "D" & String(Int((x - 500) / 100), "C")
ElseIf x >= 400 And x < 500 Then
sFinished = sFinished & "CD"
Else
sFinished = sFinished & String(Int(x / 100), "C")
End If
x = x - (Int(x / 100) * 100)

If x >= 90 Then
sFinished = sFinished & "XC"
ElseIf x >= 50 And x < 90 Then
sFinished = sFinished & "L" & String(Int((x - 50) / 10), "X")
ElseIf x >= 40 And x < 50 Then
sFinished = sFinished & "XL"
Else
sFinished = sFinished & String(Int(x / 10), "X")
End If
x = x - (Int(x / 10) * 10)

If x >= 9 Then
sFinished = sFinished & "IX"
ElseIf x >= 5 And x < 9 Then
sFinished = sFinished & "V" & String(Int((x - 5) / 1), "I")
ElseIf x >= 4 And x < 5 Then
sFinished = sFinished & "IV"
Else
sFinished = sFinished & String(Int((x / 1) / 1), "I")
End If
ToRoman = sFinished
  



End Function
Private Sub cmdRoman_Click()
Dim intHindu As Integer
Dim strRoman As String

  strRoman = ToRoman(txtHindu)
  
  lblRoman.Caption = "The Roman Number is " & """" & strRoman & """"
    
End Sub
arrow
arrow
    全站熱搜

    vbqa 發表在 痞客邦 留言(0) 人氣()