📄 xianglun.txt
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
char B[6][10];
char C[6]={'a','b','c','d','e','f'};
void codeing(float x, float y,int m)
{
float v=1.0/x; int j=1;
while(v>2)
{
v=v/2;
j++;
}
cout<<" "<<C[m]<<"对应的码字为"
<<"--------------";
for(int z=0;z<=j-1;z++)
{
y=y*2;
if(y>=1)
{
y=y-1;
cout<<"1";
B[m][z]='1';
}
else
{
cout<<"0";
B[m][z]='0';
}
}
cout<<endl;
}
void transfer()
{
int n; char s;
cout<<"请输入要翻译的码长"<<endl;
cin>>n;
char *D=new char [n+1];
cout<<"请依次输入二进制数"<<endl;
for(int c=0;c<=n-1;c++)
{
cin>>s;
D[c]=s;
}
if (n<2)
cout<<"bu neng yi chu "<<endl;
else
{
int j=0; int e=0;
cout<<"该串二进制代码对应的信源消息为"
<<"--------";
for(int i=0;i<=5;i++)
{
while(j<10&&e<n)
{
if(D[e]==B[i][j])
{
e++;
j++;
if(B[i][j]=='\0')
{
cout<<C[i];
j=0;
}
}
else
i++;
}
}
}
cout<<endl;
}
void paixu(float B[7])
{
B[0]=0.0; float x; float p;
cout<<"请依次6位输入元素:"<<endl;
for(int i=1;i<=6;i++)
{
cin>>p;
B[i]=p;
}
for(int j=1;j<=7;j++)
{
x=B[j];
int low=1;
int high=j-1;
while(low<=high)
{
int m=(low+high)/2;
if(x>=B[m])
high=m-1;
else
low=m+1;
}
for(int z=j-1;z>=high+1;--z)
B[z+1]=B[z];
B[high+1]=x;
}
cout<<"经过排序后该数组输出如下:"<<endl;
for(int y=1;y<=6; y++)
cout<<B[y]<<" ";
cout<<endl;
}
void main()
{
float A[7];
paixu(A);
float p=0;
for(int j=1;j<=6;j++)
{
p=p+A[j];
}
if(p>1)
{
cout<<"输入错误概率和不为1"<<endl;
exit(0);
}
else
{
cout<<"输入正确对各元素的码字如下:"<<endl;
codeing(A[1],0,0);
float k=0.0;
for(int y=2;y<=6;y++)
{
k=k+A[y-1];
codeing(A[y],k,y-1);
}
}
char f;
cout<<"是否要进行译码(y/n)"<<endl;
cin>>f;
if(f =='y')
transfer();
else
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -