PDA

View Full Version : پیدا کردن نزدیک ترین عدد به عدد تکست باکس از یک لیست



MSROTOK
سه شنبه 19 اسفند 1393, 04:31 صبح
سلام خوبید دوستان گرامی؟
چطوری میشه یک عدد که به عدد داخل تکست باکس نزدیک هست از یک لیست پیدا کنیم؟ حالا اون لیست چه فایل متنی باشه چه تکست باکس چه لیست باکس و ...
مثلا من یک لیست به شکل زیر دارم :
8
12
15
30
55
70
85
90
120
300
....
حالا وقتی داخل تکست باکس نوشتم 7 برنامه عدد 8 پیدا کنه یا نشون بده توسط msgbox یا ...
یا نوشتم 9 برنامه 12 پیدا کنه
خلاصه نزدیکترین عدد رو از لیست پیدا کنه

seven7777777
سه شنبه 19 اسفند 1393, 08:48 صبح
در واقع شما دنبال یک الگوریتم هستید و ربطی به زبان برنامه نویسی نداره
مشکل خاصی نیست
الگوریتم های جستجوی زیادی توی همین و سایت و اینترنت وجود داره
کافیه از یکی از اون ها استفاده کنید تا نزدیکترین عدد رو پیدا کنید
در واقع شما جای عدد خودتون رو در این لیست پیدا می کنید
و قائدتا عنصر قبلی یا بعدی اون بسته به فاصله نزدیک ترین عدد میشن
به هر حال الگوریتم های حبابی ، سریع و ... هستند که کافیه جستجو کنید

MSROTOK
سه شنبه 19 اسفند 1393, 17:13 عصر
خیلی ممنون از دوستان
روش مرتب سازی که لازم نیست چون لیست رو خود وارد میکنم و به صورت مرتب هستش
میشه برای list count مثال بزنید یا نمونه ای

MSROTOK
چهارشنبه 20 اسفند 1393, 12:06 عصر
سلام
یک چیز یادم رفت بگم
این چیزی که من میخوام اگر عدد 10 وارد کردم نزدیکترین عددی که از 10 بزرگتره انتخاب و پیدا بشه
مثلا لیست من اینه :
15
20
40
60
65
75
...
خب وقتی من 16 رو تو تکست باکس نوشتم نمیخوام عدد نزدیک کوچکتر از خودش هم پیدا کنه، فقط میخوام نزدیکترین عدد که از خودش بزرگتره انتخاب کنه
الان برای عدد 16 که مینویسم برنامه عدد 20 برگردونه و پیدا کنه
اینجوری فکر کنم زیاد پیچیده نشه برنامه درسته؟
من خیلی جستجو کردم چیزی پیدا نکردم :ناراحت:
توی این انجمن و گوگل و انجمنهای خارجی هم چیزی برای vb6 پیدا نکردم
برای زبانهای دیگه بود اما بدرد من نمیخوره
دوستان لطفا کمک کنید.

vbhamed
پنج شنبه 21 اسفند 1393, 14:46 عصر
سلام
خیلی ساده است، با یک حلقه تو لیست شروع به حرکت کنید به هر آیتمی رسیدید اون رو با عدد خودتون مقایسه کنید اگر از عدد شما بزرگتر بود پس جواب مورد نظر همین آیتمه
البته اگر تعداد عناصر خیلی زیاد باشه به جای حرکت خطی می‌تونید از جستجوی دودویی استفاده کنید

MSROTOK
پنج شنبه 21 اسفند 1393, 19:05 عصر
سلام
خیلی ساده است، با یک حلقه تو لیست شروع به حرکت کنید به هر آیتمی رسیدید اون رو با عدد خودتون مقایسه کنید اگر از عدد شما بزرگتر بود پس جواب مورد نظر همین آیتمه
البته اگر تعداد عناصر خیلی زیاد باشه به جای حرکت خطی می‌تونید از جستجوی دودویی استفاده کنید
خیلی ممنون
میشه یک مثال ساده بزارید

سید حمید حق پرست
پنج شنبه 21 اسفند 1393, 19:20 عصر
سلام
این یک نمونه ساده که اگر عددهای listbox با عدد مورد نظر مساوی یا بزرگتر باشه پیدا میکنه :
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
If List1.List(i) >= Text1.Text Then
List1.ListIndex = i
Exit For
End If
Next i
End Sub
موفق باشید.

paul wesley
چهارشنبه 26 فروردین 1394, 22:07 عصر
سلام
اگه لیستتون مرتب نیست میتونین از این روش استفاده کنید
به عدد ورودیتون یکی یکی اضافه کنین و بعد از هر بار اضافه کردن اون رو با اعداد درون لیستتون مقایسه کنید و اگر عددی وجود داشت اون رو چاپ کنه
به عنوان مثال اگه لیست شما اینجوری باشه
10
17
19
22
5
20
و عدد ورودیتون عدد 15 باشه ابتدا اون رو به 16 تبدیل میکنه و با همه ی اعداد مقایسه میکنه و چون عدد 16 وجود نداره عدد ورودیتونو به 17 تغییر میده و بعد از چک کردن مجدد عدد 17 درون لیست رو پیدا میکنه و میتونین با یک msgbox اون رو نمایش بدین.:لبخندساده::لبخندساده: