欢迎来到天天文库
浏览记录
ID:55705150
大小:362.00 KB
页数:11页
时间:2020-05-25
《山农―范诺编码实验报告(完整版).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
7、nput_Char_Check();//检测输入的字符是否重复intflag2=Input_P_Check();//检测输入的概率是否越界if(!flag1&&flag2){cout<<"出现相同字符,输入错误,请重新输入!"<8、*******************山农—范诺最佳编码模块**********************///要进行编码,首先根据各消息的概率由大到小排序voidBubble_Message(){Message_Ptemp;for(inti=0;iPP){temp=Message_Sou
8、*******************山农—范诺最佳编码模块**********************///要进行编码,首先根据各消息的概率由大到小排序voidBubble_Message(){Message_Ptemp;for(inti=0;iPP){temp=Message_Sou
此文档下载收益归作者所有