




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
計(jì)算機(jī)科學(xué)與工程系一、實(shí)驗(yàn)名稱:漢明碼二、實(shí)驗(yàn)環(huán)境軟件環(huán)境:Windows2000,MicrosoftVisualC++6.0硬件環(huán)境:P4,2.4GHz,256內(nèi)存,IBM-PC及兼容機(jī)三、實(shí)驗(yàn)?zāi)康乃?、?shí)驗(yàn)內(nèi)容在MicrosoftVisualc明碼的編碼、檢碼、譯碼過程。1、通過對書本的學(xué)習(xí),以及對課堂知識的掌握,了解漢明碼的糾錯原理,編寫出漢明碼的糾錯程序。2、基于漢明碼的編寫,進(jìn)一步完成對檢碼譯碼及增余漢明碼的實(shí)現(xiàn)。3、實(shí)驗(yàn)驗(yàn)證程序的合理性,結(jié)果的正確性,和結(jié)構(gòu)的完善性。五、實(shí)驗(yàn)過程與實(shí)驗(yàn)結(jié)果源程序:#include<iostream>#include<string>usingnamespacestd;#definePe0.0001classHMCoding{private:intn,k碼參數(shù)intint**H,*X,**,G**check_code;string*H_Column,*H_Column_Z,code_str;intcode_num,code_num_z;public:voidInitializing(int,int);voidShow_H(int,int);voidGet_G();voidShow_G(int,int);void*intBinary_Str_Check(string);void/voidEncoding_Z(/void/voidDecoding_Z()/余漢明碼譯碼voidGet_H_Column()取漢明碼監(jiān)督矩陣的每一列voidGet_H_Column_Z();/void漢明碼校碼結(jié)果voidGet_Judge_Result_Z增余漢明碼校碼結(jié)果void/PAGEPAGE10計(jì)算機(jī)科學(xué)與工程系voidChecking_Z(/計(jì)算機(jī)科學(xué)與工程系voidGOTO_HMCding_Z();};HMCodinghmcoding;//全局變量/********************************* 初 始 化 模 塊*********************************/voidHMCoding::Initializing(int_n,int_k){n=_n;k=_k;r=_n-_k;cout<<"("<<n<<""<<k<<")H=newint*[r+1];/初始化(n,for(i=0;i<r+1;i++)H[i]=newint[n+1];for(i=0;i<r;i++)for(j=0;j<n;j++)cin>>H[i][j];/初始化增余項(xiàng)for(j=0;j<n+1;j++)H[r][j]=1;for(i=0;i<r;i++)H[i][n]=0;/XX[j]=0;/Get_H_Column_Z();/進(jìn)一步獲取增余監(jiān)督矩陣的每一列}/voidHMCoding::Get_H_Column(){stringtemp;H_Column=newstring[n+1];for(i=0;i<n;i++){temp="";for(j=0;j<r;j++){if(!H[j][i])temp+='0';計(jì)算機(jī)科學(xué)與工程系else計(jì)算機(jī)科學(xué)與工程系temp+='1';}H_Column[i]=temp;}H_Column[n]="000";}/voidHMCoding::Get_H_Column_Z(){H_Column_Z=newstring[n+2];for(i=0;i<n+1;i++)H_Column_Z[i]=H_Column[i]+'1';H_Column_Z[n+1]="0000";}voidHMCoding::Show_H(intx,inty){for(i=0;i<x;i++){for(j=0;j<y;j++)cout<<H[i][j]<<"";cout<<endl;}}voidHMCoding::Get_G(){G=newint*[k];for(i=0;i<k;i++)G[i]=newfor(i=0;i<k;i++)for(j=0;j<k;j++){if(i==j)G[i][j]=1;elseG[i][j]=0;}for(i=0;i<r;i++)for(j=0;j<k;j++)G[j][i+k]=H[i][j];}voidHMCoding::Show_G(intx,inty){計(jì)算機(jī)科學(xué)與工程系Get_G();for(i=0;i<x;i++)計(jì)算機(jī)科學(xué)與工程系{for(j=0;j<y;j++)cout<<G[i][j]<<"";cout<<endl;}}voidHMCoding::HM_Efficiency_Analysing(){("<<n<<","<<k<<")漢明碼的評價如下:"<<endl;cout<<"("<<n<<","<<k<<")E=k/n*100%="<<k*1.0/n*100<<"%"<<endl;cout<<"("<<n<<","<<k<<")漢明碼的錯誤概率P=n*(n-1)*Pe*Pe="<<n*(n-1)*Pe*Pe<<endl;}/********************************* 編 碼 模 塊*********************************//二進(jìn)制序列合理性檢測intHMCoding::Binary_Str_Check(stringtemp){int/0、1for(inti=0;temp[i]!='\0';i++){if(!(temp[i]=='0'||temp[i]=='1')){flag=0;break;}}returnflag;}/漢明碼編碼voidHMCoding::Encoding(){A:stringbinary_str;intflag;intbinary_num=0;cin>>binary_str;flag=Binary_Str_Check(binary_str);while(binary_str[binary_num]!='\0')binary_num++;/統(tǒng)計(jì)輸入的二進(jìn)制序列所含碼元個數(shù)*/*k計(jì)算機(jī)科學(xué)與工程系全部編碼*/計(jì)算機(jī)科學(xué)與工程系{}
gotoA;if(binary_num%k!=0&&!flag){輸入!\n";}
01gotoA;if(binary_num%k==0&&!flag){0、1gotoA;}code_str="";for(i=0;i<binary_num;i=i+k){{
k位信息元*/if(binary_str[i+j]=='0')X[j]=0;elseX[j]=1;}碼組*/
inttemp;stringpartial_str="";for(intt=0;t<n;t++){/*用k位信息元組成的向量與生成矩陣作矩陣乘法,得到對應(yīng)n元temp=0;for(j=0;j<k;j++)temp+=X[j]*G[j][t];if(temp%2==0)partial_str+='0';elsepartial_str+='1';}code_str+=partial_str;}("<<n<<""<<k<<")漢明碼編碼后的二進(jìn)制序列為:\n"<<code_str<<endl;}計(jì)算機(jī)科學(xué)與工程系/增余漢明碼編碼計(jì)算機(jī)科學(xué)與工程系voidHMCoding::Encoding_Z(){code_str="";A_Z:stringbinary_str;intflag;intbinary_num=0;cin>>binary_str;flag=Binary_Str_Check(binary_str);while(binary_str[binary_num]!='\0')binary_num++;/統(tǒng)計(jì)輸入的二進(jìn)制序列所含碼元個數(shù)*/*k全部編碼*/{gotoA_Z;}if(binary_num%k!=0&&!flag){輸入!\n";}
01gotoA_Z;if(binary_num%k==0&&!flag){0、1gotoA_Z;}for(i=0;i<binary_num;i=i+k){{
k位信息元*/if(binary_str[i+j]=='0')X[j]=0;elseX[j]=1;}碼組*/
inttemp;stringpartial_str="";for(intt=0;t<n;t++)kntemp=0;計(jì)算機(jī)科學(xué)與工程系for(j=0;j<k;j++)temp+=X[j]*G[j][t];計(jì)算機(jī)科學(xué)與工程系if(temp%2==0){partial_str+='0';X[j+k]=0;}else{partial_str+='1';X[j+k]=1;}}/生成增余漢明碼最后一位/n2intsum=0;for(j=0;j<n;j++)sum+=X[j];if(sum%2==0)partial_str+='0';elsepartial_str+='1';code_str+=partial_str;}("<<n+1<<"增余漢明碼編碼后的二進(jìn)制序列為:\n"<<code_str<<endl;}/********************************* 校 碼 模 塊*********************************//利用漢明碼校碼voidHMCoding::Checking(){B:stringbinary_str;intflag;intbinary_num=0;cin>>binary_str;flag=Binary_Str_Check(binary_str);while(binary_str[binary_num]!='\0')binary_num++;/統(tǒng)計(jì)輸入的二進(jìn)制序列所含碼元個數(shù)*/*n全部譯碼*/{gotoB;計(jì)算機(jī)科學(xué)與工程系}計(jì)算機(jī)科學(xué)與工程系if(binary_num%n!=0&&!flag){輸入!\n";}
01gotoB;if(binary_num%n==0&&!flag){0、1gotoB;}/ncheck_code=newint*[code_num];for(i=0;i<code_num;i++)check_code[i]=newfor(i=0;i<code_num;i++)nfor(j=0;j<n;j++){check_code[i][j]=binary_str[i*n+j]-'0';}}Get_Judge_Result();}/利用增余漢明碼校碼voidHMCoding::Checking_Z(){B_Z:stringbinary_str;intflag;intbinary_num=0;cin>>binary_str;flag=Binary_Str_Check(binary_str);while(binary_str[binary_num]!='\0')binary_num++;/統(tǒng)計(jì)輸入的二進(jìn)制序列所含碼元個數(shù)*/if(binary_num%(n+1)!=0&&flagn+1無法全部譯碼*/{gotoB_Z;}if(binary_num%(n+1)!=0&&!flag){01計(jì)算機(jī)科學(xué)與工程系輸入!\n";計(jì)算機(jī)科學(xué)與工程系}
gotoB_Z;if(binary_num%(n+1)==0&&!flag){0、1gotoB_Z;}code_num_z=binary_num/(n+1)n+1check_code=newint*[code_num_z];for(i=0;i<code_num_z;i++)check_code[i]=newfor(i=0;i<code_num_z;i++)n+1for(j=0;j<n+1;j++){check_code[i][j]=binary_str[i*(n+1)+j]-'0';}}Get_Judge_Result_Z();}/獲取漢明碼校碼結(jié)果voidHMCoding::Get_Judge_Result(){inttemp;intflag;stringpartial_str;碼組 狀態(tài)"<<endl;for(intt=0;t<code_num;t++){
校正后flag=0;partial_str="";for(i=0;i<r;i++){temp=0;for(j=0;j<n;j++)temp+=H[i][j]*check_code[t][j];if(temp%2==0)partial_str+='0';elsepartial_str+='1';}/partial_t行判斷計(jì)算機(jī)科學(xué)與工程系for(i=0;i<n+1;i++){if(H_Column[i]==partial_str)計(jì)算機(jī)科學(xué)與工程系{flag=1;break;}}i個碼元出錯,將其改正{for(j=0;j<n;j++)cout<<check_code[t][j];cout<<" 第位錯,可糾正 check_code[t][i]=(check_code[t][i]+1%2/0變1for(j=0;j<n;j++)cout<<check_code[t][j];}示全對{for(j=0;j<n;j++)cout<<check_code[t][j];cout<<" 全對 ";for(j=0;j<n;j++)cout<<check_code[t][j];}cout<<endl;}}/獲取增余漢明碼校碼結(jié)果voidHMCoding::Get_Judge_Result_Z(){inttemp;intflag;stringpartial_str;"<<k<<")增余漢明碼校碼結(jié)果如下(無法識別的碼元:"<<endl;碼組 狀態(tài) 校正"<<endl;for(intt=0;t<code_num_z;t++){flag=0;partial_str="";for(i=0;i<r+1;i++){temp=0;計(jì)算機(jī)科學(xué)與工程系for(j=0;j<n+1;j++)temp+=H[i][j]*check_code[t][j];計(jì)算機(jī)科學(xué)與工程系if(temp%2==0)partial_str+='0';elsepartial_str+='1';}/partial_tfor(i=0;i<n+2;i++){if(H_Column_Z[i]==partial_str){flag=1;break;}}i個碼元出錯,將其改正{for(j=0;j<n+1;j++)
正確接收cout<<check_code[t][j];cout<<" 第位錯,可糾正 check_code[t][i]=(check_code[t][i]+1%2/0變1for(j=0;j<n+1;j++)cout<<check_code[t][j];}if(flag&&i==n+1示全對{for(j=0;j<n+1;j++)
正確接收cout<<check_code[t][j];cout<<" 全對 ";for(j=0;j<n+1;j++)cout<<check_code[t][j];}if(!flag){for(j=0;j<n+1;j++)
兩位出錯并無法糾正cout<<check_code[t][j];cout<<" 某兩位出錯,無法糾正 for(j=0;j<n+1;j++)cout<<'*';/*示無法正確識別的碼元}cout<<endl;計(jì)算機(jī)科學(xué)與工程系}計(jì)算機(jī)科學(xué)與工程系}/********************************* 譯 碼 模 塊*********************************//利用漢明碼譯碼voidHMCoding::Decoding(){cout<<"("<<n<<","<<k<<")漢明碼譯碼結(jié)果為:"<<endl;for(i=0;i<code_num;i++){for(j=0;j<k;j++)cout<<check_code[i][j];}cout<<endl;}/利用增余漢明碼譯碼voidHMCoding::Decoding_Z(){"<<k<<")增余漢明碼譯碼結(jié)果為(法識別的碼元"<<endl;for(i=0;i<code_num_z;i++){if(check_code[i][n+1]==1){for(j=0;j<k;j++)cout<<check_code[i][j];}else{for(j=0;j<k;j++)cout<<'*';}}cout<<endl;}/********************************* 主 函 數(shù)*********************************/voidHMCoding::GOTO_HMCding_Z(){charchoice1='';cout<<"\n***************歡迎進(jìn)入("<<n+1<<","<<k<<")碼編碼校碼譯碼系統(tǒng)****************\n";cout<<"由漢明監(jiān)督矩陣導(dǎo)出的增余監(jiān)督矩陣H["<<r+1<<"]["<<n+1<<"]為:"<<endl;hmcoding.Show_H(r+1,n+1);計(jì)算機(jī)科學(xué)與工程系Z:cout<<"\n>>>>>>>>>>>>>>>>>>>>>("<<n+1<<","<<k<<")增余漢明計(jì)算機(jī)科學(xué)與工程系碼編碼校碼譯碼系統(tǒng)<<<<<<<<<<<<<<<<<<<<\n";cout<<" 增余漢明碼編碼"<<" 增余漢明碼校碼譯碼"<<" 返回"<<" 退出請輸入您要操作的步驟:";cin>>choice1;if(choice1=='E'||choice1{hmcoding.Encoding_Z();gotoZ;}elseif(choice1=='D'||choice1=='d'){hmcoding.Checking_Z();hmcoding.Decoding_Z();gotoZ;}elseif(choice1=='R'||choice1=='r')return;elseif(choice1=='Q'||choice1'q')//{exit(0);}/{gotoZ;}cout<<endl;}voidmain(){charchoice='';/intflag=0;intn,k;cout<<"\n09"<<endl;cout<<"20091883 潘柳燕"<<endl;cout<<"20091888 李文超"<<endl;cout<<"20091908 周發(fā)洪"<<endl;cout<<"20091909 吳針朋"<<endl;cout<<"20091911 張 長)"<<endl;cout<<"\n *************************譯碼系統(tǒng)計(jì)算機(jī)科學(xué)與工程系*************************\n";cin>>n;計(jì)算機(jī)科學(xué)與工程系cin>>k;while(choice!='Q'&&choice!=qQ{C:cout<<"\n>>>>>>>>>>>>>>>>>>>>>>> 漢明碼編碼校碼譯碼系統(tǒng)<<<<<<<<<<<<<<<<<<<<\n";cout<<" "<<"I輸入建立"<<" "<<"E漢明碼碼"<<" 漢明碼校碼譯碼\n";cout<<" .進(jìn)入相應(yīng)的增余漢明碼系統(tǒng)"<<"\n";cin>>choice;if(choice=='I'||choi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度診所與慈善機(jī)構(gòu)合作開展公益活動合同
- 二零二五年度重型貨車掛靠公司合作經(jīng)營合同
- 二零二五年度民宿房屋租賃與民宿客棧民宿客棧管理服務(wù)協(xié)議
- 二零二五年度事業(yè)單位聘用合同崗位職責(zé)優(yōu)化與工作滿意度調(diào)查
- 二零二五年度羽毛球館賽事贊助商權(quán)益執(zhí)行合同
- 二零二五年度商家與科研機(jī)構(gòu)合作研發(fā)合同
- 產(chǎn)品數(shù)據(jù)庫建設(shè)協(xié)議
- 勞動合同復(fù)核意見
- 博士后研究人員合同
- 勞動合同續(xù)簽的解讀與分析
- DL-T5707-2014電力工程電纜防火封堵施工工藝導(dǎo)則
- 職業(yè)素養(yǎng)提升第2版(大學(xué)生職業(yè)素養(yǎng)指導(dǎo)課程)全套教學(xué)課件
- 西師版小學(xué)數(shù)學(xué)六年級下冊單元測試卷(含答案)
- 2024年公安機(jī)關(guān)理論考試題庫500道【綜合卷】
- 2024年四川成都市公共交通集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 第2章導(dǎo)游(課件)《導(dǎo)游業(yè)務(wù)》(第五版)
- 2023年北京重點(diǎn)校初二(下)期中數(shù)學(xué)試卷匯編:一次函數(shù)
- 加推樓盤營銷方案
- 新人教版五年級小學(xué)數(shù)學(xué)全冊奧數(shù)(含答案)
- 2024年?;钒踩芾碇贫群蛵徫话踩僮饕?guī)程(9篇范文)
- 無人機(jī)固定翼行業(yè)報(bào)告
評論
0/150
提交評論