منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سؤال: كيف يمكن التقريب لأقرب 5 ارقام
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
الف شكر لك اخي الفاضل
كود :
If Text6.Text / 2 < 4 Then
Text8.Text = 4
End If
If Text6.Text / 2 > 4 Then
Text8.Text = Text6.Text / 2
End If
فاضل text8.text
وهو عباره عن الحديد وعدد الحديد
السلام عليكم

- على حسب فمهي مما قرأته من الردود جرب هذا الكود وضعه داخل كود الزر الذي يقوم بالتنفيذ :-

كود :
Dim A As Integer

A = Val(Trim(Text5.Text)) Mod 5
IF A > 0 Then
Text5.Text = Val(Trim(Text5.Text)) + (5-A)
End IF
A = Val(Trim(Text8.Text)) Mod 2
IF A > 0 Then
Text8.Text = Val(Trim(Text8.Text)) + (2-A)
End IF

- تحياتي .
اخي الفاضل vb coder
سأشرح لك الامر
كالتالي عندي تكست6 وتكست 8
تكست 8=تكست6 على 2
بشرط الا يقل عن 4 اسياخ فقمت بكتابة هذه الدالة
كود :
If Text6.Text / 2 < 4 Then
Text8.Text = 4
End If
If Text6.Text / 2 > 4 Then
Text8.Text = Text6.Text / 2
End If
ولكن هناك مشكلة اخرى انه لا يوجد في الاعداد نص سيخ او عدد فردي من الاسياخ في الاعمدة
لذلك لابد من تقريب اي عدد فردي او اي عدد به كسر الى عدد زوجي
2 ومضاعفاتها اي ان الاسياخ تكون اما 4 او 6 او 8 او 10 او 12 او 14 او 16 الخ
فأرجوا اعادة سياغة الكود مرة اخرى وشكرا
طيب تعديل على كودك :

كود :
Dim A As Integer

If Val(Trim(Text6.Text)) / 2 < 4 Then
Text8.Text = "4"
End If
If Val(Trim(Text6.Text)) / 2 > 4 Then
A = (Val(Trim(Text6.Text)) / 2) Mod 2
IF A > 0 Then
Text8.Text = (Val(Trim(Text6.Text)) / 2) + (2-A)
Else
Text8.Text = Val(Trim(Text6.Text)) / 2
End IF
End If
لسه بيعطي كسور
ولم يعطي مضاعفات الرقم 2
كود :
Dim A As Double
Dim B As Double

B =  Val(Trim(Text6.Text)) / 2
If B <= 4 Then
Text8.Text = "4"
ElseIF B > 4 Then
A = B Mod 2
IF A > 0 Then
Text8.Text = B + (2-A)
Else
Text8.Text = B
End IF
End If
لم يحدث شئ
ولم يقرب لاي رقم عشري او لرقم زوجي
قمت ببرمجتها والحمد لله وهذا هو الكود للاستفادة وشكرا لأخواننا

كود :
If Val(Text6.Text / 2) < 4 Then
Text8.Text = 4
End If
If Val(Text6.Text / 2) > 4 Then
Text8.Text = Round2Digit(Val(Text6.Text / 2))
End If
End Sub

    Private Function Round2Digit(num As Integer)
    If (num >= 2) And (num Mod 2) = 0 Then
        Round2Digit = num
        Exit Function
    End If
    Round2Digit = num Mod 2
    If Round2Digit >= 4 Then
        Round2Digit = num - Round2Digit + 9
    Else
        Round2Digit = num - Round2Digit + 2
    End If
    If num = 0 Then Round2Digit = 0
    
    
End Function
أنا كنت . أكتب الردرد من الموبايل والآن من الكمبيوتر . جرب هذا الكود :
كود :
Dim A As String
Dim B As Double
Dim C As String
Dim D As String

A = Val(Trim(Text6.Text)) / 2
If InStr(1, A, ".") <> 0 Then
   B = Val(Mid$(A, InStr(1, A, ".")))
   C = Val(Left$(A, InStr(1, A, ".") - 1))
   If C Mod 2 > 0 Then
      D = A + (1 - Val(B))
   Else
      D = A + (2 - Val(B))
   End If
Else
   If Val(A) Mod 2 > 0 Then
      D = A + 1
   Else
      D = A
   End If
End If

If D <= 4 Then
   Text8.Text = "4"
Else
   Text8.Text = D
End If
الصفحات : 1 2 3