PDA

View Full Version : الگوریتم های جستجو



Aminch.pc
پنج شنبه 23 اسفند 1386, 00:21 صبح
سلام دوستان
چند وقتی هست که دارم دنبال یه الگوریتم توپ برای جستجوی فایل ها می گردم.
اگه کسی از دوستان نمونه برنامه یا الگوریتم خاصی به جز الگوریتم های دودویی و جست و جوی خطی سراغ داره ممنون می شم که معرفی کنه.
در ضمن اگه همراه نمونه برنامه باشه خیلی بهتره.
ممنون

ali_habibi1384
پنج شنبه 23 اسفند 1386, 21:33 عصر
از این الگوریتم بهتر هم مگر هستش؟

aidin1386
پنج شنبه 23 اسفند 1386, 22:56 عصر
نمی دونم منظورت گشتن توی یه فایل متن یا نه؟!
اما در هر صورت این برنامه که گذاشتم فایل و متن هدف رو از شما می گیره و جای اولین کاراکتر متن هدف رو مشخص می کنه(البته توی یک لیست باکس).
همه چیز تو برنامه توضیح داده شده.

Aminch.pc
پنج شنبه 23 اسفند 1386, 23:54 عصر
سلام
فکر می کنم نتونستم منظورم خوب بیان کنم پس در زیر بیشتر توضیح می دم.
من یک برنامه توسط فایل های تصادفی نوشتم که می خوام کاربر وقتی یک کلمه رو جستجو کرد تمامی مواردی که در اول، آخر یا وسط اون مطابق با اون کلمه هست رو توی یک کمبو باکس لیست کنه مثلاً اسم فیلد من Name هست و کاربری میاد و اسم علی رو جستجو می کنه حالا قبلاً چند تا اسم (مثلاً علیرضا، محمد علی و ...) توی فایل ثبت شدن و من می خوام کاری کنم که تمامی این موارد توی یک کمبو باکس لیست بشه. ممنون می شم اگه جواب من رو با مثال عملی توضیح بدید. در ضمن یکی از دوستان نوشته بود بهتر از الگوریتم های دودویی و خطی الگوریتم های بهتری وجود نداره ولی من هر چه توان داشتم به کار بردم ولی نتونستم کاری از پیش ببرم.

aidin1386
جمعه 24 اسفند 1386, 17:59 عصر
اگه منظورت Random access هست من یک مثال این جا می زارم. البته فقط با زبان انگلیسی کار می کنه. هر چی زور زدم زبان فارسی روش عمل نکرد. امیدوارم بپسندی.

Aminch.pc
جمعه 24 اسفند 1386, 22:21 عصر
ممنون
خیلی کمکم کرد
البته هنوز روی برنامه خودم امتحان نکردم ولی اگه هنوز به جواب نرسیدم دوباره مزاحمتون می شم.
اگه برنامه های دیگری در این زمینه داشتید ممنون می شم برام تو همین تاپیک بزارید.

aidin1386
جمعه 24 اسفند 1386, 22:40 عصر
خواهش می کنم. کاری نبود!
خوش حال می شم بهتون کمک کنم.:لبخند:

Aminch.pc
شنبه 25 اسفند 1386, 23:25 عصر
من از سورس شما استفاده کردم و به خوبی جواب داد فقط تنها مشکلش به قول خود شما با کاراکترهای فارسی هستش من هم دارم روش کار می کنم.
می خواستم بدونم شما نظری برای این مشکل ندارید یعنی هیچ راه حلی به نظر شما نمی آد.
ممنون می شم اگه در این زمینه هم بتونید کمکم کنید.

aidin1386
یک شنبه 26 اسفند 1386, 13:28 عصر
فهمیدم باید چیکار کنیم!
فایل تصادفیتونو با notepad باز کنید و مثل عکسی که ضمیمه کردم عمل کنی.البته عکس تو یک فایل SFX هستش. بخاطر این که خیلی گنده بود.اما چون فایل از نوع exe می شد مجبور شدم دوباره به فایل زیپ تبدیلش کنم.
فایل جدید برنامه با فایل تصادفیش رو هم ضمیمه کردم.

Aminch.pc
دوشنبه 27 اسفند 1386, 01:17 صبح
خیلی داری به من لطف می کنی دوست خوبم.
ولی من توی برنامم قابلیتی رو گذاشتم که کاربر بتونه فایل رو هر کجای هاردش که بخواد درست کنه و اگه قرار باشه که کاربر بیاد و این کار ها را خودش انجام بده برنامه دیگه به درد نمی خوره.
اگه لطف کنید و نحوه این کار رو (منظورم باز کردن با نات پد) با کد نویسی برام قرار بدید ممنون می شم.
یعنی ما بتونیم این کار رو از طریق خود برنامه انجام بدیم...

Aminch.pc
دوشنبه 27 اسفند 1386, 21:19 عصر
سلام آیدین جون
نتونستی کاریش کنی؟
منتظرتم.

aidin1386
سه شنبه 28 اسفند 1386, 07:38 صبح
نگران نباش یه کاریش می کنم. فعلاً باید منتظر باشی:لبخند:

