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

📄 suanshu.cpp

📁 算术编码解码!具体的数据
💻 CPP
字号:
#include   <iostream.h> 
#include <iomanip.h> 

double  p[10],d;
char  sr[10],str[100];
int n,m(0);
void input1();
void input2();
void input3();
void input4();
int pandaun(char a);
void main()  
{  
	double pp[11];
	double   t,l,h,b; 
	for   (int i=1;i<=n;i++)  
        pp[i]=pp[i-1]+p[i-1]; 
	char a;
	cout<<"选择你要进行的操作:1、编码;2、解码。"<<endl;
	cin>>a;
	if(a=='1')
	{
		input1();
		input2();
		input3();
		l=0.0;  
        h=1.0;  
        pp[0]=0;  
         
        for   (i=0;i<m;i++)  
		{  
            t=h-l;  
            l=pp[pandaun(str[m])]*t+l;  
            h=pp[pandaun(str[m])+1]*t+l;

		}
		cout<<setprecision(20)<<l<<","<<setprecision(20)<<h<<endl;  
	}
	else
	{
		input4();
		
         l=0.0;
         h=1.0;
         for(i=0;i<m;i++)
		 {
             for(int j=1;j<n;j++)
			 {
                 t=l+(h-l)*pp[j];
		          if(b<t)
				  {
			      cout<<str[j-1];
                  l=l+(h-l)*pp[j-1];
			      h=t;
			      break;
				  }
			 }
		 }  
	}
}
void input1()
{
	double x(0);
     cout<<"输入概率的长度(小于10):";
	 cin>>n;
	 cout<<"输入概率值:";
	 for(int i=0;i<n;i++)
	 {
		 cin>>p[i];
		 x+=p[i];
	 }
	 if(x!=1)
	 {
		 cout<<"重新输入概率."<<endl;
		 input1();
	 }
}
void input2()
{
    cout<<"输入任意"<<n<<"个任意符号:";
	for(int i=0;i<n;i++)
	{
		cin>>sr[i];
	}

}
void input3()
{
	char c;
	cout<<"输入一串字符以“!”为结束符:";
	cin>>c;
	while(c=='!')
	{
		str[m]=c;
		m++;
		cin>>c;
	}
}
void input4()
{
	input1();
	input2();
	cout<<"解码长度:";
    cin>>m;
	cout<<"输入一个小于的小数:";
	cin>>d;
}
int pandaun(char a)
{
	for(int i=0;i<n;i++)
	{
		if(a==sr[i])
		{
			return i;
		}
	}
}

⌨️ 快捷键说明

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