-
大小: 1.09MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-10-31
- 語言: C/C++
- 標簽:
資源簡介
Huffman編碼和算術編碼的C++實現(xiàn),分別提供了讀取文檔和手動輸入兩種輸入方式。

代碼片段和文件信息
//?suanshu.cpp?:?Defines?the?entry?point?for?the?console?application.
//
#include?“stdafx.h“
#include?
#include?
#include?
#include?“Arithmetic.h“
using???namespace???std;
//輸入字符
void?Arithmetic::get_charactor()
{
int?i;
cout?<“請輸入字符集大小n(n>1):“?< cin?>>count;
//if?(charactors?!=?NULL)?//清零
// delete?charactors;
charactors?=?new?ArithmeticCharators[count]; //申請動態(tài)存儲空間,0號單元未使用
cout?<“請輸入字符和概率:“?< for?(?i?=?0;?i? {
cin.ignore(); //清除輸入緩沖區(qū)
cin.get(charactors[i].c); //輸入單個字符,可以是空白符
cin?>>?charactors[i].chance;
}
}
//輸入待編碼字符串
void?Arithmetic::get_code()
{
cout<<“please?input?the?code‘‘s?length:“;
cin>>length;
while(length>=M)
{
??cout<<“the?length?is?too?largerplease?input?a?smaller?one.“;
??cin>>length;
}
for(int?i=0;i {
??cin>>input[i];
}
}
//打印字符和待編碼字符串
void?Arithmetic::PrintC()
{
for(int?i?=?0;i {
cout?< cout?<“出現(xiàn)次數:“?< cout?<“出現(xiàn)概率:“?< cout?< }
for(?int?i?=?0;i cout?< cout?< cout?< cout?<}
/*
//從文件讀入原文
void?Arithmetic::ReadTextFromFile(char?*filename)
{
ifstream?infile(filename);
if(!infile)
{
cerr?<“無法打開文件!“?< return;
}
char?a;
while(infile.get(a))
{
text?+=?a;
}
}*/
//輸出文本串
void?Arithmetic::PrintText()
{
cout?<}
//將原文中出現(xiàn)過的字符存入charactors[].c并統(tǒng)計各字符的權值相應的存入charactors[].weight
//然后計算概率存入charactors[].chance
void?Arithmetic::CountCharactorsChance()
{
if?(text.empty())
return;
//if?(charactors!=?NULL)
// delete?charactors;
int?i?=?0;
n?=?0;
charactors?=?new?ArithmeticCharators[1];
charactors[0].c?=?text[i];
charactors[0].weight?=?1;
input[0]?=?text[0];
++n;
for?(i?=?1;?i?!=?text.size();?i++)
{
int?j;
input[i]?=?text[i];
for?(j?=?0;?j? {
if?(text[i]?==?charactors[j].c)
{
++charactors[j].weight;
j--;
break;
}
}
if?(j?==?n) //該字符不存在,添加該字符
{
++n;
PCharactors?newchars?=?new?ArithmeticCharators[n];
memcpy(newchars?charactors?(n-1)?*?sizeof(ArithmeticCharators));
delete?charactors;
charactors?=?newchars;
charactors[n-1].c?=?text[i];
charactors[n-1].weight?=?1;
}
}
for(i?=?0;?i?<=?n;?i++)
{
charactors[i].chance?=?charactors[i].weight/float(text.size());//C++中整數除以整數結果默認是整數,因此需將一個數強行轉換
}
length?=?text.size();
count?=?n;
}
void?Arithmetic::coding()
{
int?ij=0;
for(i=0;i ??if(input[0]==charactors[i].c)?break;
while(j ??Low+=charactors[j++].chance;
R=charactors[j].chance;
High=Low+R;
for(i=1;i ??for(j=0;j ??{
???if(input[i]==charactors[j].c)
???{
if(j==0)
{
?low=Low;
?high=Low+charactors[j].chance*R;
?High=h
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5354??2011-12-21?14:53??arithmetic\arithmetic\arithmetic.cpp
?????文件???????1008??2011-12-16?14:06??arithmetic\arithmetic\Arithmetic.h
?????文件???????4773??2011-12-07?15:17??arithmetic\arithmetic\arithmetic.vcproj
?????文件???????1407??2011-12-21?19:51??arithmetic\arithmetic\arithmetic.vcproj.PP-PC.PP.user
?????文件?????????16??2011-12-21?14:54??arithmetic\arithmetic\code.txt
?????文件????????663??2011-12-16?12:29??arithmetic\arithmetic\Debug\arithmetic.exe.em
?????文件????????728??2011-12-16?12:29??arithmetic\arithmetic\Debug\arithmetic.exe.em
?????文件????????621??2011-12-21?15:18??arithmetic\arithmetic\Debug\arithmetic.exe.intermediate.manifest
?????文件??????69520??2011-12-21?14:53??arithmetic\arithmetic\Debug\arithmetic.obj
?????文件????3211264??2011-12-16?11:17??arithmetic\arithmetic\Debug\arithmetic.pch
?????文件???????7170??2011-12-21?15:18??arithmetic\arithmetic\Debug\BuildLog.htm
?????文件??????80655??2011-12-16?11:17??arithmetic\arithmetic\Debug\Huffman.obj
?????文件??????32790??2011-12-21?15:18??arithmetic\arithmetic\Debug\main.obj
?????文件?????????67??2011-12-21?15:18??arithmetic\arithmetic\Debug\mt.dep
?????文件??????12333??2011-12-16?11:17??arithmetic\arithmetic\Debug\stdafx.obj
?????文件?????297984??2011-12-21?15:18??arithmetic\arithmetic\Debug\vc90.idb
?????文件?????290816??2011-12-21?15:18??arithmetic\arithmetic\Debug\vc90.pdb
?????文件???????6165??2011-12-09?22:01??arithmetic\arithmetic\Huffman.cpp
?????文件???????1504??2011-12-16?11:14??arithmetic\arithmetic\Huffman.h
?????文件???????2096??2011-12-21?15:18??arithmetic\arithmetic\main.cpp
?????文件???????1320??2011-12-04?21:50??arithmetic\arithmetic\ReadMe.txt
?????文件??????????8??2011-12-21?14:54??arithmetic\arithmetic\resulttext.txt
?????文件????????297??2011-12-04?21:50??arithmetic\arithmetic\stdafx.cpp
?????文件????????320??2011-12-04?21:50??arithmetic\arithmetic\stdafx.h
?????文件????????765??2011-12-04?21:50??arithmetic\arithmetic\targetver.h
?????文件??????????8??2011-12-09?10:22??arithmetic\arithmetic\text.txt
?????文件????1862656??2011-12-21?19:51??arithmetic\arithmetic.ncb
?????文件????????896??2011-12-04?21:50??arithmetic\arithmetic.sln
????..A..H.?????23552??2011-12-21?19:51??arithmetic\arithmetic.suo
?????文件??????60928??2011-12-21?15:18??arithmetic\Debug\arithmetic.exe
............此處省略11個文件信息
- 上一篇:21點游戲C++模擬
- 下一篇:C++面向對象程序設計 經典例題 附練習題
評論
共有 條評論