الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ترجمة الاعداد حرفيا

بدأه ofnet في 17 أكتوبر 2009 · 2 رد · 783 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته.

لدي سؤال, هل توجد function او class يقوم بترجمة الاعداد حرفيا و ان امكن باللغة الفرنسية :blush:

لا خيــــــــــر في كاتــــــــــم العلــــــــــم

سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين

#2

جرب هذه الفئة :

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

#3

جعل الله عملك في ميزان حسناتك

شكراً...

لا خيــــــــــر في كاتــــــــــم العلــــــــــم

سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين

مواضيع مشابهة