السلام عليكم ورحمة الله
كما تعرفون ان اصل كل الارقام من ١-٩
فمثلا الرقم ٥٢ عبارة عن ٣+٥ =٨
الرقم ١٩٧٢ عبارة عن ٢+٧+٩+١ =١٩ والتى بدورها عبارة عن ٩+١ =10
والتي بدورها عبارة عن ٠+١ =١
اذن في كل الحالات الناتج النهائي محصور بين الارقام من ١-٩
كيف يمكن كتابة كود
بحيث نضع الرقم ١٩٧٢ =1
الرقم 2015= 5+1+0+2=8
١
ارجو الافادة
وشكرا
أهلا أخي الكريم ، جرب الكود التالي :
PHP كود :
Dim zValue As String
Dim zTotal As String
Dim I As Integer
zValue = "2015"
zTotal = "00"
Do While Len(zTotal) > 1
zTotal = "00"
For I = 1 To Len(zValue)
zTotal = Val(zTotal) + Val(Mid$(zValue,I,1))
Next
zValue = zTotal
Loop
MsgBox zTotal
(29-12-15, 06:44 AM)sami2015 كتب : [ -> ]PHP كود :
Dim ns$, tl%, i%
ns$ = Trim$(Str(2015))
For i = 1 To Len(ns$)
tl% = tl% + Val(Mid$(ns$, i, 1))
Next
MsgBox tl%
اخي الكريم
كل الشكر لك على سرعة الاجابة
ولكن عند تجريب البرنامج على الارقام التى لا تحتاج الجمع المعنوي اكثر من مرة فانه يضبط مثل رقم 2015 يعطي نتيجة صحيحة لان 5+1+0+2=8
اما الارقام التي بها جمع معنوي اكثر من مرة فانه لا يجيدها
مثال 1972 فانه يعطي 19 ولكن المفروض نجمع 1+9=10 ثم نجمع 1+0=1
لاحظ هنا كررنا الجمع اكثر من مرة
ولعل الملف المرف يوضح ذلك
اكرر شكرى لك
(29-12-15, 08:45 AM)Ahmed_Mansoor كتب : [ -> ]أهلا أخي الكريم ، جرب الكود التالي :
PHP كود :
Dim zValue As String
Dim zTotal As String
Dim I As Integer
zValue = "2015"
zTotal = "00"
Do While Len(zTotal) > 1
zTotal = "00"
For I = 1 To Len(zValue)
zTotal = Val(zTotal) + Val(Mid$(zValue,I,1))
Next
zValue = zTotal
Loop
MsgBox zTotal
الاخ الكريم احمد منصور
كل التحية والامتنان لك
الكود لا غبار عليه
بارك الله فيك
وهذا هو الكود مرفق ربما يحتاج اليه اعضاء اخرون
ارجو شرح هذا الجزء من الكود
أهلا أخي الكريم ، شكراً جزيلاً لك ، وضعت قيمة المتغير zTotal يساوي صفرين قبل اللوب وفي بدايتها لكي لايتم الخروج من اللوب إلا إذا كانت قيمته عباره عن رقم واحد أو خانه واحده .