📄 shannonsource2.cpp
字号:
#include <iostream.h>
#include <math.h>
int b2td1 (double x, int k);
void main ()
{double a[6];
double b[6];
int i,j,n,l;
int k[6];
double m,v;
cout<<"请输入数据长度l=";
cin>>l;
cout <<endl;
for (i=0;i<l;i++)
{cin>>a[i];} //数据输入
for (i=0;i<l-1;i++)
{for (j=i+1;j<l;j++)
{if (a[i]<a[j])
{v=a[i];a[i]=a[j];a[j]=v;}
}
} // 排序
cout <<"输入的数据"<<"--"<<"求和数据"<<"--"<<"码长"<<"--"<<"码字"<<endl;
cout <<"---------------------------------------"<<endl;
m=(1-(log10(a[0])/log10(2)));
n=int (m);
if(m==n) { n=n-1;}
k[0]=n;
b[0]=0;
cout <<a[0]<<"------"<<b[0]<<"------"<<k[0]<<"------";
b2td1(b[0],k[0]);
for (i=1;i<l;i++)
{cout <<a[i]<<"------";
b[0]=0;
b[i]=b[i-1]+a[i-1];
cout <<b[i]<<"-------";
m=(1-(log10(a[i])/log10(2)));
n=int (m);
if(m==n) { n=n-1;}
k[i]=n;
cout <<k[i]<<"------";
b2td1 ( b[i], k[i]); //函数调用
}
}
int b2td1 (double x,int k) //进制转换
{int j,p;
int z[8];
double t;
t=x;
for (j=0;j<k;j++)
{t=t*2;
if (t>=1) {p=1;t=t-1;}
else p=0;
z[j]=p;
cout <<z[j] ;
}
cout <<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -