• 大小: 11.42 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-10-07
  • 语言: 其他
  • 标签: 通信原理  C  

资源简介

关于通信原理实验课上各种调制与解调的C程序

资源截图

代码片段和文件信息

#include
#include

#define n 27
#define m 2*n-1

struct hufmtree
{ float weight;
  int lchildrchildparent;
};

 struct codetype
 { char bits[n];
   int start;
   char ch;
 };

 struct hufmtree tree[m];
 struct codetype code[n];
     float cwit[n]={0.18590.06420.0127\
 0.02180.03170.10310.02080.0152\
 0.04670.05750.00080.00490.0321\
 0.01980.05740.06320.01520.0008\
 0.04840.05140.07960.02280.0083\
 0.01750.00130.01640.0005};/*27个字符的概率顺序:‘ ‘‘a‘--‘z‘*/

void HUFFMAN()                  /*定义HUFFMAN子函数 */       
{    int ijp1p2;           /* 功能:用哈夫曼算法形成哈夫曼树,*/
float small1small2;     /*经过处理哈夫曼树的结构存在于tree[53]中*/
for(i=0;i { tree[i].parent=0;
tree[i].lchild=0;
tree[i].rchild=0;
tree[i].weight=0.0;
}
for(i=0;i tree[i].weight=cwit[i];
for(i=n;i { p1=0;p2=0;
small1=1.0;   small2=1.0;
for(j=0;j if(tree[j].parent==0)
if(tree[j].weight { small2=small1;
small1=tree[j].weight;
p2=p1;
p1=j;
}
else if(tree[j].weight { small2=tree[j].weight;
p2=j;
}
tree[p1].parent=i+1;
tree[p2].parent=i+1;
tree[i].lchild=p1+1;
tree[i].rchild=p2+1;
tree[i].weight=tree[p1].weight+tree[p2].weight;
}
}             /*HUFFMAN()*/

void HUFFMANCODE()      /*定义HUFFMANCODE子函数*/
{ int ijcp;    /*功能:根据已有的哈夫曼树对27个字符编码,*/
struct codetype cd;  /*经过处理,第i个字符的码字存于code

[i].bits[27中*/
for(i=0;i { cd.start=n;
c=i+1;
p=tree[i].parent;
while(p!=0)
{  cd.start--;
   if(tree[p-1].lchild==c)
     cd.bits[cd.start]=‘0‘;
   else cd.bits[cd.start]=‘1‘;
   c=p;
   p=tree[p-1].parent;
}
code[i]=cd;
}
code[0].ch=‘ ‘;       /*将空格和26个字母输入到code[27].ch内*/
for(i=1;i code[i].ch=‘a‘+i-1;
}      /*HUFFMANCODE()*/

void CODE()
{       int ijl=0t;
char s[128]={0};
printf(“input the words you want to code(大小写均可)\n“);
getchar();
scanf(“%c“&s[l]);
while(s[l]!=‘\n‘)
{  l++;
   scanf(“%c“&s[l]);
}
 for(i=0;i  {  if(s[i]==‘ ‘)
 j=0;
  else if((s[i]>=‘a‘)&&(s[i]<=‘z‘))
         j=s[i]+1-‘a‘;
      else if((s[i]>=‘A‘)&&(s[i]<=‘Z‘))
        j=s[i]+1-‘A‘;   
 for(t=code[j].start;t  printf(“%c“code[j].bits[t]);
 printf(“ “);
 } 
}        /*CODE()*/

void DECODE()

{ int i=m-1k=0jco=0;
char ak[256];
char cho[64];

printf(“input 0 or 1 you want to decode\n“);
getchar();
scanf(“%s“ak);
k=strlen(ak);

for(j=0;j {  if(ak[j]==‘0‘)
    i=tree[i].lchild-1;
     else if(ak[j]==‘1‘)
i=tree[i].rchild-1;
    if(tree[i].lchild==0)
{  cho[co]=code[i].ch;
       co++;
       i=m-1;
}
}
 for(j=0;j  printf(“%c“cho[j]);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1265  2006-07-03 16:42  通信原理C程序\FFT.CPP

     文件       3531  2006-06-04 14:59  通信原理C程序\Haffman.cpp

     文件       2339  2006-07-10 15:37  通信原理C程序\LI‘BUFEN.CPP

     文件       1945  2006-06-04 15:12  通信原理C程序\LI‘DPSKcha.CPP

     文件       1943  2006-06-04 15:13  通信原理C程序\LI‘DPSKton.CPP

     文件       1681  2006-07-03 16:40  通信原理C程序\LI‘FM.CPP

     文件       2818  2006-07-17 16:17  通信原理C程序\LI‘PCM.CPP

     文件       1456  2006-07-03 16:59  通信原理C程序\QKL   DSB.CPP

     文件       1669  2006-07-03 16:49  通信原理C程序\SSB env.CPP

     文件       1587  2006-06-04 15:33  通信原理C程序\SSB ton.CPP

     文件       2109  2006-07-03 16:48  通信原理C程序\VSB env.CPP

     文件       2020  2006-06-04 15:27  通信原理C程序\VSB ton.CPP

     文件       2041  2007-11-05 22:00  通信原理C程序\DRAW.CPP

     文件       1334  2007-11-05 22:01  通信原理C程序\LI‘AM.CPP

    ....SH.         9  2008-01-18 08:38  通信原理C程序\_desktop.ini

     目录          0  2006-07-14 08:34  通信原理C程序

----------- ---------  ---------- -----  ----

                27747                    16


评论

共有 条评论