PDA

View Full Version : سوال: یافتن کلمات پر تکرار در فایل های متنی در پاسکال



softirani
جمعه 11 آذر 1390, 13:28 عصر
ممنون به زبان پاسکال می خواهم هر چه سریعتر.:گریه::گریه::گریه:

Mahmood_M
جمعه 11 آذر 1390, 13:37 عصر
لطفا قبل از فعالیت ، قوانین سایت رو مطالعه کنید ، در این سایت به تمرینات درسی جواب داده نخواهد شد ! ، خودتون نوشتن برنامه رو شروع کنید و مشکلاتتون رو به صورت جزئی در اینجا مطرح کنید

موفق باشید ...

softirani
جمعه 11 آذر 1390, 13:43 عصر
با سلام من این برنامه رو سه بار نوشتم ولی موفق نبودم
هر کلمه رو از فایل متنی داخل یک فایل باینری ریختم تا قابل مقایسه باشه ولی مشکل اینجاست که اگر بخواهم از اولین کلمه رو بخواهم با کلمات بعد از خود مقایسه کنم یک تعداد برای کلمه ی اول پیدا میکنم و در سری های بعدی وقتی به کلمه ای که مانند کلمه ی اول است می رسم یک بار هم این کلمه رو می شمرد می خواستم برنامه طوری باشد که هر وقت کلمه اول رو شمرد آن را از باینری ها حذف کند و مشکل بعدی در مقایسه کلمات با حروف کوچک و بزرگ است.
من همه ی برنامه هامو خودم می نویسم منتها واقعا با این مشکل دارم . ممنون:گریه:

SAASTN
شنبه 12 آذر 1390, 01:46 صبح
هر کلمه رو از فایل متنی داخل یک فایل باینری ریختم تا قابل مقایسه باشه ولی مشکل اینجاست که اگر بخواهم از اولین کلمه رو بخواهم با کلمات بعد از خود مقایسه کنم یک تعداد برای کلمه ی اول پیدا میکنم و در سری های بعدی وقتی به کلمه ای که مانند کلمه ی اول است می رسم یک بار هم این کلمه رو می شمرد می خواستم برنامه طوری باشد که هر وقت کلمه اول رو شمرد آن را از باینری ها حذف کند
من در کل متوجه نشدم که چیکار می کنی و مشکل چیه! ولی برای حل این مسئله نیازی به استفاده از اون فایل باینری نیست، شما باید از یه لیست پیوندی یا یه درخت دودویی استفاده کنی. ساختمان داده هر کدوم از نود ها هم از دوتا فیلد تشکیل شده، یکی حاوی کلمه و اون یکی نگهدارنده تعداد تکرار کلمه. حالا شروع می کنی به پردازش فایل متنی، هر کلمه جدیدی که پیدا کردی، توی لیست(یا درخت) می گردی ببینی اون کلمه قبلا اضافه شده یا نه، اگه اضافه شده بود که محتویات فیلد تعداد تکرار رو یکی افزایش می دی، اگر هم کلمه قبلا اضافه نشده بود که یه نود جدید با تعداد تکرار یک به لیست اضافه می کنی. بعد از اتمام کار هم می گردی سه تا کلمه پر تکرار رو تو لیست پیدا می کنی.

مشکل بعدی در مقایسه کلمات با حروف کوچک و بزرگ است.
توی دلفی تابع CompareText دوتا رشته رو بدون لحاظ کردن حروف بزرگ و کوچیک مقایسه می کنه، حالا نمی دونم تو پاسکالم این تابع وجود داره یانه. اگه نبود باید موقع مقایسه دوتا رشته، هر دو با تابع LowerCase به حروف کوچیک تبدیل بشن و بعد مقایسه روی اونها صورت بگیره. برای کمتر کردن تعداد فراخونی این تابع بهتره کلمات رو با حروف کوچیک توی لیست درج کنی تا یه ور مقایسه نیازی به فراخونی اون تابع نداشته باشه.

کلا بهتره حل این مسئله رو تو تالار ساختمان و الگوریتم پی گیری کنی و اینکه بهتره بجای پاسکال از Console Application خود دلفی استفاده کنی.

موفق باشی