freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于哈夫曼編碼的數(shù)據(jù)壓縮解壓程序論文-wenkub.com

2025-06-24 20:46 本頁面
   

【正文】 break。break。break。break。 cininfilename。break。 cininfilename。 cinchoice。 strcpy(infilename,cmdline[2])。coutendl。cout 在源文件中輸入您所要解壓的文件!輸入地格式為:路徑\\壓縮前文件名endl。cout 例如:[源文件]:d\\endl。cout壓縮文件:endl。cout ★★★★★★★★★哈夫曼編碼/譯碼器★★★★★★★★★ endl。 ifstream in(filename,ios::out)。 char filename[200]。 cout*********************CCoding***********************endl。}//unpress()void MainMeun(){ cout******************哈夫曼編碼/譯碼器********************endl。 strcpy(buf,buf+i+1)。i++) { strcpy1(buf1,buf,i+1)。 } }//for if(writelen=flength) break。temp,sizeof(unsigned char))。 }//while while(strlen(buf)=256) //處理緩沖區(qū),直到少于256位,再讀滿它 { for(i=0。temp,sizeof(temp))。(8)。 //打開編碼后文件if(!outfile) { cerr輸出文件打開失敗endl。 header[j+1]=tmp。i++){ for(int j=0。}//for(int i=0。 strcat(header[i].bits,code)。jclen。 else clen=clen/8+1。header[i].count,sizeof(unsigned char))。in。((char *)amp。flength,sizeof(long))。 //需要調(diào)用的函數(shù)的聲明ifstream infile(infilename,ios::binary)。 //讀取字符存放此臨時變量long readlen=0。 //獲取編碼長度后的第一偏移量,從壓縮文件第五字節(jié)開始獲取值int n。buf[i]=39。}return 0。c) //將buf字符串與header[i].bits[]中匹配,成功后對應(yīng)的字符由c帶回{for(int i=0。while(c0){ code[n]=c%2+39。 //整個字符串初始化code[n1]=39。for(int i=0。 for(i=0。 ((char *)amp。 strcat(header[i].bits,0000000)。 //不再設(shè)置其他變量,權(quán)值這時已無使用價值,可以用相應(yīng)結(jié)點的權(quán)值變量記錄長度 ((char *)amp。ileafnum。(clength)。clength,sizeof(long))。temp,sizeof(unsigned char))。 //統(tǒng)計代碼結(jié)尾偏移加1,用于找到葉子結(jié)點位置 strcpy(buf,buf+8)。 //檢索出字符對應(yīng)編碼,連到buf[]中 while(strlen(buf)=8) //當(dāng)buf中字符長度大于8時,一直處理寫入,直至小于8 { temp=ctoa(buf)。 //初始化編碼緩沖區(qū)(8)。ofstream outfile(outfilename,ios::out|ios::binary)。tmp[start])。039。i++){ start=255。int c。}/*********************************根據(jù)哈夫曼樹編碼**********************************/char tmp[256]。 } header[s2].parent=i。j++) //挑權(quán)重最小的第二個 if(header[j].parent==0amp。 } header[s1].parent=i。j++) //挑權(quán)重最小的一個 if(header[j].parent==0amp。ipointnum。 //取得哈夫曼樹中葉子結(jié)點數(shù)pointnum=2*leafnum1。 }for(i=0。j2561i。 //統(tǒng)計文件長度}()。while(()!=EOF){ ((char *)amp。i256。 //編碼從偏移量8記錄,統(tǒng)計壓縮后編碼長度加8int leafnum。i++) if(temp==header[i].b) return header[i].bits。)*pow(2,81i)。for(int i=0。 //權(quán)重int parent,lch,rch。但當(dāng)自己看到自己編寫的程序順利通過的時候,心里的成就感就油然而生,心中的疲倦也消失了,我想,當(dāng)程序員看到自己的程序能夠編譯成功的話,也是這種感覺吧!雖然這次課程設(shè)計結(jié)束了,但我們學(xué)習(xí)C++等語言的步伐不能停止,在今后的學(xué)習(xí)過程中,我會更加努力,爭取在今后的課程中學(xué)得更好,下次的課程設(shè)計能夠更加成功。在面向?qū)ο筮^程中,類的設(shè)計是至關(guān)重要的,類設(shè)計好了等于程序就成功了一半,所以這次的課程設(shè)計幫助我復(fù)習(xí)了這一學(xué)期面向?qū)ο笳n程的學(xué)習(xí),剛好可以彌補這一學(xué)期面向?qū)ο髮W(xué)習(xí)的不足。通過這次課程設(shè)計,使我的自學(xué)能力有所提高,讓我知道了怎么去接受一個新的知識并且能夠很好的掌握它。程序的模塊化結(jié)構(gòu)尤其重要,應(yīng)掌握各個模塊間的邏輯關(guān)系和整體程序的結(jié)構(gòu)。通過程序編譯: ,同時文本的內(nèi)容與原來的文本信息相同,實現(xiàn)解壓功能。5)操作失敗后的界面提示,若用戶輸入的文件路徑和文件名錯誤,則界面會提示用戶輸出文件打開失敗。若用戶想要對某一文件進行壓縮,則按主界面的提示按“C”,然后界面提示輸入進行壓縮操作的文件路徑和文件名,輸入完成后按回車鍵,此時界面會提示輸入壓縮后文件的保存路徑及其文件名,輸入完成后再按回車鍵,便可完成編碼,同時會顯示出各字符的哈夫曼編碼,系統(tǒng)也會提示用戶壓縮文件過程結(jié)束。 部分重要函數(shù)的實現(xiàn):void press(char *infilename,char *outfilename)的實現(xiàn):1)記錄文件中字符頻度; 2)根據(jù)頻度建樹; 3)根據(jù)哈夫曼樹編碼; 4)對文件進行編碼,寫入新文件(核心); 5)將字符編碼對照表寫入文件; 6) 將文件的哈夫曼編碼輸出到顯示器上。 //定義雙親,左孩子,右孩子char bits[256]。從根結(jié)點開始,每讀一個字符,指針變化一次(當(dāng)讀取的字符是‘1’時,指針指向當(dāng)前所指結(jié)點的右孩子,當(dāng)讀取的字符是‘0’時,指針指向當(dāng)前所指結(jié)點的左孩子),直至該指針?biāo)附Y(jié)點為葉子結(jié)點時結(jié)束(即當(dāng)結(jié)點的左右孩子均為空時)。,利用Huffman編碼思想創(chuàng)建Huffman樹將所記錄的字符的頻率作為權(quán)值來創(chuàng)建Hu
點擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1