📄 hefu.cpp
字号:
#include<iostream.h>
#include<math.h>
int aa=0;
class hefu
{
public:
hefu(){}
~hefu(){}
void input();
void output();
void paixi(double p[],int c);
void jisuanma(int x,int y);
int changenum(int c);
void output2();
int getn()
{
return n;
}
int getma()
{
return ma[20][20];
}
double geta()
{
return a[20];
}
int n;
double a[20];
private:
int ma[20][20];
};
void hefu::input()
{
cout<<"请输入单符号信源元素个数 :\n";
cin>>n;
cout<<"请输入单符号概率 :\n";
for(int i=0;i<n;i++)
cin>>a[i];
}
void hefu::paixi(double p[],int c)
{
int i,j,k;
double x;
for(i=1;i<c;i++)
{
k=i-1;
for(j=i;j<c+1;j++)
if(p[j]>p[k])
k=j;
x=p[i-1];p[i-1]=p[k];p[k]=x;
}
}
int hefu::changenum(int c)
{
if(c!=1)
a[c-2]=a[c-1]+a[c-2];
for(int i=0;i<c-2;i++)
a[i]=a[i];
paixi(a,c);
return (c-1);
}
void hefu::output()
{
for(int i=0;i<n;i++)
cout<<" "<<a[i];
cout<<endl;
}
void hefu::jisuanma(int x,int y)
{
int c;
c=changenum(x);
for(int yy=x;yy<=c;yy++)
{
ma[yy][aa]=2;
}
for(yy=c+1;yy<=y;yy++)
{
ma[yy][aa]=3;
}
cout<<endl;
aa++;
jisuanma(c,y);
}
void hefu::output2()
{
for(int j=0;j<n;j++)
{
for(int i=0;i<n-1;i++)
{ if(ma[j][i]!=0)
cout<<ma[j][i]-2;
}
cout<<endl;
}
}
void main()
{
hefu dui;
dui.input();
dui.paixi(dui.a,dui.n);
dui.output();
dui.jisuanma(0,dui.n-1);
dui.output2();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -