السلام عليكم ورحمة الله وبركاتة
بعد طول غياب عن المنتدي أرجو من اخواني أعضاء المنتدي الكرام خصوصاً حزووووم تقبل عذري
وأهدي هذة الخوارزمية لكم جميعاً
للتحويل من الكسر العشري الي الكسر الاعتيادي أي مثلاً من 0.25 ال 1/4 هناك طريقتين
الطريقة الأولي :
تعتمد علي ايجاد بسط وايجاد مقام من الرقم المعطي 0.25 مثلا سيكون البسط 25 والمقام 100ثم سنقوم بتجربة قسمة كل منهم علي نفس الرقم حتي نصل للنهاية الي 1 في البسط و 4 في المقام
Public Function GetFraction(ByVal value As String) As String Dim HolderValue As Integer ' تحديد قيمة المقام الأولية 10 او 100 او 1000 الخ Dim numerator As Integer ' البسط Dim denominator As String = "1" المقام Dim result As String Dim x As Integer Dim i As Integer Dim holdnum, holdden As Integer HolderValue = value.Length - 1 For i = 1 To HolderValue denominator += "0" Next numerator = value * denominator For x = 1 To numerator If (((numerator Mod x) = 0) And ((denominator Mod x) = 0)) Then holdnum = numerator / x holdden = denominator / x End If Next Return holdnum & "/" & holdden End Select End Function
هذة الطريقة تحتوي بعض المشاكل حيث ان هناك بعض الكسور ذات قيمة لانهائية مثل 1/3 = 0.33333333333333333333333الي مالا نهاية
وبالتالي سيعطيك البرنامج error= Overflow
ولحل هذة المشكلة نستيع ان نتبع الطريقة الثانية
وهي تعتمد علي المطابقة من خلال بحث داخل متوالية من الأرقام
وتجربة قسمة رقم علي رقم حتي يتم المطابقة بين الكسر العشري ونتيجة هذة القسمة
مثال :
Public Function frag(ByVal value As String) As String Dim i, s As Integer Dim D As Double = Math.Round(Val(value), 5) For i = 1 To 9999 '''''المقام For s = 0 To 9999 '''''' البسط If D = Math.Round(s / i, 5) Then frag = s & "/" & i Return frag Exit Function End If Next Next Return frag End Function
وشكراً
والسلام عليكم ورحمة الله وبركاته
أرجو ان أكون قدمت فائدة.
وفي انتظار ردودكم واستفساراتكم