资源简介
用c语言写的循环码的编译码,通用版,有注释!
代码片段和文件信息
#include
#include
#include
#define n 15
#define k 11
#define d 4
/*
对不同的(nk)循环码,
修改下面n,k,d的值,同时按照注释修改数组的大小。
(需提前计算好生成多项式,然后输入生成多项式的系数)
*/
//int n=15;//(nk)循环码;
//int k=11;
//int d=4;//移存器的个数d=n-k;
/*
编码输入 编码输出 译码输入 译码输出 s(x)临时存放数组
C_Input[k] C_Output[n]D_Input[n]Output[n] reg_temp[d]
*/
int C_Input[k] C_Output[n] D_Input[n] Output[n] reg_temp[d];
/*
编码除法电路余数,即校验位
reg[d] = {0};
*/
int reg[d] = { 0 };
/*
生成多项式的系数
G[d + 1]
*/
int G[d+1];
/*
译码器除法电路余数,即s(x)
D_reg[d]{0};
*/
int D_reg[d] = { 0 };
void Begin();
void Code();
void Decoding(int * int *);
void Transmit(int * int int *);
double gngauss(double double);
void main()
{
Begin();
}
void Begin(){
fflush(stdin);
char ch;
printf(“ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘\n“);
printf(“input ‘c‘ to goto the code\n“);
//printf(“input ‘d‘ to goto the decoding\n“);
printf(“input ‘e‘ to exit\n “);
printf(“ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘\n“);
ch = getchar();
if (ch == ‘c‘) Code();
//else if(ch==‘d‘) Decoding();
else if (ch == ‘e‘) exit(0);
else printf(“\n errerplease input again;\n“);
}
void Code()
{
int temp i jm;
m = n;
printf(“please input the %d bits information code:“k);
for (i = 0; i scanf_s(“%d“ &C_Input[i]);
printf(“输入 %d 位生成多项式的系数(从低位到高位中间用空格隔开,如生成多项式为g(x)=x^3+x^2+1),输入:1 0 1 1 ):“d+1);
for (i = 0; i<(d + 1); i++)
scanf_s(“%d“ &G[i]);
//for (i = 0; i < (d + 1); i++)
// printf(“%d“G[i]);
//exit(0);
for (i = 0; i {
temp = reg[d - 1] + C_Input[i];
if (temp == 2) temp = 0;
for (j = d; j>1; j--)
{
reg[j - 1] = reg[j - 2] + temp*G[j - 1];
if (reg[j - 1] == 2) reg[j - 1] = 0;
}
reg[0] = temp*G[0];
}
for (i = 0; i C_Output[i] = C_Input[i];
for (i = k; i {
temp = reg[d - 1];
for (j = d - 1; j>0; j--)
reg[j] = reg[j - 1];
reg[0] = 0;
C_Output[i] = temp;
}
printf(“\ncode Output:“);//输出编码结果。
for (i = 0; i printf(“%d“ C_Output[i]);
printf(“\n“);
Transmit(C_Output m G);
}
void Transmit(int *C_Output int m int *G){
double a b;
int i *G1;
G1 = G;
//printf(“\nTransmit input is:“);
//for (i = 0; i // printf(“%d“ C_Output[i]);
//printf(“\n“);
for (i = 0; i {
a = gngauss(0 0.1);//噪声
//printf(“%f\n“a);
b = C_Output[i] + a;
if (b<0.1) D_Input[i] = 0;
else D_Input[i] = 1;
}
//printf(“\nTransmit output is:“);
//for (i = 0; i // printf(“%d“D_Input[i]);
//printf(“\n“);
Decoding(D_Input G1);
}
void Decoding(int *D_Input int *G){
int temp i x = 1 p j;
printf(“\ndecode input is:“);
for (i = 0; i printf(“%d“ D_Input[i]);
printf(“\n“);
//printf(“\n input the receive information:“);
//for(i=0;i // scanf_s(“%d“&Input[i]);
//printf(“再输入一遍生成多项式的系数(从低位到高位中间用空格隔开,如生成多项式为g(x)=x^3+x^2+1),输入:1 0 1 1 ):“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4102 2015-11-02 13:58 cycle codes and decodes\ConsoleApplication2\ConsoleApplication2.vcxproj
文件 951 2015-11-02 13:58 cycle codes and decodes\ConsoleApplication2\ConsoleApplication2.vcxproj.filters
文件 4922 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\cycle code.cpp
文件 736 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog\cl.command.1.tlog
文件 1016 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog\CL.read.1.tlog
文件 628 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog\CL.write.1.tlog
文件 183 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog\ConsoleApplication2.lastbuildstate
文件 1302 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog\li
文件 2338 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog\li
文件 594 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog\li
文件 1675 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleApplication2.log
文件 17985 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\cycle code.obj
文件 44032 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\vc120.idb
文件 86016 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\vc120.pdb
文件 2555904 2015-11-03 11:41 cycle codes and decodes\cycle codes and decodes.sdf
文件 1003 2015-11-02 13:49 cycle codes and decodes\cycle codes and decodes.sln
..A..H. 19456 2015-11-03 11:40 cycle codes and decodes\cycle codes and decodes.v12.suo
文件 36352 2015-11-03 11:40 cycle codes and decodes\Debug\ConsoleApplication2.exe
文件 265404 2015-11-03 11:40 cycle codes and decodes\Debug\ConsoleApplication2.ilk
文件 643072 2015-11-03 11:40 cycle codes and decodes\Debug\ConsoleApplication2.pdb
目录 0 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug\ConsoleA.4B26EE22.tlog
目录 0 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2\Debug
目录 0 2015-11-03 11:40 cycle codes and decodes\ConsoleApplication2
目录 0 2015-11-02 15:59 cycle codes and decodes\Debug
目录 0 2015-11-03 11:41 cycle codes and decodes
----------- --------- ---------- ----- ----
3687671 25
- 上一篇:c++制作黄金矿工
- 下一篇:基于C#平台开发的surf算法,可直接运行
相关资源
- C语言实现简单的数据库管理系统
- 学生信息管理系统(数组版)
- C语言 心形.txt
- C语言实现简单的web服务器
- c语言的拓扑排序的课程设计
- c语言 文本编辑器
- 新概念51单片机C语言教程入门、提高
- (严蔚敏)数据结构视频教程C语言版
- vigenere加密解密C语言代码
- C语言经典小程序和C语言编写的小游戏
- 实用算法实验_双向链表
- 实用算法实验_链表
- 实用算法实验_顺序表的应用
- 小波变换C语言实现代码
- C语言代码ATM管理系统
- 数据结构c语言版期末考试复习题库
- 用c语言编写ATM取款机模拟系统
- 信息安全原理大数四则运算及DH算法
- 单片机接收数据帧帧头帧尾校验数据
- 74循环码编码、最小广义距离译码
- 非标设备接入GB28181平台C语言代码实现
- 用c语言写的8数码游戏
- 算法精解-C语言描述源代码
- codeblocks-17.12mingw-setup网盘
- 尚观教育李慧芹Linux下C语言前嵌入式
- 华中科技大学C语言实验报告
- 基于Linux C语言的多线程模拟智能家具
- c语言实现二维码生成
- 二维码驱动C语言
- 禁忌搜索算法C语言程序
评论
共有 条评论