PDA

View Full Version : مبتدی: ساخت عملگر فاکتوریل



hovakhshatre
جمعه 19 اسفند 1390, 20:24 عصر
سلام به دوستان عزیز
یه سوال داشتم اینکه میخوام یک عملگر محاسبه فاکتوریل در ویژوال بیسیک بسازم که فقط با استفاده از حلقه for کار کنه. می خوام جوری باشه که وقتی عدد رو در text box وارد کنیم و بر روی button کلیک کنیم، اعداد از 1 تا اون عدد در list box نمایش داده بشه و فاکتوریل اون عدد در label به نمایش دربیاد.
ممنون از همه.83910

JaVa
جمعه 19 اسفند 1390, 20:36 عصر
اگر درست فکر کرده باشم همینه.!

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim n As Integer
Dim fact As Integer
fact = 1
n = TextBox1.Text
For i = 1 To n
fact = fact * i
ListBox1.Items.Add(fact)
Next
Label1.Text = fact

End Sub

Hybrid
جمعه 19 اسفند 1390, 22:21 عصر
سلام ، امیدوارم پروژه دانشجویی نباشه.

کد دوستمون درسته ، چند تا تغییر کوچیک دادم تا تکمیل بشه :


If Val(TextBox1.Text) > 0 Then
ListBox1.Items.Clear()
Dim i As Integer
Dim n As Integer
Dim fact As Integer
fact = 1
n = Val(TextBox1.Text)
For i = 1 To n
ListBox1.Items.Add(i.ToString())
fact *= i
Next
Label1.Text = fact

ElseIf Val(TextBox1.Text) = 0 Then
ListBox1.Items.Clear()
ListBox1.Items.Add("1")
Label1.Text = "1"
Else
MessageBox.Show("اعداد منفی فاکتوریل ندارن")
End If

JaVa
جمعه 19 اسفند 1390, 22:27 عصر
سلام ،
کد دوستمون درسته ، چند تا تغییر کوچیک دادم تا تکمیل بشه

حالا کاملتر و اصولی تر شد.

Heidari66
جمعه 19 اسفند 1390, 23:17 عصر
یه برنامه دیدم با وی بی 6 بود تا 1000 رو حساب میکرد:متفکر:
این حداکثر 170 رو ساپورت میکنه

فرید نجفلو
جمعه 19 اسفند 1390, 23:23 عصر
شما Integer ه رو تبدیل به Double کنید بیشتر ساپورت می کنه!

Mani_rf
جمعه 19 اسفند 1390, 23:25 عصر
شما Integer ه رو تبدیل به Double کنید بیشتر ساپورت می کنه!

double مقدار اعشاریه . از Inte64 و یا Long استفاده کنید.

JaVa
جمعه 19 اسفند 1390, 23:31 عصر
یه برنامه دیدم با وی بی 6 بود تا 1000 رو حساب میکرد
این حداکثر 170 رو ساپورت میکنه

شما بیا مردونگی بکن integer رو به long تبدیل کن .:قهقهه:
این حالتی::متعجب:
dim i as long
dim fact as long

Heidari66
جمعه 19 اسفند 1390, 23:32 عصر
خوب از Double استفاده کردم تا 170 رسید
integer و long که تعطیلن تا 50 هم حساب نمیکنن:لبخند:

اگه تونستید تا 1000 برسونید...:تشویق:

hovakhshatre
جمعه 19 اسفند 1390, 23:49 عصر
سلام ، امیدوارم پروژه دانشجویی نباشه.

کد دوستمون درسته ، چند تا تغییر کوچیک دادم تا تکمیل بشه :


If Val(TextBox1.Text) > 0 Then
ListBox1.Items.Clear()
Dim i As Integer
Dim n As Integer
Dim fact As Integer
fact = 1
n = Val(TextBox1.Text)
For i = 1 To n
ListBox1.Items.Add(i.ToString())
fact *= i
Next
Label1.Text = fact

ElseIf Val(TextBox1.Text) = 0 Then
ListBox1.Items.Clear()
ListBox1.Items.Add("1")
Label1.Text = "1"
Else
MessageBox.Show("اعداد منفی فاکتوریل ندارن")
End If

دستتون درد نکنه، پروژه دانشجویی نیست، من خواستم با روش حلقه for رو هم بدونم که شما لطف کردید و گفتید
باز هم ممنون

Mani_rf
جمعه 19 اسفند 1390, 23:58 عصر
چرا با تابع بازگشتی نمینویسید؟ هم ساده تره هم سریعتر.

فرید نجفلو
شنبه 20 اسفند 1390, 11:55 صبح
خوب از Double استفاده کردم تا 170 رسید
integer و long که تعطیلن تا 50 هم حساب نمیکنن:لبخند:

اگه تونستید تا 1000 برسونید...:تشویق:

جوابتون رو تو این تاپیک دادم ، 1000 واسه ما خیلی ریزه:قهقهه:
خوش باشید