📄 suanshu.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 + -