السلام عليكم و رحمة الله و بركاته.
لدي سؤال, هل توجد function او class يقوم بترجمة الاعداد حرفيا و ان امكن باللغة الفرنسية :blush:
السلام عليكم و رحمة الله و بركاته.
لدي سؤال, هل توجد function او class يقوم بترجمة الاعداد حرفيا و ان امكن باللغة الفرنسية :blush:
لا خيــــــــــر في كاتــــــــــم العلــــــــــم
سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين
جرب هذه الفئة :
Class CNumber2String
Private chiffre As String() = New String(19) {}
Private dizaine As String() = New String(6) {}
Private chaine As String
Private Sub init()
' ERROR: Not supported in C#: ReDimStatement
dizaine(0) = String.Empty
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
' ERROR: Not supported in C#: ReDimStatement
chiffre(0) = String.Empty
chiffre(1) = "un"
chiffre(2) = "deux"
chiffre(3) = "trois"
chiffre(4) = "quatre"
chiffre(5) = "cinq"
chiffre(6) = "six"
chiffre(7) = "sept"
chiffre(8) = "huit"
chiffre(9) = "neuf"
chiffre(10) = "dix"
chiffre(11) = "onze"
chiffre(12) = "douze"
chiffre(13) = "treize"
chiffre(14) = "quatorze"
chiffre(15) = "quinze"
chiffre(16) = "seize"
chiffre(17) = "dix-sept"
chiffre(18) = "dix-huit"
chiffre(19) = "dix-neuf"
End Sub
Public Function NBLT(ByVal nb As Long) As String
init()
If nb = 0 Then
Return "Zéro"
End If
chaine = ""
Decompose(nb)
chaine = chaine.Replace(" ", " ")
chaine = chaine.Replace("- ", "-")
Return chaine
End Function
Private Function Decompose(ByVal Nombre As Long) As String
Dim Reste As Long
If Nombre > (Math.Pow(10, 9)) Then
Reste = Nombre Mod CLng((Math.Pow(10, 9)))
Nombre = Nombre / CLng((Math.Pow(10, 9)))
If Nombre > 10 Then
Decompose(Nombre)
Else
chaine += chiffre(Convert.ToInt16(Nombre))
End If
chaine += " milliard"
If Nombre > 1 Then
chaine += "s"
End If
Decompose(Reste)
Else
If Nombre > (Math.Pow(10, 6)) Then
Reste = Nombre Mod CLng((Math.Pow(10, 6)))
Nombre = Nombre / CLng((Math.Pow(10, 6)))
If Nombre > 10 Then
Decompose(Nombre)
Else
chaine += " " & chiffre(Convert.ToInt16(Nombre))
End If
chaine += " million"
If Nombre > 1 Then
chaine += "s"
End If
Decompose(Reste)
Else
If Nombre >= (Math.Pow(10, 3)) Then
Reste = Nombre Mod CLng((Math.Pow(10, 3)))
Nombre = Nombre / CLng((Math.Pow(10, 3)))
If Nombre > 10 Then
Decompose(Nombre)
Else
If Nombre > 1 Then
chaine += " " & chiffre(Convert.ToInt16(Nombre))
End If
End If
chaine += " mille"
Decompose(Reste)
Else
If Nombre >= (100) Then
Reste = Nombre Mod (100)
Nombre = Nombre / (100)
If Nombre > 10 Then
Decompose(Nombre)
Else
If Nombre > 1 Then
chaine += " " & chiffre(Convert.ToInt16(Nombre))
End If
End If
chaine += " cent"
If Nombre > 1 And Reste = 0 Then
chaine += "s"
End If
Decompose(Reste)
Else
If Nombre >= 80 And Nombre < 100 Then
Reste = Nombre Mod 20
Nombre = Nombre / 20
If Nombre > 10 Then
Decompose(Nombre)
Else
chaine += " " & chiffre(Convert.ToInt16(Nombre))
End If
chaine += "-vingt"
Decompose(Reste)
Else
If Nombre < 20 And Nombre > 9 Then
chaine += " " & chiffre(Convert.ToInt16(Nombre))
Else
If Nombre > 19 And Nombre < 70 Then
Reste = Nombre Mod 10
Nombre = Nombre / 10
If Nombre > 10 Then
Decompose(Nombre)
Else
chaine += " " & dizaine(Convert.ToInt16(Nombre))
End If
If Reste = 1 Then
chaine += " et"
Else
If Reste <> 0 Then
chaine += "-"
End If
End If
Decompose(Reste)
Else
If Nombre >= 70 Then
chaine += " soixante"
Reste = Nombre - 60
If Reste = 1 Or Reste = 11 Then
chaine += " et"
End If
Decompose(Reste)
Else
If Nombre < 10 Then
chaine += " " & chiffre(Convert.ToInt16(Nombre))
End If
End If
End If
End If
End If
End If
End If
End If
End If
Return chaine
End Function
End Classتحياتي...
تم تعديل هذه المشاركة بواسطة محمد رضى في 17 أكتوبر 2009 في 16:01
جعل الله عملك في ميزان حسناتك
شكراً...
لا خيــــــــــر في كاتــــــــــم العلــــــــــم
سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين