lzw用C語言實現(xiàn)報告_第1頁
lzw用C語言實現(xiàn)報告_第2頁
lzw用C語言實現(xiàn)報告_第3頁
lzw用C語言實現(xiàn)報告_第4頁
lzw用C語言實現(xiàn)報告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、重慶交通大學信息科學與工程學院綜合性設計性實驗報告專 業(yè): 通信工程專業(yè)11級 學 號: 631106040 姓 名: 實驗所屬課程: 信 息 論 與 編 碼 實驗室(中心): 信息技術軟件實驗室 指 導 教 師 : 李益才 2013年11月教師評閱意見:簽名: 年 月 日實驗成績:一、題目LZW編碼一串代碼并譯碼二、仿真要求要求:用任意一門程序語言編寫lzw編碼的編碼與譯碼的方法,使之實現(xiàn)一段代碼的編碼與譯碼。三、仿真方案詳細設計LZW編碼算法字典初始化為前三個字典為a,b,c其他為空的字典,當前前綴P初始化為空;讀入當前字符到C(即字符流中的下一個字符);判斷P+C是否在字典中,如果在字典

2、中,則用C擴展P,即P=P+C;否則輸出與當前前綴P相對應的碼字,同時將P+C添加到字典中并令P=C,即重新置當前前綴;判斷字符流結束與否,如果沒有結束,轉,否則把代表當前前綴P的碼字輸出到碼字流;結束。LZW編碼的過程2、LZW譯碼算法初始化字典,并讀入一個碼字W;試讀一個碼字K,如果不存在碼字K可讀,則輸出W對應的字符串,轉;否則,在W對應的字符(串)末尾加入碼字K的第一個字符,形成的字符串加入字典(如果K還未在字典中出現(xiàn),則W+FirstChar(W)放入字典)。然后輸出W對應的字符(串),同時W=K(重新賦W的值);轉;算法結束。LZW編碼的過程:(code函數(shù))編碼詳細的設計方案:首

3、先初始化字典數(shù)組:前三個數(shù)為a,b,c其他為空。再輸入字符串,將當前前綴為p,輸入為c,再P+C。查詢字典 int LZW:StringIsDic(string e)/判斷字符是否在字典里面for(int b=0; b<200; b+)if(e=Dicb) return 1;return 0;編輯字典int LZW:codeDic(string f)/通過字符串輸出對應字典序號int w=0;for(int y=0;y<200;y+)if(f=Dicy)w=y+1;break;return w;(decode函數(shù))譯碼詳?shù)脑O計方案:pw,pc儲存當前字符和初始字符,查詢pw+pc相

4、應的碼字是否在字典中改變字典。最后查詢字典輸出。查詢字典:int LZW:IntIsDic(int g,int j)/判斷整數(shù)g是否在字典中for(int i=0;i<j+3;i+)if(g=i)return 1;return 0;四、仿真結果及結論五、總結與體會在上課聽完老師講解之后覺得lzw編碼的過程很復雜,感覺也很難理解。通過這次的實驗對lzw編碼的整個編碼過程和譯碼過程有了深入的理解。對其中信息前綴和當前碼字關系,以及怎么變化也有了理解和體會。開始雖然理解了但在以前學習的C語言基礎上對字符串處理始終不熟悉,,也不知如何去生成字符串數(shù)組和使用字符串數(shù)組,通過老師介紹以及在網(wǎng)上查閱資

5、料。開始有想過用andriod頁面布局開控制輸入輸出以及處理字符串數(shù)組,但是因為android對程序過程以及在變換當前綴和輸入碼字不好解決就放棄了,依舊采用了c+,利用了字符串和字符數(shù)組來結合處理。通過這次實驗對比了面向過程和面向對象這兩門語言,學會了靈活使用字符串和字符數(shù)組。通過這次實驗理解了通過類設置一類實體屬性,從而簡化了這一類實體處理。六、主要仿真代碼#include<iostream>#include<string>using namespace std;const int N=200;class LZWprivate:string Dic200;public

6、:int codesN;LZW()Dic0='a'Dic1='b'Dic2='c'string *p=Dic;/void decode(int codesN);void decode(int codes );void code(string csN);int StringIsDic(string e);int codeDic(string f);int IntIsDic(int g,int j);/string decodeDic(int g);/void decodedisplay(int z);void codedisplay(int g);

7、void LZW:decode(int codesN)LZW:LZW();string p1,p2,OutStringN;int w,p,out;p=codes0;int j=0;for(int i=1;i<N;i+)w=codesi; if(w<0)p1=Dicp-1; out=p;OutStringj+1=p1;i=N-1;cout<<out<<"譯碼后是"<<OutStringj+1<<endl;/break;else p1=Dicp-1;if(IntIsDic(w,j)=0)/if(i=N-1)p2=p1;

8、p=w;elsep2=Dicw-1;Dic3+j=p1+p2;j+;out=p;p=w;OutStringj=p1;cout<<out<<"譯碼后是"<<OutStringj<<endl; /*void LZW:decodedisplay(int g)cout<<"經(jīng)過LZW譯碼后的碼子如下:"<<endl;for(int i=0;i<=g;i+)cout<<OutStringj<<endl;cout<<endl;cout<<&q

9、uot;經(jīng)LZW譯碼后的詞典如下:"<<endl;for(int r=0;r<N;r+)cout<<r+1<<Dicr<<endl;*/int LZW:IntIsDic(int g,int j)/判斷整數(shù)g是否在字典中for(int i=0;i<j+3;i+)if(g=i)return 1;return 0;void LZW:code(string csN)/譯碼string P,C,K;P=cs0;int j=0;for(int i=1;i<N;i+)C=csi;K=P+C;if(StringIsDic(K)P=K;

10、elsecodesj=codeDic(P);Dic3+j=K;P=C; j+;if(N-1=i)codesj=codeDic(P); codedisplay(j);/decode(codesj);int LZW:StringIsDic(string e)/判斷字符是否在字典里面for(int b=0; b<200; b+)if(e=Dicb) return 1;return 0;int LZW:codeDic(string f)/通過字符串輸出對應字典序號int w=0;for(int y=0;y<200;y+)if(f=Dicy)w=y+1;break;return w;void

11、 LZW:codedisplay(int g)cout<<"經(jīng)過LZW編碼后的碼子如下:"<<endl;for(int i=0;i<=g;i+)cout<<codesi;cout<<endl;cout<<"經(jīng)LZW編碼后的詞典如下:"<<endl;for(int r=0;r<g+3;r+)cout<<r+1<<Dicr<<endl;int main()/主函數(shù)即使處理過程LZW t;string CSstreamN;int length;cout<<"請輸入所求碼子序列的長度:"cin>>length;while(length>=N)cout<<"該長度太

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論