信息论编码实验报告-费诺编码附源代码
信息论编码实验报告 费诺编码附源代码

中南大学信息论与编码实验报告选题:费诺编码学生姓名:学号:专业班级:通信工程指导老师:学院:信息科学与工程学院时间: 2015目录一、实验目的二、实验原理2.1 费诺编码思想2.2 费诺编码流程图三、实验内容四、实验要求五、代码调试结果六、心得体会七、程序源代码一实验目的1. 掌握费诺编码的原理和过程。
2. 熟悉 C/C++语言,练习使用C/C++实现香农码和Huffman 编码。
二、实验原理2.1 费诺编码思想设有离散无记忆信源∑==⎥⎦⎤⎢⎣⎡ni i n n x p x p x p x p x x x 121211)(,)(.....)()(.....1.按信源符号的概率从大到小的顺序排队 不妨设)(......)()(21n x p x p x p ≥≥≥2.将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。
3.将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。
4.如此重复,直至每个组只剩下一个信源符号为止。
5.信源符号所对应的码字即为费诺码。
例:有一单符号离散无记忆信源⎭⎬⎫⎩⎨⎧=⎥⎦⎤⎢⎣⎡04.008.016.018.022.032.0)(654321x x x x x x X P X对该信源编二进制费诺码)i /(35.2)(gn s bit X H = m L KR 2log =%92.97)(==R x H η∑===61)/(4.2)(i i i k x p K 符号比特2.2 费诺编码流程图三、实验内容使用C\C++实现费诺编码,并自己设计测试案例。
四、实验要求1.提前预习实验,认真阅读实验原理以及相应的参考书。
2.认真高效的完成实验,实验中服从实验室管理人员以及实验指导老师的管理。
3.认真撰写实验报告,内容可以自己编排,可以考虑包括以下一些方面:原理概述、程序设计与算法描述、源程序及注释(程序太长可以只选取重要部分)、运行输出结果实例、调试和运行程序过程中产生的问题及采取的措施、对实验的讨论分析、总结。
实验五_费诺编码

实验名称:实验五费诺编码一、实验目的:加深对费诺编码的理解及其具体的实现过程二、实验内容与原理:1.完成费诺的编码2.计算平均码长及编码效率三、实验步骤根据费诺编码的步骤完成该编码四、实验数据及结果分析(可附程序运行截图)编码的结果:五、代码附录clc;clear;A=[0.4,0.3,0.1,0.09,0.07,0.04];A=fliplr(sort(A));%降序排列[m,n]=size(A);for i=1:nB(i,1)=A(i);%生成B的第1列end%生成B第2列的元素a=sum(B(:,1))/2;for k=1:n-1if abs(sum(B(1:k,1))-a)<=abs(sum(B(1:k+1,1))-a) break;endendfor i=1:n%生成B第2列的元素if i<=kB(i,2)=0;elseB(i,2)=1;endend%生成第一次编码的结果END=B(:,2)';END=sym(END);%生成第3列及以后几列的各元素j=3;while (j~=0)p=1;while(p<=n)x=B(p,j-1);for q=p:nif x==-1break;elseif B(q,j-1)==xy=1;continue;elsey=0;break;endendendif y==1q=q+1;endif q==p|q-p==1B(p,j)=-1;elseif q-p==2B(p,j)=0;END(p)=[char(END(p)),'0'];B(q-1,j)=1;END(q-1)=[char(END(q-1)),'1'];elsea=sum(B(p:q-1,1))/2;for k=p:q-2if abs(sum(B(p:k,1))-a)<=abs(sum(B(p:k+1,1))-a);break;endendfor i=p:q-1if i<=kB(i,j)=0;END(i)=[char(END(i)),'0'];elseB(i,j)=1;END(i)=[char(END(i)),'1'];endendendendp=q;endC=B(:,j);D=find(C==-1);[e,f]=size(D);if e==nj=0;elsej=j+1;endendBAENDfor i=1:n[u,v]=size(char(END(i)));L(i)=v;endavlen=sum(L.*A)六、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。
信息论与编码实验2-实验报告

信息论与编码实验2-实验报告信息论与编码实验 2 实验报告一、实验目的本次信息论与编码实验 2 的主要目的是深入理解和应用信息论与编码的相关知识,通过实际操作和数据分析,进一步掌握信源编码和信道编码的原理及方法,提高对信息传输效率和可靠性的认识。
二、实验原理(一)信源编码信源编码的目的是减少信源输出符号序列中的冗余度,提高符号的平均信息量。
常见的信源编码方法有香农编码、哈夫曼编码等。
香农编码的基本思想是根据符号出现的概率来分配码字长度,概率越大,码字越短。
哈夫曼编码则通过构建一棵最优二叉树,为出现概率较高的符号分配较短的编码,从而实现平均码长的最小化。
(二)信道编码信道编码用于增加信息传输的可靠性,通过在发送的信息中添加冗余信息,使得在接收端能够检测和纠正传输过程中产生的错误。
常见的信道编码有线性分组码,如汉明码等。
三、实验内容与步骤(一)信源编码实验1、选取一组具有不同概率分布的信源符号,例如:A(02)、B (03)、C(01)、D(04)。
2、分别使用香农编码和哈夫曼编码对信源符号进行编码。
3、计算两种编码方法的平均码长,并与信源熵进行比较。
(二)信道编码实验1、选择一种线性分组码,如(7,4)汉明码。
2、生成一组随机的信息位。
3、对信息位进行编码,得到编码后的码字。
4、在码字中引入随机错误。
5、进行错误检测和纠正,并计算错误纠正的成功率。
四、实验结果与分析(一)信源编码结果1、香农编码的码字为:A(010)、B(001)、C(100)、D (000)。
平均码长为 22 比特,信源熵约为 184 比特,平均码长略大于信源熵。
2、哈夫曼编码的码字为:A(10)、B(01)、C(111)、D (00)。
平均码长为 19 比特,更接近信源熵,编码效率更高。
(二)信道编码结果在引入一定数量的错误后,(7,4)汉明码能够成功检测并纠正大部分错误,错误纠正成功率较高,表明其在提高信息传输可靠性方面具有较好的性能。
信息论与编码实验报告

信息论与编码实验报告一、实验目的本实验主要目的是通过实验验证信息论与编码理论的基本原理,了解信息的产生、传输和编码的基本过程,深入理解信源、信道和编码的关系,以及各种编码技术的应用。
二、实验设备及原理实验设备:计算机、编码器、解码器、信道模拟器、信噪比计算器等。
实验原理:信息论是由香农提出的一种研究信息传输与数据压缩问题的数学理论。
信源产生的消息通常是具有统计规律的,信道是传送消息的媒体,编码是将消息转换成信号的过程。
根据信息论的基本原理,信息的度量单位是比特(bit),一个比特可以表示两个平等可能的事件。
信源的熵(Entropy)是用来衡量信源产生的信息量大小的物理量,熵越大,信息量就越多。
信道容量是用来衡量信道传输信息的极限容量,即信道的最高传输速率,单位是比特/秒。
编码是为了提高信道的利用率,减少传输时间,提高传输质量等目的而进行的一种信号转换过程。
常见的编码技术有霍夫曼编码、香农-费诺编码、区块编码等。
三、实验步骤1.运行编码器和解码器软件,设置信源信息,编码器将信源信息进行编码,生成信道输入信号。
2.设置信道模拟器的信道参数,模拟信道传输过程。
3.将信道输出信号输入到解码器,解码器将信道输出信号进行解码,恢复信源信息。
4.计算信道容量和实际传输速率,比较两者的差异。
5.改变信道参数和编码方式,观察对实际传输速率的影响。
四、实验结果与分析通过实验,我们可以得到不同信道及编码方式下的信息传输速率,根据信道参数和编码方式的不同,传输速率有时会接近信道容量,有时会低于信道容量。
这是因为在真实的传输过程中,存在信噪比、传输距离等因素导致的误码率,从而降低了实际传输速率。
在实验中,我们还可以观察到不同编码方式对传输速率的影响。
例如,霍夫曼编码适用于信源概率分布不均匀的情况,可以实现数据压缩,提高传输效率。
而区块编码适用于数据容量较大的情况,可以分块传输,降低传输错误率。
此外,通过实验我们还可以了解到信息论中的一些重要概念,如信源熵、信道容量等。
中南大学信息论与编码编码部分实验报告

信息论与编码编码部分实验报告课程名称:信息论与编码实验名称:关于香农码费诺码Huffman码的实验学院:信息科学与工程学院班级:电子信息工程1201姓名:viga学号:指导老师:张祖平日期:2014年1月3日目录⊙实验目的及要求1.1 实验目的 (4)1.2 开发工具及环境 (4)1.3 需求分析与功能说明 (4)⊙实验设计过程2.1 用matlab实现香农码、费诺码和Huffman编码2.1.1 说明 (6)2.1.2 源代码 (7)2.1.3 运行结果(截图) (19)2.2 用C\C++ 实现香农码2.2.1 说明 (22)2.2.2 源代码 (23)2.2.3 运行结果(截图) (26)2.3 用C\C++ 实现Huffman码2.3.1 说明 (26)2.3.2 源代码 (29)2.3.3 运行结果(截图) (36)2.4 用C\C++ 实现费诺码2.4.1 说明 (37)2.4.2 源代码 (37)2.4.3运行结果结果(截图) (40)⊙课程设计总结 (42)⊙参考资料4.1 课程设计指导书 (43)实验目的及要求1.1 实验目的1.掌握香农码、费诺码和Huffman编码原理和过程。
2.熟悉matlab软件的基本操作,练习使用matlab实现香农码、费诺码和Huffman编码。
3.熟悉C/C++语言,练习使用C/C++实现香农码、费诺码和Huffman编码。
4.应用Huffman编码实现文件的压缩和解压缩。
1.2 开发工具及环境MATLAB 7.0、wps文字、红精灵抓图精灵2010Windows7 系统环境1.3 需求分析与功能说明1、使用matlab实现香农码、费诺码和Huffman编码,并自己设计测试案例。
2、使用C\C++实现香农码、费诺码和Huffman编码,并自己设计测试案例。
3、可以用任何开发工具和开发语言,尝试实现Huffman编码应用在数据文件的压缩和解压缩中,并自己设计测试案例。
信息论与编码--费诺编码与哈弗曼编码比较

信源编码的比较——哈弗曼编码与费诺编码姓名:班级:学号:一、实验目的:1、实现常用的信源编码方案,以加深对编码理论的理解,促进对本课程所学知识的理解和把握。
2、课程实验主要为设计性实验,要求掌握Matlab使用方法。
3、通过信源编译码,理解信源编码的主要目的,掌握信源编码的方法和手段,掌握费诺编码和霍夫曼编码方法二、实验设备:装有matlab的计算机三、实验原理:信源编码主要可分为无失真信源编码和限失真信源编码。
无失真信源编码主要适用于离散信源或数字信号,如文本、表格及工程图纸等信源,它们要求进行无失真地数据压缩,要求完全能够无失真地可逆恢复。
香农码、费诺码、哈夫曼码都考虑了信源的统计特性,使经常出现的信源符号对应较短的码字,使信源的平均码长缩短,从而实现了对信源的压缩。
费诺码比较适合于对分组概率相等或接近的信源编码。
哈夫曼码对信源的统计特性没有特殊要求,编码效率比较高,对编码设备的要求也比较简单,因此综合性能优于香农码和费诺码。
(1)费诺码属于概率匹配编码,编码过程如下:1、将信源发出的N个消息符号按其概率的递减次序依次排列。
2、将依次排列的信源符号依概率分成两组,使两个组的概率和近于相同,并对各组赋予一个二进制代码符号“0”和“1”(编m进制码就分成m组)。
3、将每一个大组的信源符号进一步再分成两组,使划分后的两个组的概率和近于相同,并又分别赋予两组一个二进制符号“0”和“1”4、如此重复,直至每组值只剩下一个信源符号为止5、信源符号所对应的码符号序列即为费诺码(2)霍夫曼编码过程:1、将信源发出的N个消息符号按其概率的递减次序依次排列。
2、取概率最小的两个符号分别配以0和1两个码元,并将这两个符号的概率相加作为一个新概率,与未分配码元的符号重新按概率排队3、对重排后的两个概率最小符号重复步骤24、不断重复上述过程,直到最后两个符号配以0和1为止5、重最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。
信息论与编码理论课程实验报告

二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
设备:PC机
软件:matlab 2007
0.0055 0.0115 0.0061 0.0176 0
构建信源模型如下:
h i j k l m n
0.0267 0.0672 0.0042 0.0030 0.0521 0.0212 0.0733
o p q r s t u
0.0842 0.0254 0.0048 0.0648 0.0933 0.0739 0.0327
9.实验报告独立完成,无抄袭现象,并按时提交,格式规范。
综合评定:
附录(程序源代码)
1.编写MATLAB程序
clc
clear all
%随机输入一组数据
string='abdddssdsssdabaabaddkkidkidkdiakdjjaidjaid';
%将上述中所有英文字母化为小写
string=lower(string);
自评/互评成绩:100(评阅者签名:熊萌萌)
2、教师评价
评价标准
评语等级
优
良
中
及格
不合格
1.实验态度认真,实验目的明确
2.实验方案或流程图思路清晰、合理
3.实验程序设计合理,能运行
4.实验步骤记录详细,具备可读性
5.实验数据合理
6.实验结论正确
7.实验总结分析合理、透彻
8.实验报告完整、文字叙述流畅,逻辑性强
信息论与编码实验报告

#include<iostream>#include<string>#include<instdio.h>using namespace std;typedef struct{int weight;int flag;int parent;int lchild;int rchild;}hnodetype;typedef struct{int bit[10];int start;char leaf;}hcodetype;void huf(char cha[],int m[],int n){int i,j,m1,m2,x1,x2,c,p;hnodetype *huffnode=new hnodetype[2*n-1];hcodetype *huffcode=new hcodetype[n],cd;for(i=0;i<2*n-1;i++){ //初始化哈夫曼树 huffnode[i].weight=0;huffnode[i].parent=0;huffnode[i].flag=0;huffnode[i].lchild=-1;huffnode[i].rchild=-1;}for(i=0;i<n;i++){ //哈夫曼结点赋初值 huffnode[i].weight=m[i];huffcode[i].leaf=cha[i];}for(i=0;i<n-1;i++){ //对结点进行编码m1=m2=10000000;x1=x2=0;for(j=0;j<n+i;j++){if(huffnode[j].weight<=m1&&huffnode[j].flag==0) {m2=m1;x2=x1;m1=huffnode[j].weight;x1=j;}else if(huffnode[j].weight<=m2&&huffnode[j].flag==0){m2=huffnode[j].weight;x2=j;}}huffnode[x1].parent=n+i;huffnode[x2].parent=n+i;huffnode[x1].flag=1;huffnode[x2].flag=1;huffnode[n+i].weight=huffnode[x1].weight+huffnode[x2].weight; huffnode[n+i].lchild=x1;huffnode[n+i].rchild=x2;}for(i=0;i<n;i++){ //生成哈夫曼树cd.start=n-1;c=i;p=huffnode[c].parent;while(p!=0){if(huffnode[p].lchild==c)cd.bit[cd.start]=0;elsecd.bit[cd.start]=1;cd.start--;c=p;p=huffnode[c].parent;}cout<<huffcode[i].leaf<<":";for(j=cd.start+1;j<n;j++){huffcode[i].bit[j]=cd.bit[j];cout<<cd.bit[j];}cout<<endl;huffcode[i].start=cd.start;}delete[] huffcode;delete[] huffnode;}void main(){int i=0;// int m[10]={30,23,10,10,9,8,7,3};char cha[10]="abcdefgh";float f;int m[10];printf("请输入概率的小数点后两位值");for(i=0,i<10,i++)scanf("%d",&a[i]);cout<<"该字符串为:\t";for (i=0;i<strlen(cha);i++){ cout<<cha[i]<<"\t"; }cout<<"字符加权为:\t";for (i=0;i<strlen(cha);i++){f=(float)m[i]/100;cout<<f<<"\t";}cout<<"各字符的哈夫曼码为:"<<endl;i=strlen(cha);huf(cha,m,i);}求信息量的流程图:开始获取离散信息源参数P(X)和P(Y/X)计算联合概率P(xiyj)=P(xi)*P(yj/xi)计算P(yj)及后验概率P(xi/yj)=P(xiyj)/P(yj)根据定义求信源熵H(X)和H(Y)根据定义求条件熵H(X/Y)和H(Y/X)根据定义求联合熵H(XY)求交互熵I(X;Y)=H(X)+H(Y)-H(XY)输出已知条件、信源熵、条件熵、联合熵和交互熵求信道容量C(不会)求信息量关键代码:float pX[2]={0.5,0.5},pY_X[2][2]={{0.98,0.02},{0.2,0.8}}; float pXY[2][2],pY[2],pX_Y[2][2];float hX,hY,hXY=0.0,hY_X=0.0,hX_Y=0.0;float iXY=0.0,iYX=0.0;int i,j;//计算联合概率for(i=0;i<2;i++)for(j=0;j<2;j++)pXY[i][j]=pX[i]*pY_X[i][j];//计算Y的概率for(i=0;i<2;i++)pY[i]=pXY[0][i]+pXY[1][i];//计算X的后验概率for(i=0;i<2;i++)for(j=0;j<2;j++)pX_Y[j][i]=pXY[i][j]/pY[j];//求信源熵hX=-(pX[0]*(log(pX[0])/log(2))+pX[1]*(log(pX[1])/log(2))); cout<<"信源熵H(X)="<<hX<<endl;hY=-(pY[0]*(log(pY[0])/log(2))+pY[1]*(log(pY[1])/log(2))); cout<<"信源熵H(Y)="<<hY<<endl;//求条件熵for(i=0;i<2;i++)for(j=0;j<2;j++)hY_X+=-(pXY[i][j]*log(pY_X[i][j])/log(2));cout<<"条件熵H(Y/X)="<<hY_X<<endl;for(i=0;i<2;i++)for(j=0;j<2;j++)hX_Y+=-(pXY[i][j]*log(pX_Y[j][i])/log(2));cout<<"条件熵H(X/Y)="<<hX_Y<<endl;//求联合熵for(i=0;i<2;i++)for(j=0;j<2;j++)hXY+=-(pXY[i][j]*log(pXY[i][j])/log(2));cout<<"联合熵H(XY)="<<hXY<<endl;//交互熵iXY=hX+hY-hXY;cout<<"交互熵I(X;Y)=I(Y;X)="<<iXY<<endl;float beta[2],C; //求信道容量香农编码流程图:开始输入符号个数N和相应概率X[i]按概率由大到小排序按公式求码长求出对应位的概率累加和按乘2取余法则,将累加概率转换为二进制结合求得的对应码长,将二进制的累加概率取对应长度的作为相应码字输出信源、概率、累加概率、码长和码字结束香农编码关键源代码:int main(){int N;cout<<"请输入信源符号个数:";cin>>N;cout<<"请输入各符号的概率:"<<endl;double *X=new double[N]; //离散无记忆信源int i,j;for(i=0;i<N;i++){cout<<"X["<<i+1<<"]="; cin>>X[i];}//由大到小排序for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)if(X[i]<X[j]){ double temp=X[i];X[i]=X[j];X[j]=temp; }int *K=new int[N]; //确定码长for(i=0;i<N;i++){K[i]=int(-(log(X[i])/log(2)))+1; //默认码长为1-log2(p(xi))if(K[i]==(-(log(X[i])/log(2))+1)) //当K[i]=-log2(p(xi))时,K[i]--K[i]--;}//累加概率double *Pa=new double[N]; Pa[0]=0.0;for(i=1;i<N;i++)Pa[i]=Pa[i-1]+X[i-1];//将累加概率转换为二进制string *code=new string[N];for(i=0;i<N;i++)for(j=0;j<N;j++) //这里默认最大码长不超过信源符号个数{double temp=Pa[i]*2;if(temp>=1) //累加概率乘2大于1时,对应码字加1,累加概率自身取余{code[i]+="1"; Pa[i]=Pa[i]*2-1;}else //累加概率乘2小于1时,对应码字加0,累加概率自身取余{code[i]+="0"; Pa[i]*=2;}}for(i=0;i<N;i++)code[i]=code[i].substr(0,K[i]); //求码字//输出码字cout<<setw(12)<<"信源"<<setw(12)<<"概率p(x)"<<setw(12)<<"累加概率Pa(x)"<<setw(8)<<"码长K"<<setw(8)<<"码字"<<endl;for(i=0;i<N;i++)cout<<setw(12)<<i+1<<setw(12)<<X[i]<<setw(12)<<Pa[i]<<setw(8)<<K[i]<<setw(8)<<co de[i]<<endl;delete []X; delete []Pa; delete []K; delete []code;return 0;}香农编码测试结果截图:求信息量实验结果截图:费诺编码流程图:输入信源符号个数n 、信源符号sign 及对应的概率p按概率从大到小排列,对应的符号也重新排列信源个数大于2?通过求累加和确定分组后每组概率累加和尽可能相近或相等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学
信息论与编码实验报告
选题:费诺编码
学生姓名:
学号:
专业班级:通信工程
指导老师:
学院:信息科学与工程学院
时间: 2015
目录
一、实验目的
二、实验原理
费诺编码思想
费诺编码流程图
三、实验内容 四、实验要求 五、代码调试结果 六、心得体会 七、程序源代码
一实验目的
1. 掌握费诺编码的原理和过程。
2. 熟悉 C/C++语言,练习使用C/C++实现香农码和Huffman 编码。
二、实验原理
费诺编码思想
设有离散无记忆信源
∑==⎥⎦⎤⎢⎣⎡n
i i n n x p x p x p x p x x x 1
21211)(,)(.....)()(.....
1.按信源符号的概率从大到小的顺序排队
不妨设
)
(......)()(21n x p x p x p ≥≥≥
2.将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。
3.将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。
4.如此重复,直至每个组只剩下一个信源符号为止。
5.信源符号所对应的码字即为费诺码。
例:有一单符号离散无记忆信源
⎭⎬⎫⎩⎨⎧=⎥⎦⎤⎢⎣⎡04.008.016.018.022.032.0)(654321
x x x x x x X P X
对该信源编二进制费诺码
)i /(35.2)(gn s bit X H = m L K
R 2log =
%92.97)
(==
R x H η
∑===61
)
/(4.2)(i i i k x p K 符号比特
费诺编码流程图
三、实验内容
使用C\C++实现费诺编码,并自己设计测试案例。
四、实验要求
1.提前预习实验,认真阅读实验原理以及相应的参考书。
2.认真高效的完成实验,实验中服从实验室管理人员以及实验指导老师的管理。
3.认真撰写实验报告,内容可以自己编排,可以考虑包括以下一些方面:原理概述、程序设计与算法描述、源程序及注释(程序太长可以只选取重要部分)、运行输出结果实例、调试和运行程序过程中产生的问题及采取的措施、对实验的讨论分析、总结。
五、代码调试结果
六、心得体会
通过本次试验,熟悉了c++的使用方法以及在信息论中的使用方法,加强了课程框架的理解。
在这次实验中,再次对信息论与编码有了更深层的理解,以前只是通过书上的理论推导,对相关的计算不是特别理解,通过这次的上机实际操作,以及函数图形的绘制,让我对熵函数有了更多的感性认识。
对费诺编码的理论了解得更透彻。
总的来说,不仅是实验的结果,更重要的是过程和思考,是我学到了很多的知识,真的是受益匪浅。
七、实验代码
#include<>
#include<>
#include<>
#define N 15
int pa[N][N];
void fano(float p[],int a[N][N],int n,int m,int k) 诺编码:"<<endl;
cout<<"2.退出:"<<endl;
}
void choose()
{
int a;
cin>>a;
if(a==1)
select();
else if(a==2)
exit(0);
else
{
cout<<"请重新选择:"<<endl;
choose();
}
}
void main()
{
cout<<"---------------------费诺编码实验------------------"<<endl<<endl;
display();
choose();
system("pause");
}。