سورس الگوریتم فشرده سازی هافمن به زبان C++
در این بخش سورس لگوریتم فشرده سازی هافمن به زبان C++ را برای شما آماده کرده ایم که یک پروژه نوشته شده به زبان برنامه نویسی سی پلاس پلاس در محیط نرم افزار Code::Blocks است. در ادامه می توانید توضیحات، تصاویر و همچنین فیلمی از نحوه اجرا شدن پروژه را مشاهده کنید.
توضیحات پروژه
در این پروژه بعد از اجرا شدن برنامه، یک رشته ساده از کاربر گرفته می شود و سپس برنامه آن رشته را با استفاده از الگوریتم فشرده سازی هافمن، فشرده کرده و در صفحه نمایش چاپ می شود.
برای درک روش عملکرد الگوریتم هافن، فرض کنید می خواهیم تکه اطلاعات زیر را فشرده کنیم:
1 | ACDABA |
در عبارت فوق ما 6 کاراکتر داریم که هر کاراکتر 1 بایت حافظه می گیرد (در کل 48 بیت). بر اساس الگوریتم هافمن، عبارت فوق برای پیدا شدن کاراکتری که بیشتر از همه تکرار شده است، جستجو می شود (که در عبارت فوق کاراکتر A است) و سپس یک درخت بوجود می آید که کاراکترها را با رشته بیت های کوتاه تر جایگزین می کند. در این حالت از جدول جایگزینی زیر استفاده می شود:
1 | A=0 , B=10 , C=110 , D=111 |
اگر از کد فوق به منظور فشرده سازی فایل استفاده کنیم، حاصل کار به شکل زیر خواهد بود:
1 | 01101110100 |
که به معنی مصرف شدن 11 بیت به جای 48 بیت است.
قسمت های از سورس کد
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <conio.h> #include <stdio.h> #include <string.h> #include <iostream> #include <stdlib.h> using namespace std; int main() { char inputtext[70]; char byte[20]={0}; hafman h1; int i; cout<<"Enter Text For Compress With Hafman:"; gets(inputtext); for(i=0;i<strlen(inputtext);i++) { h1.numchar++; if (h1.search(inputtext[i])==-1) h1.insert(inputtext[i]); } h1.sort(); h1.create(); h1.binary(h1.start,byte,0); h1.tree(h1.start,1); getch(); return 0; } |
هیچ نظری ثبت نشده است