# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > سوال: اعدادی که بر 3 بخش پذیرند؟؟؟؟

## SHD.NET

سلام . 
ما یه عدد توی تکست باکس وارد می کنیم که می خواهیم ببینیم این عدد بر 3 بخش پذیره یا نه.

فرمول بخش پذیری اعداد بر 3 توی ریاضی اینه: *اعدادی بر3 بخش پذیرند که مجموع رقم هایشان بر 3 بخش پذیر باشد*.

حالا من یه دکمه دارم که چک کنه ببینه بر 3 بخش پذیره یا نه.

پس باید روی دکمه کدی رو بنویسم که ابتدا ارقام تکست باکس رو با هم جمع بزنه . بعد چک کنه که اگر ارقام جمع شده تقسیم بر 3 یک عدد اعشاری در اومد یعنی بخش پذیر نیست و اگر غیر از این بود یعنی بخش پذیره .

ولی من نمیدونم که باید به چه صورت این رو به صورت کد بنیویسم.

ممنون میشم اگ راهنماییم کنین.

فک می کنم تمام جزییات رو ذکر کردم و توضیح کاملی رو دادم ولی اگ کسی منظورمو متوجه نشد بگه تا دقیق تر توضیح بدم
__________________________________________________  ______________________________________________
کسایی که اکثر مواقع آنلاین هستند و تسلط کامل به این زبان دارن آیدی منو ادد کنن تا بتونم بیشتر در زمینه های مختلف ازشون راهنمایی بگیرم . seyed.dehnavi@yahoo.com
برای چت کلیک کنید

----------


## علی متقی پور

سلام دوست عزیز
برای اینکار باید عددی وارد شده در تکست باکس رو به اجزاش تقسیم کنید ( با متد substring )
ولی قبل از اینکار باید بشمارید چند کاراکتره ( به متد count ) تا بعد اونو به همون تعداد تقسیم کنید
و بعد هر کاراکتر رو به یعد عدد تبدیل و بعد جمعش کنید
البته توجه کنید که نیاز هست که کنترل دقیق روی ورودی داشته باشید تا کارکاترهای غیر عددی وارد نشن وگرنه برنامه غاطی میکنه

پاورقی : شاید خود سی شارپ متدی برای همه اینکارها داشته باشه ولی من بهر حال بی اطلاعم

----------


## SHD.NET

> برای اینکار باید عددی وارد شده در تکست باکس رو به اجزاش تقسیم کنید ( با متد substring )


میشه یه مثال بزنید . چون من تا حالا با این متد کار نکردم




> البته توجه کنید که نیاز هست که کنترل دقیق روی ورودی داشته باشید تا کارکاترهای غیر عددی وارد نشن وگرنه برنامه غاطی میکنه


بله . این کار و کردم از قبل که فقط عدد بپذیره


در آخر باید تقسیم بر 3 بشه که ببینم عدد طبیعیه یا اعشاری . 
این کارو چجوری انجام بدم؟

----------


## arash020

سلام

ببین اینو می خواستی؟

Dim i As Integer
i = Val(Text1.Text) / 3
'MsgBox i * 3 '(Val(Text1.Text) - i)
If Val(Text1.Text) - (i * 3) = 0 Or Text1.Text = 1 Then
MsgBox "است"
ElseIf (Val(Text1.Text) - (Val(Text1.Text) / 3)) <> 0 Then
MsgBox ".نیست"
End If

----------


## علی متقی پور

> میشه یه مثال بزنید . چون من تا حالا با این متد کار نکردم
> 
> 
> بله . این کار و کردم از قبل که فقط عدد بپذیره
> 
> 
> در آخر باید تقسیم بر 3 بشه که ببینم عدد طبیعیه یا اعشاری . 
> این کارو چجوری انجام بدم؟


راستش من وی بی را خیلی یادم نمونده و این متد ها رو سی شارپ داره. تقریبا مطمئنم تو وی بی هم همین اسامی را دارن.

----------


## h_a_m_i_d

سلام دوستان عزیز برای فهمیدن بخش پذیری اعداد راهای ساده تری هم هست
اینم کد

if val(textbox1.text) mod 3=0 then
msgbox ("بخش پذیر است")
else
msgbox ("بخش پذیر نیست")
end if
موفق باشید

----------


## h_a_m_i_d

ببخشید گفتم شاید کد رو متوجه نشی این تایپیک رو زدم
ساده ترین روش برای بررسی بخش پذیری اعداد به یک عدد خاص اینه که بررسی کنیم ببینیم باقیمانده تقسیم ان عدد به 3 برابر با 0 باشه
یعنی عدد 33 رو اگه به 3 تقسیم کنیم میشه 11 و باقیمانده هم میشه 0 پس یعنی بخش پذیره
حالا برای بدست اوردن باقیمانده دو تقسیم از mod استفاده میشه
این توضیحاتی که باید بدونی
در خط اول از تابع val برای تبدیل رشته به عدد استفاده کردیم تا اگر کاربر حتی متنی هم وارد کرد تنها قسمت عددی انتخاب شود
و بررسی کردیم که اگر باقیمانده جعبه متن اول برابر با 0 بود یعنی بخش پذیر است و در غیر اینصورت بخش پذیر نیست
ببخشید اینقدر زیاد توضیح دادم چون سطح کار کرد تون با vb رو نمیدونستم
امیدوارم تونسته باشم کمکتون کنم
موفق باشید

----------


## FastCode

از این قشنگتر نتونستم
bool Mod3(string Number){
    int Sum = 0
    for(int n = 0;n != Number.Length;n++)
    {
        char Current = Number[n];
        if ((Current < 0x0030) || (Current > 0x0039)) throw new ArgumentOutOfRangeException("Number");
        Sum +=  Current - 0x0030;
        if (Sum > 10)
            Sum -= 9;
    }
    return (Current == 0) || (Current == 3) || (Current == 6) || (Current == 9);
}

موقعی که میخواستم paste کنم توی Editer ه Forum یادم اومد VB ه.

----------

