#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define length 20 //宏定义,给定消息码的长度,可以算便更改,但是应该
同时更改 label 数组,避免溢出
#define len 10 //宏定义,给定标记数组 lebal 的长度,可以改变
char code[length]; //全局变量,存放预编码的消息码(char 类型,只在输入时使
用,在其它函数中不用)
int descode[length]; //全局变量,存放预编码的消息码和编码后的 HDB3 码(其
值是 code 数组传入的,在各个转换函数中使用,最终结果也存放于其中)
int label[len]; // 全 局 变 量 , 存 放 破 坏 节 中 v 的 位 置 ( 即 v 在 数 组
descode[length]中的下标值)
int k ; //仅用于 CreateCode 函数中,起标示作用
int sum = 0; //记录破坏点之间 1 和-1 的总个数,用于 doRule4()函数中
/********************************************************************/
/*用于产生原始的消息码,可以手动输入,也可以随机产生 */
/********************************************************************/
void CreateCode()
{
int i ; //用于数组下标
int j;
printf("请选择:1.随机生成数列 2.手动输入");
scanf("%d",&k);
if(k!=1&&k!=2)
{
printf(" 您输入的数只能是 1 或 2,请重新输入");
scanf("%d",&k);
}
if(k==1)
{
srand((int)time(0));
printf(" 随机数列为: ");
for(i=0;i<length;i++)
{
j=(int)(2.0*rand()/(RAND_MAX+1.0));
code[i] = j+48; //产生的随机数的 ASCII 码是 0 或 1,因此加上 48 转
成 ASCII 码为 48 或 49,即 char 类型的'0'或'1'
printf("%c ",code[i]);
}
printf("");
}
if(k==2)
{
评论2