山农―范诺编码实验报告(完整版).doc

山农―范诺编码实验报告(完整版).doc

ID:55705150

大小:362.00 KB

页数:11页

时间:2020-05-25

山农―范诺编码实验报告(完整版).doc_第1页
山农―范诺编码实验报告(完整版).doc_第2页
山农―范诺编码实验报告(完整版).doc_第3页
山农―范诺编码实验报告(完整版).doc_第4页
山农―范诺编码实验报告(完整版).doc_第5页
资源描述:

《山农―范诺编码实验报告(完整版).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一、实验名称:山农—范诺编码二、实验环境软件环境:Windows2000,MicrosoftVisualC++6.0硬件环境:P4,2.4GHz,256内存,IBM-PC及兼容机三、实验目的掌握山农—范诺编码、译码原理,并能够通过程序模拟山农—范诺编码、译码功能。四、实验原理1、首先把消息按概率不同由大到小的次序重新排列;2、把这个概率序列分成尽可能相等的两组,对每一组又同样分成概率尽可能相等的两组,如此下去,直至每个消息都被分出来为止;3、在每一次划分中,所有第一组的消息均以符号0表示,而第二组的

2、消息则以1表示。五、实验过程与实验结果源程序:#include#include#includeusingnamespacestd;staticintMessage_Num=0;typedefstructMessage{charMessage_Char;//消息字符名称doubleP;//消息字符对应的概率doubleSum_P;//消息字符对应的累加概率stringCode_Str;//消息字符对应的码字doubleCode_Length;//消息

3、字符对应的码长}Message,*Message_P;//数据定义Message_P*Message_Source;/**********************初始化模块**********************///对输入的字符进行检验intInput_Char_Check(){intflag=1;intj;for(inti=0;iMessag

4、e_Char==Message_Source[i]->Message_Char){flag=0;break;}}returnflag;}//对输入的概率进行检测intInput_P_Check(){intflag=1;for(inti=0;iP>0&&Message_Source[i]->P<1))//概率越界{flag=0;break;}}returnflag;}//初始化voidInit_Message_Sour

5、ce(){Message_Source=newMessage_P[];/*一个信源可以包含多个字符,由于每个字符用一个结构体描述,故信源则需用结构体数组来描述*/Message_Ptemp;I:doublen=0;//n<=1intflag_n=1;if(Message_Num){//若Message_Num非零则将其置为零Message_Num=0;}cout<<"请输入信源发出的消息字符及相应概率(各字符与概率之间用空格隔开):"<>te

6、mp->Message_Char>>temp->P;n+=temp->P;//概率累加if(n>1){flag_n=0;break;}temp->Sum_P=0.0;temp->Code_Length=0;temp->Code_Str="";Message_Source[Message_Num]=temp;Message_Num++;//消息字符数加1}while(n<1);if(!flag_n){cout<<"概率之和超过1,输入错误,请重新输入!"<

7、nput_Char_Check();//检测输入的字符是否重复intflag2=Input_P_Check();//检测输入的概率是否越界if(!flag1&&flag2){cout<<"出现相同字符,输入错误,请重新输入!"<

8、*******************山农—范诺最佳编码模块**********************///要进行编码,首先根据各消息的概率由大到小排序voidBubble_Message(){Message_Ptemp;for(inti=0;iPP){temp=Message_Sou

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。