📄 coding .cpp
字号:
#include<iostream.h>
int g,q;
char a,b,c,d,e,f,i,m,op;
double p1,p2,p3,p4,p5,p6,j1,j2,j3,j4,j5,j6,k1,k2,k3,k4,k5,k6,k7,Pi,pi,Ci,Asi=1.0,pm,Pm,Cm,Asm;
double S=1.0,M,C1=0.0;
double s1,s2;
double c1=0.0,c2=1.0;
void main()
{
cout<<"信源符号:";
cin>>a>>b>>c>>d>>e>>f;
cout<<"对应的概率:";
cin>>p1>>p2>>p3>>p4>>p5>>p6;
j1=0.0; k1=j1;
j2=p1+j1; k2=j2;
j3=p2+j2; k3=j4;
j4=p3+j3; k4=j4;
j5=p4+j4; k5=j5;
j6=p5+j5; k6=j6;
k7=1.0;
cout<<" ***********************************"<<endl;
cout<<" * 字符 |"<<" 概率 |"<<" 积累概率 |"<<" 区间范围 "<<endl;
cout<<" * "<<a<<" | "<<p1<<" | "<<j1<<" |"<<" ["<<k1<<","<<k2<<") "<<endl;
cout<<" * "<<b<<" | "<<p2<<" | "<<j2<<" |"<<" ["<<k2<<","<<k3<<") "<<endl;
cout<<" * "<<c<<" | "<<p3<<" | "<<j3<<" |"<<" ["<<k3<<","<<k4<<") "<<endl;
cout<<" * "<<d<<" | "<<p4<<" | "<<j4<<" |"<<" ["<<k4<<","<<k5<<") "<<endl;
cout<<" * "<<e<<" | "<<p5<<" | "<<j5<<" |"<<" ["<<k5<<","<<k6<<") "<<endl;
cout<<" * "<<f<<" | "<<p6<<" | "<<j6<<" |"<<" ["<<k6<<","<<k7<<") "<<endl;
cout<<" ***********************************"<<endl;
cout<<" 1.多元符号编码"<<endl;
cout<<" 2.多元符号解码"<<endl;
cout<<"请选择:" ;
cin>>op;
switch(op)
{
case'1':
cout<<"需要编码的个数:";
cin>>q;
for(g=q;g>=0;g--)
{
if(g>0)
{
cout<<"编第"<<q-g+1<<"个字符:";
cin>>i;
if(i==a)
{Pi=j1;
pi=p1;}
else if(i==b)
{Pi=j2;
pi=p2;}
else if(i==c)
{Pi=j3;
pi=p3;}
if(i==d)
{Pi=j4;
pi=p4;}
if(i==e)
{Pi=j5;
pi=p5;}
if(i==f)
{Pi=j6;
pi=p6;}
Ci=Ci+Pi*Asi;
Asi=pi*Asi;
S=Ci+Asi;
cout<<Ci<<" "<<S<<endl;
}
else
break;
}
case '2':
cout<<"输入最后的区间范围:";
cin>>s1>>s2;
char op;
cout<<"请按k开始解码";
cin>>op;
switch(op)
{
case 'k':
double h1,h2,h11,h22;
cout<<"y."<<"进行解码"<<endl; //第二次解码
cout<<"n."<<"不进行解码"<<endl;
cin>>op;
case 'y':
h1=c1;h2=c2;
for(int n=1;;n++)
{
if( (h1+j1*(h2-h1))<=s1&&(h1+j1*(h2-h1)+p1*(h2-h1))>=s2)
{
h11=(h1+j1*(h2-h1));
h22=(h1+j1*(h2-h1)+p1*(h2-h1));
h1=h11;
h2=h22;
cout<<"第"<<n<<"个解码为:"<<a<<endl;
cout<<"解码区间初始值变为:";
cout<<"["<<h1<<","<<h2<<"]"<<endl;
}
else if( (h1+j2*(h2-h1))<=s1&&(h1+j2*(h2-h1)+p2*(h2-h1))>=s2)
{
h11=(h1+j2*(h2-h1));
h22=(h1+j2*(h2-h1)+p2*(h2-h1));
h1=h11;
h2=h22;
cout<<"第"<<n<<"个解码为:"<<b<<endl;
cout<<"解码区间初始值变为:";
cout<<"["<<h1<<","<<h2<<"]"<<endl;
}
else if( (h1+j3*(h2-h1))<=s1&&(h1+j3*(h2-h1)+p3*(h2-h1))>=s2)
{
h11=(h1+j3*(h2-h1));
h22=(h1+j3*(h2-h1)+p3*(h2-h1));
h1=h11;
h2=h22;
cout<<"第"<<n<<"个解码为:"<<c<<endl;
cout<<"解码区间初始值变为:";
cout<<"["<<h1<<","<<h2<<"]"<<endl;
}
else if( (h1+j4*(h2-h1))<=s1&&(h1+j4*(h2-h1)+p4*(h2-h1)>=s2)
{
h11=(h1+j4*(h2-h1));
h22=(h1+j4*(h2-h1)+p4*(h2-h1));
h1=h11;
h2=h22;
cout<<"第"<<n<<"个解码为:"<<d<<endl;
cout<<"解码区间初始值变为:";
cout<<"["<<h1<<","<<h2<<"]"<<endl;
}
else if( (h1+j5*(h2-h1))<=s1&&(h1+j5*(h2-h1)+p5*(h2-h1))>=s2)
{
h11=(h1+j5*(h2-h1));
h22=(h1+j5*(h2-h1)+p5*(h2-h1));
h1=h11;
h2=h22;
cout<<"第"<<n<<"个解码为:"<<e<<endl;
cout<<"解码区间初始值变为:";
cout<<"["<<h1<<","<<h2<<"]"<<endl;
}
else if( (h1+j6*(h2-h1))<=s1&&(h1+j6*(h2-h1)+p6*(h2-h1))>=s2)
{
h11=(h1+j6*(h2-h1));
h22=(h1+j6*(h2-h1)+p6*(h2-h1));
h1=h11;
h2=h22;
cout<<"第"<<n<<"个解码为:"<<f<<endl;
cout<<"解码区间初始值变为:";
cout<<"["<<h1<<","<<h2<<"]"<<endl;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -