PDA

نسخه کامل مشاهده نسخه کامل : کمک برای پروژه ویژوال بیسیک



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


وقتی که برنامه را اجرا میکنم هر عددی رو که وارد میکنم یافت نشد میزند و وقتی روی دکمه اول کلیک میکنم هیچ چیزی نشونم نمیده فکر میکنم اشکال از دکمه اول باشه یکی در راه خدا میتواند کمکی به من بکند آیا؟

Mohammad_HNF
12-01-2014, 15:37
با سلام به شما دوست عزیز
در مورد سوالتون باید بگم که برنامه از نظر الگوریتم هیچ مشکلی نداره ولی از نظر سوالی چند تا مشکل داره(بعنی اگر طبق سوال برنامه رو بنویسیم چند تا مشکل داره ولی در کل هیچ مشکلی نداره)
اینکه کد مربوط به کامند اول در حلقه ی تکرار a باید این کار را انجام بدید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چون در سوال گفته شده که باید اعداد تصادفی بین صفر و ده باشند ولی در کد بالا بین صفر و پانزده می باشد
و این که وقتی روی دکمه ی اول فشار می دید چیزی نشون نمیده برای اینه که شما در اونجا هیچ خروجی ندارید پس نباید چیزی نمایش بده
و اینکه در کامند دوم هر عددی که وارد می کنید خروجی شما "یافت نشد" می باشد برای این است که واقعا عدد شما یافت نشده است
برای این که بتونید ببینید که در آرایه یه شما چه اعدادی هست باید اعداد آرایه را بعد از سورت شدن (مرتب شدن) چاپ شود تا بتونید عددی رو وارد کنید که در آرایه وجود دارد
این کد را به قسمت آخر کامند اول اضافه کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آرایه هم بخاطر استفاده از دستور Option Base اندیس آن از یک شروع میشه یعنی اگر عدد دستور رو 0 قرار بدید و یا از این دستور استفاده نکنید اندیس از 0 شروع میشه.
امیدوارم که مشکلتون حل شده باشه :n26: