rezaderaz
10-01-2014, 11:40
من باید برای استادمون از توی جزوه ای که بمون داده یک پروژه ویژوال بیسیک بنویسم که گفته داخلش یک غلطی داره که باید درستش کنید اما من نمیدونم باید کجاشو تغییر بدم که درست بشه کسی میتواند کمکم کند آیا؟
برنامش این طوریه:
برنامه ای بنویسید که با کلیک روی دکمه اول 5 عدد تصادفی بین صفر تا ده ایجاد کرده و دروت یک آرایه 5 عنصری قرار دهد. (اندیس ارایه یک شروع شود ) سپس با کلیک بر روی دکمه دوم یک عدد را از ورودی دریافت کرده و با استفاده از الگوریتم جست و جوی دودویی آن را درون ارایه جست و جو کند. خروجی این برنامه باید در صورت پیدا نشدن مقدار مورد نظر پیغام " یافت نشد" باشد و در صورت پیدا شدن آن شماره اندیس عنصری که کلید جست و جو با آن برابر است باشد.
کد های بخش جنرال:
Option Explicit
Option Base 1
Dim x(5) As Integer
کد های دکمه اول:
Private Sub Command1_Click()
Randomize Timer
Dim a As Integer
For a = LBound(x) To UBound(x)
x(a) = Rnd * 15
Next
Dim i, j, tmp As Integer
For i = UBound(x) To LBound(x) Step -1
For j = LBound(x) To i
If j = i Then Exit For
If x(j) > x(j + 1) Then
tmp = x(j + 1)
x(j + 1) = x(j)
x(j) = tmp
End If
Next
Next
End Sub
کد های دکمه دوم:
Private Sub Command2_Click()
Dim key As Integer
key = Val(InputBox("enter search key"))
Dim first, middle, last As Integer
first = LBound(x)
last = UBound(x)
Do While first <= last
middle = (first + last) \ 2
If key = x(middle) Then
MsgBox middle
Exit Sub
ElseIf key < x(middle) Then
last = middle - 1
Else
first = middle + 1
End If
Loop
MsgBox "yaft nashod"
End Sub
وقتی که برنامه را اجرا میکنم هر عددی رو که وارد میکنم یافت نشد میزند و وقتی روی دکمه اول کلیک میکنم هیچ چیزی نشونم نمیده فکر میکنم اشکال از دکمه اول باشه یکی در راه خدا میتواند کمکی به من بکند آیا؟
برنامش این طوریه:
برنامه ای بنویسید که با کلیک روی دکمه اول 5 عدد تصادفی بین صفر تا ده ایجاد کرده و دروت یک آرایه 5 عنصری قرار دهد. (اندیس ارایه یک شروع شود ) سپس با کلیک بر روی دکمه دوم یک عدد را از ورودی دریافت کرده و با استفاده از الگوریتم جست و جوی دودویی آن را درون ارایه جست و جو کند. خروجی این برنامه باید در صورت پیدا نشدن مقدار مورد نظر پیغام " یافت نشد" باشد و در صورت پیدا شدن آن شماره اندیس عنصری که کلید جست و جو با آن برابر است باشد.
کد های بخش جنرال:
Option Explicit
Option Base 1
Dim x(5) As Integer
کد های دکمه اول:
Private Sub Command1_Click()
Randomize Timer
Dim a As Integer
For a = LBound(x) To UBound(x)
x(a) = Rnd * 15
Next
Dim i, j, tmp As Integer
For i = UBound(x) To LBound(x) Step -1
For j = LBound(x) To i
If j = i Then Exit For
If x(j) > x(j + 1) Then
tmp = x(j + 1)
x(j + 1) = x(j)
x(j) = tmp
End If
Next
Next
End Sub
کد های دکمه دوم:
Private Sub Command2_Click()
Dim key As Integer
key = Val(InputBox("enter search key"))
Dim first, middle, last As Integer
first = LBound(x)
last = UBound(x)
Do While first <= last
middle = (first + last) \ 2
If key = x(middle) Then
MsgBox middle
Exit Sub
ElseIf key < x(middle) Then
last = middle - 1
Else
first = middle + 1
End If
Loop
MsgBox "yaft nashod"
End Sub
وقتی که برنامه را اجرا میکنم هر عددی رو که وارد میکنم یافت نشد میزند و وقتی روی دکمه اول کلیک میکنم هیچ چیزی نشونم نمیده فکر میکنم اشکال از دکمه اول باشه یکی در راه خدا میتواند کمکی به من بکند آیا؟