資源簡介
該程序已經驗證通過,實驗結果正確。包括編碼和解碼兩部分,并且能夠校正錯誤

代碼片段和文件信息
#include?
#include?
void?power2bin?(int?int?[]?int?*);
void?hex2bin?(char?[]?int?[]);
void?encoder?(int?[][5]?int?[]?int?[]);
void?channel?(int?[]);
int?decoder?(int?[][5]?int?[]);
void?main?()
{
int?array_a[5]?=?{0?0?0?0?0};
int?array_b[4]?=?{0?1?0?1};
int?array_G?[10][5]?=?{?
1?1?0?1?0?
0?1?1?0?1
1?1?1?0?0
0?1?1?1?0
0?0?1?1?1
1?1?0?0?1
1?0?1?1?0
0?1?0?1?1
1?1?1?1?1
1?0?1?0?1
??????};?/*生成矩陣*/
int?array_transpose_H?[15][5]?={1?1?0?1?0
0?1?1?0?1
1?1?1?0?0
0?1?1?1?0
0?0?1?1?1
1?1?0?0?1
1?0?1?1?0
0?1?0?1?1
1?1?1?1?1
1?0?1?0?1
1?0?0?0?0
0?1?0?0?0
0?0?1?0?0
0?0?0?1?0
0?0?0?0?1
???????};/*一致校驗矩陣*/
int?array_code?[15]?=?{0};
int?array_receive?[15]?=?{0};
char?array_input_char[3]?=?{0};/*輸入三個16進制字符*/
int?array_input[10]?=?{0};????????/*將16進制字符轉換為二進制*/
int?counter_0?=?0?counter_1?=?0;
int?mark?=?0;
printf?(“本程序對輸入的數據是否在允許的范圍內沒有進行檢驗\n“);
printf?(“當得出的結果錯誤時可能是輸入的數據超出了允許的范圍.\n“);
printf?(“十六進制輸入時用小寫a-f.\n\n“);
printf?(“輸入數據(0-3ffh):“);
gets(array_input_char);
????????/*將16進制轉換為2進制數*/
hex2bin?(array_input_char?array_input);??
/*顯示2進制信息序列*/
printf?(“\n\n編碼前的二進制信息序列為(MSB-->LSB):??????????????????????“);
for?(counter_0?=?0;?counter_0?<=?10?-?1;?counter_0++)
?{
printf?(“%d?“?array_input?[9?-?counter_0]);
array_code?[counter_0]?=?array_input?[counter_0];
?}?
????????/*編碼過程*/
encoder?(array_G?array_code?array_input);
/*打印出編碼后的信息序列*/
printf?(“\n\n經2/3FEC編碼后的二進制信息序列為(MSB-->LSB):?“);
for?(counter_0?=?0;?counter_0?<=?5?-?1;?counter_0++)?
{
printf?(“%d?“?array_code?[14?-?counter_0]);
array_receive?[counter_0]?=?array_code?[counter_0];
}????????????????????????????????
printf?(“???“);
for?(counter_0?=?5;?counter_0?<=?15?-?1;?counter_0++)?
{
printf?(“%d?“?array_code?[14?-?counter_0]);
array_receive?[counter_0]?=?array_code?[counter_0];
}
????????/*信息序列通過信道*/
channel?(array_receive);??????????????
printf?(“\n經信道傳輸后接收的序列為:???????????????????“);
for?(counter_0?=?0;?counter_0?<=?5?-?1;?counter_0++)?
{
printf?(“%d?“?array_receive?[14?-?counter_0]);
}
printf?(“???“);
????????for?(counter_0?=?5;?counter_0?<=?15?-?1;?counter_0++)
{
printf?(“%d?“?array_receive?[14?-?counter_0]);
}
????????/*譯碼過程*/
mark?=?decoder?(array_transpose_H?array_receive);
printf?(“\n“);
if?(mark?==?-1)
{
printf?(“超出糾錯范圍?不可糾錯!?譯碼結果為:?“);
}
else?if?(mark?==?-2)?
{
printf?(“信道傳輸正確或產生不可檢錯的誤碼序列!譯碼結果為:?“);
}
else?
{
array_receive?[mark]?=?(array_receive?[mark]?+?1)?%?2;
printf?(“信道傳輸產生1位錯碼!可糾錯!該碼位于第?%d?位,譯碼結果為:??“?15?-?mark);
}
for?(counter_0?=?0;?counter_0?<=?10?-?1;?counter_0++)?
{
printf?(“%d?“?ar
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7646??2009-10-30?23:28??FEC\FEC.c
?????文件???????3363??2007-11-25?15:28??FEC\FEC.dsp
?????文件????????531??2007-11-25?16:17??FEC\FEC.dsw
?????文件??????50176??2009-10-29?16:39??FEC\FEC.ncb
?????文件????????721??2009-10-29?16:36??FEC\FEC.plg
?????文件??????48640??2009-10-29?16:39??FEC\FEC.opt
?????文件?????168014??2009-10-29?16:36??FEC\Debug\FEC.exe
?????文件?????177836??2009-10-29?16:36??FEC\Debug\FEC.ilk
?????文件??????14698??2009-10-29?16:36??FEC\Debug\FEC.obj
?????文件?????427008??2009-10-29?16:36??FEC\Debug\FEC.pdb
?????文件??????33792??2009-10-29?16:38??FEC\Debug\vc60.idb
?????文件??????45056??2009-10-29?16:36??FEC\Debug\vc60.pdb
?????文件?????184772??2009-10-29?16:36??FEC\Debug\FEC.pch
?????文件??????43520??2009-10-29?16:38??FEC\Debug\FEC.opt
?????目錄??????????0??2009-10-29?17:18??FEC\Debug
?????目錄??????????0??2009-10-29?17:18??FEC
-----------?---------??----------?-----??----
??????????????1205773????????????????????16
- 上一篇:20-sim介紹
- 下一篇:號稱最漂亮的編程字體Inconsolata.ttf
評論
共有 條評論