线性分组码c语言实验报告,C语言线性分组码(附注释).doc
C語言線性分組碼(附注釋).doc
下載提示(請認真閱讀)1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內容而直接下載帶來的問題本站不予受理。
2.下載的文檔,不會出現我們的網址水印。
3、該文檔所得收入(下載+內容+預覽)歸上傳者、原創作者;如果您是本文檔原作者,請點此認領!既往收益都歸您。
文檔包含非法信息?點此舉報后獲取現金獎勵!
下載文檔到電腦,查找使用更方便
15
積分
還剩頁未讀,繼續閱讀
關?鍵?詞:語言
線性
分組碼
注釋
資源描述:
#include#includevoid main()
{
/*G:生成矩陣 H:監督矩陣 HT:監督矩陣對應的轉置矩陣*/
/*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];/*定義結束*/
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("編譯碼過程都是針對二進制碼組,除了系統要求選擇功能,其他情況下禁止輸入除0,1以外的數。請在使用的過程中嚴格按照編譯器要求的格式輸入數據。\n\n");
printf("現在請輸入您所選擇的編譯器所對應的序號,按回車鍵繼續:\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請輸入您需要編碼的信息組數");
scanf("%d",&N);
printf("\n\n請輸入您需要編碼的%d組四位二進制信息組,碼組間用空格分開,按回車鍵確認。\n",N);/*輸入信息碼*/
printf("\n信息組m=");
for(i=0;i2;i--)/*輸出編碼結果*/
C[j][i]=M[j][i-3];
printf("\n您所輸入的信息組編碼結果c=");
for(j=0;j=0;i--)
printf("%d",C[j][i]); //輸出編碼結果
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++)/*求監督矩陣*/
{
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監督矩陣H=\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請輸入總位數為7的倍數的接收碼組,每位用空格隔開,每組位數為7的倍數,以十進制2作為結束標志!按回車鍵確認\n");
while(p)
{
for(i=0;;i++)
{
scanf("%d",&Input[i]);
if(Input[i]==2)break;
}
k=i%7; //判斷是否為7的倍數
if(k==0){p=0;t=2;}
else
{
p=1;
k=-k+7; //計算丟失了幾位
printf("您接收到的碼組丟失了%d位,系統不能判斷丟失位的具體位置,請重新輸入\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("請您再次確認!");
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個碼組有錯誤,正確的碼組應為:",++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個碼組有錯誤,正確的碼組應為:",++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個碼組有錯誤,正確的碼組應為:",++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個碼組有錯誤,正確的碼組應為:",++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個碼組有錯誤,正確的碼組應為:",++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個碼組有錯誤,正確的碼組應為:",++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個碼組有錯誤,正確的碼組應為:",++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總的譯碼結果為:");
for(i=0;i2;j--)
printf("%1d",B[i][j]);
printf("\n\n接下來您想:\n\n");/*繼續選擇功能*/
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: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
?
人人文庫網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:C語言線性分組碼(附注釋).doc
鏈接地址:https://www.renrendoc.com/p-56387681.html
總結
以上是生活随笔為你收集整理的线性分组码c语言实验报告,C语言线性分组码(附注释).doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rust队友开挂_腐蚀RUST开挂玩家识
- 下一篇: matlab的try函数,matlab