برنامه ای در ویژوال بیسیک دات نت که ترکیب n شی از k شی را محاسبه کند.
Public Class Form1 'C(n,k) by Amir 'www.samiantec.ir Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim n, k, s As Integer n = Val(TextBox1.Text) k = Val(TextBox2.Text) If k > n Then MsgBox("Error: K>N is false") Else s = (factorial(n)) / (factorial(k) * factorial(n - k)) TextBox3.Text = s End If End Sub Function factorial(ByVal n As Integer) As ULong Dim m As ULong m = 1 For i = 2 To n m = m * i Next Return m End Function End Class
این برنامه الگوریتم دیگری هم دارد .. نظر دهید
مشکل این کد در زبان سی اینه که از یه عددی به بعد اوورفلو میشه
چطور میشه برطرفش کرد؟
بسته به نوع متغیرها در هرزبانی از یک حدی به بعد Overflow داده میشه، راه برای حل این مشکل انتخاب کردن نوع داده بزرگ تر هست. به عنوان مثال اگر در سی از ULLONG استفاده کنید تا حدودی مشکلتون حل میشه.
البته این نمونه کد داده شده برای برنامه نویس های مبتدی هست، اگر به دنبال راه بهینه و سریعتر هستید نباید از توابع مستقل مثل Factorial برای حل این مسئله استفاده کنید.