منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] احتاج تعديل كود لحساب الحجم المعدل - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4)
+--- قسم : قسم لغة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=18)
+---- قسم : قسم أسئلة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=28)
+---- الموضوع : [سؤال] احتاج تعديل كود لحساب الحجم المعدل (/showthread.php?tid=53736)



احتاج تعديل كود لحساب الحجم المعدل - hsab - 24-06-25

السلام عليكم ورحمة الله احتاج كود ليحسب القيم الزوجية الصحيحة بحيث اولا يتحقق من القيم اذا كانت صحيحة زوجية بدون كسر يحسبها مباشرة  (كمثال : 834 , 836, 838 , 840) اما اذا كانت غير ذلك يستخدم قانون الاستيفاء الخطى مثلا 832.8 تقع بين 832 و 834 يستخدم قانون الاستيفاء الخطى .


RE: احتاج تعديل كود لحساب الحجم المعدل - abde6726 - 06-09-25

(24-06-25, 01:24 PM)hsab كتب : السلام عليكم ورحمة الله احتاج كود ليحسب القيم الزوجية الصحيحة بحيث اولا يتحقق من القيم اذا كانت صحيحة زوجية بدون كسر يحسبها مباشرة  (كمثال : 834 , 836, 838 , 840) اما اذا كانت غير ذلك يستخدم قانون الاستيفاء الخطى مثلا 832.8 تقع بين 832 و 834 يستخدم قانون الاستيفاء الخطى .

Private Function EvenInterpolation(ByVal x As Double) As Double
    Dim x1 As Double, x2 As Double
    Dim y1 As Double, y2 As Double
    Dim result As Double
    
    ' التحقق إن كان x عدد صحيح زوجي
    If x = Int(x) And x Mod 2 = 0 Then
        EvenInterpolation = x
        Exit Function
    End If
    
    ' تحديد الزوجي الأصغر والأكبر
    x1 = Int(x / 2) * 2        ' الزوجي الأصغر
    x2 = x1 + 2                ' الزوجي الأكبر
    
    ' في هذه الحالة y تساوي نفس قيمة x1 و x2 (يعني y=x للزوجيات)
    y1 = x1
    y2 = x2
    
    ' تطبيق الاستيفاء الخطي
    result = y1 + (x - x1) / (x2 - x1) * (y2 - y1)
    
    EvenInterpolation = result
End Function

مثال

MsgBox EvenInterpolation(834)    ' يعطي 834 (لأنه زوجي صحيح)
MsgBox EvenInterpolation(832.8)  ' يعطي 832.8 (لأنه بين 832 و 834 باستخدام الاستيفاء)
MsgBox EvenInterpolation(835.2)  ' يعطي 835.2 (بين 834 و 836)