📄 compress.cpp
字号:
/*
数据压缩程序 compress
作者:刘海波
学号:20058002109
说明:本程序可连续输入需要解压的数。
每次输出都会有解压结果和新的上下限。
输入的需要解压的字符为a b c,暂时不能是其他值
例如:第一次输入b 输出为
压缩后的上下限:
_(a)0.333333--0.416617
_(b)0.416617--0.583283
_(c)0.583283--0.666667
结果为:0.583283
第二次输入c 输出为:
压缩后的上下限:
_(a)0.583283--0.59991
_(b)0.59991--0.633263
_(c)0.633263--0.666667
结果为:0.633263
输出的结果是解压程序的输入
*/
#include <iostream.h>
void main()
{
const n=3;
double a[n];
double b[n][2];
for (int i=0;i<n;i++)
{
a[i]=1;
}
double d=1/(double)n;
for (i=1;i<=n;i++)
{
b[i-1][0]=d*(i-1);
b[i-1][1]=d*i;
}
char k;
while(1)
{
cout<<"please input the data (a b or c):"<<endl;
cin>>k;
if(k<0)
return;
else
k=k-97;
a[k]=a[k]+1;
double sumn=0;
for (i=0;i<n;i++)
sumn=sumn+a[i];
double inv ;
inv =b[k][1]-b[k][0];
double subint=inv/sumn;
b[0][0]=b[k][0];
b[n-1][1]=b[k][1];
double sumb=0;
double h;
for (i=1;i<=n-1;i++)
{
sumb=sumb+a[i-1];
h=b[0][0]+sumb*subint-0.00005;
b[i-1][1]=h;
b[i][0]=h;
}
cout<<"压缩后的上下限:"<<endl;
char tt;
for (i=0;i<n;i++)
{
tt=i+97;
cout<<"_("<<tt<<")"<<b[i][0]<<"--"<<b[i][1]<<endl;
}
cout<<"结果为:"<<b[2][0]<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -