⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 信息论--范诺编码
💻
字号:
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include<iomanip.h>

typedef  struct
{
	float key;
	char zhifu;
	int mazhu;
}RECNODE;

const k=8;

void bublesort(RECNODE *r, int n)
{
	int i, j;
	RECNODE temp1;
	char temp2;
	for(i = 0; i < n; i++)
	  for(j = n - 2; j >= i; j--)
		if(r[j + 1].key >r[j].key) 
		{
			temp1 = r[j + 1]; 
			temp2 = r[j + 1].zhifu;
			r[j + 1] = r[j]; 
			r[j + 1].zhifu = r[j].zhifu;
			r[j] = temp1;
			r[j].zhifu = temp2;
		}
}

qiuk(RECNODE *r, int n)
{
	int i, j;
	float N1, N2;
	float N[k];
	N1=0;
	N2=0;
	for(i=1;i<n;i++)
	{
		for(j=0;j<i;j++)
			N1=N1+r[j].key;
		for(j=i;j<n;j++)
			N2=N2+r[j].key;
		N[i]=N1-N2;
		if(N[i]<0)
			N[i]=-N[i];
		N1=0;
		N2=0;
	}
	i=1;
	for(j=2;j<n;j++)
	{
		if(N[i]>N[j])
			i=j;
	}
	if(n == 1)
		return i=0;
	else
		return i;
	
}



void main()
{
	char a[]={"ABCDEFGH"};
	RECNODE b[k];
	RECNODE c[k];
	RECNODE d[k];
	int i;
	int L;
	int t;
	int n;
	for(t=0;t<k;t++)
	{
		cout<<"请输入"<<a[t]<<"的概率:";
		cin>>b[t].key;
		b[t].zhifu=a[t];
		cout<<endl;
	}
	bublesort(b,k);
	for(t=0;t<k;t++)
	{
		c[t].key=b[t].key;
		c[t].zhifu=b[t].zhifu;
	}
	
	for(t=0;t<k;t++)
		cout<<setw(5)<<b[t].zhifu;
	cout<<endl;

	
	i=qiuk(b,k);
	
	while(i != 0)
	{
		if(i != 0)
		{
			L=i;
			if(L==1)
			{
				b[0].mazhu=0;
				for(t=1;t<L;t++)
					b[t].mazhu=1;
				for(t=0;t<L;t++)
					cout<<setw(5)<<b[t].mazhu;
			}
			else 
			{
				for(t=0;t<L;t++)
				{
					b[t].mazhu=0;
					c[t].key=b[t].key;
				}
				for(t=0;t<L;t++)
					cout<<setw(5)<<b[t].mazhu;
			
				for(t=L;t<k;t++)
					b[t].mazhu=1;
				for(t=L;t<k;t++)
					cout<<setw(5)<<b[t].mazhu;
				cout<<endl;
				for(n=0;n<k-i;n++)
					d[n].key=b[n].key;
			}
			if(b[k-2].mazhu == 0)
				i=0;	
		}
		else
			cout<<setw(5)<<" ";
		if(b[k-2].mazhu == 0)
			i=0;
		else
		{
			i=qiuk(c,i);
			i=qiuk(d,n);
		}
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -