线性分组码c语言实验报告,C语言线性分组码(附注释).doc
C語言線性分組碼(附注釋).doc
下載提示(請認(rèn)真閱讀)1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
文檔包含非法信息?點(diǎn)此舉報(bào)后獲取現(xiàn)金獎勵!
下載文檔到電腦,查找使用更方便
15
積分
還剩頁未讀,繼續(xù)閱讀
關(guān)?鍵?詞:語言
線性
分組碼
注釋
資源描述:
#include#includevoid main()
{
/*G:生成矩陣 H:監(jiān)督矩陣 HT:監(jiān)督矩陣對應(yīng)的轉(zhuǎn)置矩陣*/
/*M:輸入信息序列 C:編碼輸出序列 Input:輸入接收碼序列 B:譯碼輸出序列 S:伴隨式*/
int Q,N;/*定義開始*/
int i,j,s,r,k,t,p,u,m;
int G[4][7]={{1,0,0,0,1,1,1},{0,1,0,0,1,1,0},{0,0,1,0,1,0,1},{0,0,0,1,0,1,1}};
int IR[3][3]={{1,0,0,},{0,1,0},{0,0,1}};
int H[3][7], C[10][7],M[10][4],B[20][7],Input[100],HT[7][3],P[10],S[100][3];/*定義結(jié)束*/
printf("\n您好!歡迎使用線性分組碼編譯器!\n");
printf("\n\n本編譯器針對(7,4)碼,所采用的生成矩陣G=\n");
for(i=0;i<4;i++) //生成矩陣的建立
{
for(j=0;j<7;j++)
printf(" %d",G[i][j]);
printf("\n");
}
printf("編譯碼過程都是針對二進(jìn)制碼組,除了系統(tǒng)要求選擇功能,其他情況下禁止輸入除0,1以外的數(shù)。請?jiān)谑褂玫倪^程中嚴(yán)格按照編譯器要求的格式輸入數(shù)據(jù)。\n\n");
printf("現(xiàn)在請輸入您所選擇的編譯器所對應(yīng)的序號,按回車鍵繼續(xù):\n");
printf("\n1.編碼器 2.譯碼器 3.退出\n");
printf("\n我選擇:");
scanf("%d",&Q);
if(Q==0)
Q+=4;
while(Q)
{
if(Q==1||Q==2||Q==3)break; //判 斷輸入是否有誤
else
{
printf("對不起,您輸入有誤,請重新輸入");
scanf("%d",&Q);
}
}
while(Q==1||Q==2||Q==3)
{
if(Q==1)/*編碼程序*/
{printf("\n請輸入您需要編碼的信息組數(shù)");
scanf("%d",&N);
printf("\n\n請輸入您需要編碼的%d組四位二進(jìn)制信息組,碼組間用空格分開,按回車鍵確認(rèn)。\n",N);/*輸入信息碼*/
printf("\n信息組m=");
for(i=0;i2;i--)/*輸出編碼結(jié)果*/
C[j][i]=M[j][i-3];
printf("\n您所輸入的信息組編碼結(jié)果c=");
for(j=0;j=0;i--)
printf("%d",C[j][i]); //輸出編碼結(jié)果
printf("\n"); //換行
}
printf("\n\n");
printf("\n接下來您想:\n\n");/*選擇功能*/
printf("1.用編碼器 2.用譯碼器 3.退出\n\n");
printf("我想:");
scanf("%d",&Q);
}
else if(Q==2)/*譯碼程序*/
{
for(i=0;i<3;i++)/*求監(jiān)督矩陣*/
{
for(j=0;j<4;j++)
H[i][j]=G[j][i+4];
for(j=4;j<7;j++)
H[i][j]=IR[i][j-4]; //單位矩陣
}
printf("\n監(jiān)督矩陣H=\n");/*輸出監(jiān)督矩陣*/
for(i=0;i<3;i++)
{
for(j=0;j<7;j++)
printf(" %d",H[i][j]);
printf("\n");
}
t=1;
while(t!=2)/*輸入接收碼組*/
{
p=1;
printf("\n請輸入總位數(shù)為7的倍數(shù)的接收碼組,每位用空格隔開,每組位數(shù)為7的倍數(shù),以十進(jìn)制2作為結(jié)束標(biāo)志!按回車鍵確認(rèn)\n");
while(p)
{
for(i=0;;i++)
{
scanf("%d",&Input[i]);
if(Input[i]==2)break;
}
k=i%7; //判斷是否為7的倍數(shù)
if(k==0){p=0;t=2;}
else
{
p=1;
k=-k+7; //計(jì)算丟失了幾位
printf("您接收到的碼組丟失了%d位,系統(tǒng)不能判斷丟失位的具體位置,請重新輸入\n",k);
}
}
}
u=i/7; //接收到的碼組分成u組
i=0;
for(r=0;r=0;j--,i++)
B[r][j]=Input[i];
}
printf("\n將接收碼組每七位分為一個碼組,如下:\n");
for(i=0;i=0;i--)
printf(" %1d",S[j][i]);
printf("\n");}
printf("\n");
for(i=0;i=0;j--)
printf("%1d",B[i][j]);
printf("請您再次確認(rèn)!");
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
case 2:
{
B[i][0]=1^B[i][0];
printf("\n\n您接收的第%d個碼組有錯誤,正確的碼組應(yīng)為:",++i);
i--;
for(j=6;j>=0;j--)
printf("%1d",B[i][j]);
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
case 3:
{
B[i][1]=1^B[i][1];
printf("\n\n您接收的第%d個碼組有錯誤,正確的碼組應(yīng)為:",++i);
i--;
for(j=6;j>=0;j--)
printf("%1d",B[i][j]);
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
case 4:
{
B[i][3]=1^B[i][3];
printf("\n\n您接收的第%d個碼組有錯誤,正確的碼組應(yīng)為:",++i);
i--;
for(j=6;j>=0;j--)
printf("%1d",B[i][j]);
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
case 5:
{
B[i][2]=1^B[i][2];
printf("\n\n您接收的第%d個碼組有錯誤,正確的碼組應(yīng)為:",++i);
i--;
for(j=6;j>=0;j--)
printf("%1d",B[i][j]);
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
case 6:
{
B[i][4]=1^B[i][4];
printf("\n\n您接收的第%d個碼組有錯誤,正確的碼組應(yīng)為:",++i);
i--;
for(j=6;j>=0;j--)
printf("%1d",B[i][j]);
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
case 7:
{
B[i][5]=1^B[i][5];
printf("\n\n您接收的第%d個碼組有錯誤,正確的碼組應(yīng)為:",++i);
i--;
for(j=6;j>=0;j--)
printf("%1d",B[i][j]);
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
case 8:
{
B[i][6]=1^B[i][6];
printf("\n\n您接收的第%d個碼組有錯誤,正確的碼組應(yīng)為:",++i);
i--;
for(j=6;j>=0;j--)
printf("%1d",B[i][j]);
printf("譯出的信息序列為:");
for(j=6;j>2;j--)
printf("%d",B[i][j]);break;
}
}
}
printf("\n\n總的譯碼結(jié)果為:");
for(i=0;i2;j--)
printf("%1d",B[i][j]);
printf("\n\n接下來您想:\n\n");/*繼續(xù)選擇功能*/
printf("1.用編碼器 2.用譯碼器 3.退出\n\n");
printf("我想:");
scanf("%d",&Q);
if(Q==0)
Q=Q+4;
while(Q)
{
if(Q==1||Q==2||Q==3)break;
else
{
printf("對不起,您輸入有誤,請重新輸入");
scanf("%d",&Q);
}
}
}
else if(Q==3)/*退出程序*/
{
printf("\n謝謝您的使用,歡迎再次使用!\n");Q=0;
}
}
}
7
展開閱讀全文
溫馨提示:
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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
?
人人文庫網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。
關(guān)于本文
本文標(biāo)題:C語言線性分組碼(附注釋).doc
鏈接地址:https://www.renrendoc.com/p-56387681.html
總結(jié)
以上是生活随笔為你收集整理的线性分组码c语言实验报告,C语言线性分组码(附注释).doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rust队友开挂_腐蚀RUST开挂玩家识
- 下一篇: 按条件增加列_12个公式解决Excel按