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