PDA

View Full Version : سوال: جداکردن اعداد



mohammad1314
یک شنبه 28 آبان 1391, 16:14 عصر
سلام.
میخوام برنامه ای بویسم که از کاربر یک عدد رو بگیره ( تعداد ارقامش معلوم نیست) بعد رقم هاش رو جدا کنه و اون هایی که بر 2 و 4 بخش پذیرند رو در لیست باکس نشون بده .
مثلا اگر کاربر عدد 687 رو وارد کرد ، هر رقمش رو به صورت مجزا چک کنه هرکدوم که بر 4 و 2 بخش پذیر بودن ، در لیست باکس نشون بده.ممنون
ممنون میشم برنامه با حلقه for باشه و از توابع left ، right و ... استفاده نشه.

SHD.NET
یک شنبه 28 آبان 1391, 16:56 عصر
از اونجا که تنها اعداد تک رقمی که به 4 بخش پذیرند ، 4 و 8 می باشد و تنها اعداد تک رقمی که به 2 بخش پذیره، 2.4.6.8 میباشد من از این روش استفاده کردم . وگرنه این روش توی اعداد دو رقمی و دورقمی به بالا کاربرد نداره:

مواد مورد نیاز:
یک عدد TEXTBOX
یک عدد LISTBOX
یک عدد BUTTON

این کد رو در رویداد کلیک Button1 بنویس:

If TextBox1.Text = Nothing Then Exit Sub
Dim ch As String
ListBox1.Items.Clear()

For i = 1 To Len(TextBox1.Text)
ch = Mid(TextBox1.Text, i, 1)
If ch = 4 Or ch = 8 Then ListBox1.Items.Add(ch.ToString + " : بر 4 بخش پذیر است")
If ch = 2 Or ch = 4 Or ch = 6 Or ch = 8 Then ListBox1.Items.Add(ch.ToString + " بر 2 بخش پذیر است")
Next


\\\ موفق باشید //

mohammad1314
یک شنبه 28 آبان 1391, 17:24 عصر
اگه روش دیگه ای هم دارین که جواب میده ، ممنون میشم بنویسین.

SHD.NET
یک شنبه 28 آبان 1391, 17:33 عصر
اگه روش دیگه ای هم دارین که جواب میده ، ممنون میشم بنویسین.

اون دو خط آخری که قبل next نوشتم بهترین روش میشه گفت برای پیدا کردن بخش پذیر های 2 و 4 هستش . روش های دیگه که گفتم طولانی ترن . به درد اینجا نمیخورن . حالا اگه خواستید بخش پذیرهای عدد 4 رو پیدا کنید از این روش هم میشه استفاده کرد . ولی همونطور که گفتم اینجا کاربرد ندارن.

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

\\\ موفق باشید ///

mohammad1314
یک شنبه 28 آبان 1391, 17:37 عصر
همان طور که گفتم اگه روشی هست که فقط با حلقه باشه و بدون توابع left right mid باشه ممنون میشم بگین . به عبارتی با دستو رات ابتدایی باشه .

SHD.NET
یک شنبه 28 آبان 1391, 17:41 عصر
یه راه راحت ترم هستش که فکر کنم بیشتر بدردتون میخوره :
بفرما:
if val(textbox1.text) mod 4=0 then
MsgBox("بخش پذیر است")
Else
MsgBox("بخش پذیر نیست")
End If

\\\ موفق باشید ///

SHD.NET
یک شنبه 28 آبان 1391, 17:44 عصر
همان طور که گفتم اگه روشی هست که فقط با حلقه باشه و بدون توابع left right mid باشه ممنون میشم بگین . به عبارتی با دستو رات ابتدایی باشه .

دستورات right , left , mid از ساده ترین دستورات هستند . فکر نکنم بدون این دستورات بشه کاری رو که شما گفتید انجام داد

اگر آموزش این دستورات رو خواستید بگید تا بزارم . چون دستورات ساده و پر کاربردی هستند تو این جور برنامه ها

\\\ موفق باشید ///

فرید نجفلو
یک شنبه 28 آبان 1391, 23:23 عصر
سلام

Try
TextBox1.Text = CStr(CLng(TextBox1.Text))
For Each aDig In TextBox1.Text
If CInt(aDig.ToString) Mod 2 = 0 OrElse CInt(aDig.ToString) Mod 4 = 0 Then
ListBox1.Items.Add(aDig)
End If
Next

Catch ex As Exception
MsgBox("لطفا یک عدد صحیح وارد کنید")

End Try

mohanad1993
دوشنبه 06 آذر 1391, 13:38 عصر
سلام اینم جواب شما
از mid,right,left... استفاده نشده

For Each i In TextBox1.Text
If Val(i) Mod 2 = 0 OrElse Val(i) Mod 4 = 0 Then
ListBox1.Items.Add(i)
End If
Next