کمک برای ساخت نرم افزار فشرده ساز

سلام

من حدود 4 ماهه که یه سایت زدم و توش بازیهارو با نرم افزار های فشرده ساز فشرده میکنم و برای دانلود میزارم اما در راه تلاش برای پیدا کردن نرم افزار هایی که بیش از حد معمول فشرده کنن تصمیم بر این گرفتم که خودم یک الگوریتم برای فشرده سازی روی کاغذ بنویسم و چون از قبل با مالتی مدیا بویلدر آشنایی داشتم فکر میکردم کار زیاد سختی نباشه ولی الان که دوباره اومدم روی کار با این نرم افزار با مشکلاتی مواجه شدم که حالا بگزریم سوال اصلی من اینه که چطوری بتونم تعین کنم که توی یک متن از یک حرف (حرف مثل ی مثل s منظورم کلمه نیست) چند بار استفاده شده مثلاً اینطوری:

a=326 بار
b=164 بار
c=54 بار

امیدوارم که منظورمو کاملاً متوجه شده باشید و بتونید کمکم کنید
 

Silver Soft

کاربر متخصص مولتی مدیا بیلدر
این روشی که شما انتخاب کردید علاوه بر این که حجم رو کم نمیکنه ، بلکه حجم رو چند برابر میکنه ، دوست عزیز نوشتن این نوع الگوریتم ها که در محدوده الگوریتم های فشارده سازی متوسط هست کار ساده ای نیست ، با روش شما مثلا الان پیدا میکنید که تعداد 299 تا حرف A در فایل هست باید آدرس این حرف ها رو هم درج کنید ، یعنی A=299 و A(1)=12 و A(2)=18 و A(n)=n و A(299)= 2344 خوب با این تعریف میدونید حجم فایل چند برابر میشه ؟

بهترین و بی دردسر ترین راه این هست که بدی برات یه پلاگین بنویسن و خودت رو با این الگوریتم ها درگیر نکنید و این کار رو به برنامه نویس بسپارید.
 
نه عزیز من من این روش رو برای ساخت الگوریتم انتخاب نکردم من روی این الگوریتم ماه ها فکر کردم و حالا دست به ساخت نرم افزارش زدم در واقع من اینطوری متوجه میشم که کدوم حرف از بقیه بیشتر تکرار شده و بعد هم تمامی حروفی که توی فایل اصلی به کار رفته رو میزارم اول فایل (البته قبل از اون هم برنامه چک میکنه که کدوم حرف اصلاً تکرار نشده و اون رو برای نمادی از کلید اینتر قرار میده و به صورت یک کارکتر اون رو اول اول مینویسه و موقع آنزیپ کردن برنامه میدونه که همیشه اولین حرف نماد کلید اینتر هست و بعد هم حروف الفبایی که در ساختار فایل وجود داره شروع میشه و با تکرار حرف اول همون حروف الفبا بسته میشه) بدین ترتیب برنامه از طرز چیدمان حروف الفبا برنامه تمامی حروف الفبا رو یک بار کنار اون حرفی که ار همه بیشتر تکرار شده قرار میده و باز به تعداد حروفی که برنامه در |آینده که آنزیپ میکنه فایل رو پیدا میکنه ما هم یک الفبای دیگر که حجم کل این 3 تا الفبا که بهتره بگم 2.5 الفبا از 10 کیلوبایت بیشتر نمیشه کنار اون میزاریم منتها این این الفبا از حروفیه که پیش بینی شده که برنامه اونهارو پیدا میکنه (موقع آنزیپ) و هرحا مثلاً r که جزو الفباییه که اصلاً تکرار نشده رو دید or بزاره و به همین ترتیب یک فایل 100 مگی (با اطلاعات تصادفی) میشه حدود 15-20 دفعه همین عمل رو روش انجام داد و هر دفعه حد اقل 70% از حجم کاسته میشه من این روش رو تست کردم و جواب خوبی هم گرفتم منتها روی کاغذ و حالا دارم عملیش میکنم


در ضمن یه سوال دیگه من تا حالا با دلفی کار نکردم ولی شنیدم که آسونه و خیلی دست و بال آدم باز تره در صورت مقدور بودن یه توضیحی راجع به این نرم افزار هم بدید
 
آخرین ویرایش:

evil_gates

اين نيز بگذرد ...
سوال اصلی من اینه که چطوری بتونم تعین کنم که توی یک متن از یک حرف (حرف مثل ی مثل s منظورم کلمه نیست) چند بار استفاده شده مثلاً اینطوری:

a=326 بار
b=164 بار
c=54 بار

امیدوارم که منظورمو کاملاً متوجه شده باشید و بتونید کمکم کنید

دوست عزيز
فكر ميكنم منظورتون با اين كد انجام خواهد شد.

کد:
str$='this is a sample for test'
substr$='s'
For i=1 To LEN(str$)
  temp$=StrCopy(str$,i,1)
  If (temp$=substr$) Then
    x=x+1
  End
Next i
Message("","x")
 

the_king

مدیرکل انجمن
طراحی کردن الگوریتمی که از الگوریتم های مشهوری مثل Deflate و Huffman و LZW و ... فشرده سازی
بهتری داشته باشه، کار دشواریه، با وجود اینکه این الگوریتم ها نرخ های فشرده سازی خیلی بالایی ندارند.
پیشنهاد می کنم که قبل از اینکه الگوریتم فشرده سازی تان را بصورت کد پیاده سازی کنید، یکی دو نمونه
خیلی ساده و کوتاه از داده فشرده نشده و داده فشرده شده را بررسی کنید. اینطور به نظر می رسد
که در انتخاب شیوه فشرده سازی و یا پیاده سازی آن اشتباهی می کنید.

اینکه تعداد تکرار حروف را مشخص کنید، مبنای الگوریتم هایی مثل Huffman است که برای حروفی با تکرار زیاد
از کد کوتاه تر و برای حروفی با تکرار کم از کد طولانی تری استفاده می کنند، اما طبق توضیحاتی که دادید
احتمالا در پیاده سازی الگوریتمی که باید داده فشرده را به وضعیت اولیه برگرداند و یا موثر بودن نرخ فشرده سازی
اشتباهی دارید.
 
حرفات 100 % درسته ولی این کاری نیست که میخوام بکنم من اینو با یه استاد برنامه نویسی مشورت کردم و تصمیم بر این شد که این رو با ویژوال بیسیک درستش کنم با این روش فقط با افزودن یک الفبای 2 مگابایتی حجم فایل نصف میشه و جالبی کار اینجاست که هر نوع فایلی باشه این روش روش عملیه شما برو یک فایل رو با آخرین متود وینرار فشرده کن و بعد با نات پد بازش کن میشه توی کلمات دو حرفی رو پیدا کرد که حداقل هیچی تکرار نشده باشن 2 بار تکرار شدن و 2 تا دو حرفی میشه 4 کارکتر و با این روش فقط با افزودن 1 کارکتر به دیکشنری و دو کارکتر به داخل فایل میشه همین معنا رو نشون داد و کلماتی که فاقد الشرایط برای ورود به دیکشنری وینرار هستن تا 75% کم حجم میشن همین نیم ساعت پیشم کل الگوریتم رو توی پست تایپ کردم ولی اینترنت قطع شد و همش پاک شد ورگرنه میفرستادم تا متوجه بشید جریان از چه قراره از همتون تشکر میکنم سعی میکنم به زودی زود این نرم افزار فشرده سازی رو بسازم و سورسشو با افتخار در اختیار بقیه بزارم
 

جدیدترین ارسال ها

بالا