aidin1386
سه شنبه 28 اسفند 1386, 08:02 صبح
بگو ببینم، اصلاً برنامه رو که جدید دادم دانلود کردی.

aidin1386
سه شنبه 28 اسفند 1386, 10:41 صبح
دو راه وجود داره که باهاش می تونی این کارو انجام بدی. یکی این که از دستور STRconv استفاده کنی که زیاد استاندارد نیست.
برای استفاده از دستور باید به صورت زیر عمل کنی

strconv stringname,vbunicode,Unicode Id

برای مثال در این قسمت می تونی فایل رو باز کنی و محتویاتش رو توی یک متغیر به نام S بریزی بعد از دستور زیر استفاده کنی.

(d= strconv(s,vbunicode,LRM

حالا دوباره فایل رو برای Output باز کنی و d رو داخلش خالی کنی که از نظر من زیاد استاندارد نیست.

راه دوم اینه که یک فایل تکست با همون یونیکد و فرمت ایجاد کنی و در پوشه ی برنامت قرار بدی و اسم فایل رو هم مثلاً d.rnd بذاری. حالا مثلاً طرف جای فایل خودش رو با یک کامان دیالوگ انتخاب می کنه و دکمه رو کلیک می کنه. حالا می تونیم از دستور زیر استفاده کنیم.

filecopy app.path + "\d.rnd","commondialog1.filename

با این کار ما فایل خودمون رو به عنوان فایل نمونه در اون مسیر کپی می کنیم و شخص می تونه رو اون تغییرات ایجاد کنه.

از نظر من دومین راه حل بهتر از اولیه چون اولی به من جوابی نداد ولی دومی جواب می ده.

رخصت

Aminch.pc
سه شنبه 28 اسفند 1386, 14:30 عصر
بازم ممنون
آره برنامه رو دانلود کردم.
منم فکر می کنم راه حل دوم بهتر باشه.
در ضمن یک مشکل دیگه وجود داره و اون اینه که هنگامی که فارسی سرچ می کنم یکسری حروف نا مشخص به انتهای کلمه مورد نظر اضافه می شه.‌(به اصطلاح یکی از دوستان یخ می بنده) نظر شما در این مورد چی هست یعنی می شه کاریش کرد؟

aidin1386
سه شنبه 28 اسفند 1386, 14:34 عصر
این مشکل توی فایل من پیش اومد یا توی فایل خودت؟

Aminch.pc
چهارشنبه 29 اسفند 1386, 20:10 عصر
این مشکل توی فایل من پیش اومد یا توی فایل خودت؟


کلاً من روی هر فایلی که فارسی هست و عمل r-t-l رو روش انجام دادم این مشکل وجود داره.
مگه روی فایل های شما درست کار می کنه؟

aidin1386
جمعه 02 فروردین 1387, 02:29 صبح
با عرض تبریک جشن باستانی و ایرانی نوروز،
اولن اگه منظورت right to left، من نگفتم این کا رو انجام بده. گفتم left to right کن.
این عمل روی فایل خودم به خوبی انجام می شه.
پس اگه مشکلی داشتی از فایل خودم استفاده کن و به عنوان نمونه در نظر بگیر.
:لبخند:

Aminch.pc
جمعه 02 فروردین 1387, 12:48 عصر
بازم شرمنده که مزاحمتون می شم.
ولی شما فکر نمی کنید پیش فرض left to right باشه؟

aidin1386
شنبه 03 فروردین 1387, 01:21 صبح
چرا منم همین فکرو می کنم.
یک بار بدون تغییر در فایل، یک فایل تصادفی بساز بدون یونیکد. احتمالاً کار می کنه. اگر هم نشد دوباره همون l-t-r رو انجام بده.

aidin1386
دوشنبه 05 فروردین 1387, 03:25 صبح
ببخش منو امین جان، من الان ساعت 3 صبح دارم اینو می نویسم. من فردا ساعت 7.5 باید فرودگاه باشم. نمی تونم همچین کاری بکنم. چون برنامت به کلی با اون سیاستی که من تو برنامه هام دارم فرق داره و به طور کلی تو یک جور برنامه می نویسی منم یک جور.
یک توضیح بهت بردم. من یک فایلی رو ضمیمه می کنم. توش دوتا برنامست. یکی برات یک فایل راندوم اکسس می سازه. تو یکی دیگه یا یکمی تغییر می تونی فایل ساخته شده رو بالا بیاری و توش بنویسی. ( البته باید یه ذره سورسو تغییر بدی). این نوع سورس عمل می کنه. بهتره برای ساخت فایلت از این راه کمک بگیری. بعدش می تونی قسمت جستجوی منو به برنامت اضافه کنی تا درست عمل کنه. استفاده از دستور vbCrLf در همچین فایل هایی زیاد متعارف نیست. چون کسی به فایل کاری نداره. تو می تونی فایل رو به هم ریخته درست کنی بعدش تو برنامت سرو سامونش بدی.
امیدوارم حرفمو گرفته باشی. در هر صورت 15 روز دیگه از سفر که برگشتم خودم برات دستش می کنم.