通信原理-实验报告二.doc
文本预览下载声明
实验报告
学院(系)名称:计算机与通信工程学院
姓名 学号 专业 班级 实验项目 实验二:差错控制算法实现 课程名称 通信原理基础 课程代码 0662046 实验时间 2015 年5月8日 第3~4节
2015年5月12日 第7~8节 实验地点 软件实验室7-216 批改意见 成绩
教师签字:
实验内容:
本实验是模拟通信原理中差错编码及译码过程。
编程实现奇偶校验、阵列编码、CRC编码及海明码的编码及译码后的结果。
对比各种算法的编码及译码结果。实验要求
1.详细描述实验设计思想、程序结构及各模块设计思路;
2.详细描述程序所用数据结构及算法;
3.明确给出测试用例和实验结果;
4.为增加程序可读性,在程序中进行适当注释说明;
5.认真进行实验总结,包括:设计中遇到收获6.实验报告撰写要求结构清晰、描述准确逻辑性强;
7.实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。
实验过程记录(源程序、测试用例、测试结果及心得体会等)
1.编程实现奇偶校验。
//用异或实现奇偶校验码
//用异或实现奇偶校验码
#includeiostream
#includestring.h
using namespace std;
int main()
{
string s;
int flag=0;
cout侯赵伟请您输入字符编码串:endl;
cins;
for(int i=0;s[i]!=\0;i++)
{
flag^=(s[i]-0); //对输入字符串进行异或运算
}
if(flag)
couts0endl;//若结果为真,说明编码中有奇数个1,校验位为0
else
couts1endl;//若结果为假,说明编码中有偶数个1,校验位为1
return 0;
}
运行测试
2.编程实现阵列校验:
程序代码:
//通信实验 二进制数方阵奇校验
#includeiostream
#includestring.h
#define N 100
using namespace std;
int main()
{
int n;
cout侯赵伟请您输入二进制方阵的行列数n:\n;
cinn;
int arr[N][N]={0};
int ar0[N]={0}; //用来记录行中1的个数
int ar1[N]={0}; //用来记录列中1的个数
int ar2[N]={0}; //用来进行监督元组的记录
int s[N]={0}; //用来记录接收到的码元序列
cout输入方阵数据,数字之间用空格隔开,输入n个数据后请您换行!endl;
for(int i=0;in;i++)
for(int j=0;jn;j++)
{
cinarr[i][j];
if(arr[i][j]==1)
{
ar0[i]++;
}
}
for(int i=0;in;i++)
for(int j=0;jn;j++)
{
if(arr[j][i]==1)
{
ar1[i]++;
}
}
cout加奇校验的矩阵后新序列为:endl;
for(int i=0;in;i++)
{
for(int j=0;jn;j++)
{
cout arr[i][j];
}
if(ar0[i]%2==0)
{
cout 1endl; //奇数个1 ,校验位为1
}
else
{
cout 0endl; //偶数个1 ,校验位为0
}
}
for(int i=0;in;i++)
{
if(ar1[i]%2==0)
{
ar2[i]=1;
cout 1; //奇数个1 ,校验位为1
}
else
{
ar2[i]=0;
cout 0; //偶数个1 ,校验位为0
}
}
int k=0;
for(int i=0;i=n;i++)
{
k+=ar2[i];
}
if(k%2==0)
{
cout 1endl;;
}
el
显示全部