xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

對算術編解碼的C++實現,處理了有限精度下的編解碼 含主要部分注釋 已經編譯好的所有文件 可直接運行

資源截圖

代碼片段和文件信息

#include
#include
#include
using?namespace?std;

char*?intobi(long?doubleintchar*);
int?chartoint(char*intint*);

int?main()
{
int?ilsklenlen_resultcount=0;
double?difl1;
double?u=1l=0pc=1min=1;
double?*prob*fx;
char?*p*tag;
int?*p2=NULL;
string?alpha;
????string?seq;
//輸入源碼字符并根據源碼字符的長度為概率和概率空間分布函數動態分配內存
cout<<“input?alpha:“< cin>>alpha;
len=alpha.length();
prob=new?double[len];
fx=new?double[len+1];
//輸入概率、需要編碼的序列和計算概率的分布函數
cout<<“input?prob?of?alpha:“< for?(i=0;i cin>>prob[i];
cout<<“input?seq:“< cin>>seq;
ls=seq.length();
fx[0]=0;
for?(i=0;i fx[i+1]=fx[i]+prob[i];
//根據需要編碼序列的長度確定循環次數
//計算出現字符的概率乘積,以便得到編碼后的字符所需的動態存儲空間長度
for?(i=0;i {
for(int?j=0;j {
if?(seq[count]!=alpha[j])?
continue;
else?
pc=pc*prob[j];
count++;
break;
}
}
pc=1/pc;
int?wl=(int)(log(pc)/log(2))+2;
tag=new?char[wl+9];

count=0;
k=0;
//根據需要編碼序列的長度確定循環次數,并將編碼過程中出現的最小編碼區間間隔存儲于變量min中
//min用于解碼過程中得到正確解碼所需的最小長度
while?(ls!=0)
{
dif=u-l;
if(dif min=dif;
//當編碼區間完全落在[0?0.5)或者[0.5?1)時,輸出對應的字符0或1并變換編碼區間
if?(l>=0?&&?u<0.5)
{
tag[k]=48;
k++;
l=2*l;
u=2*u;
}
else?if?(l>=0.5?&&?u<1)
{
tag[k]=49;
k++;
l=2*(l-0.5);
u=2*(u-0.5);
}
//若編碼區間不完全落在給定區間,查找seq中字符在alpha中的位置,并賦值給j
//根據j更改編碼區間的上下限,同時將循環次數減1
else
{
for(int?j=0;j {
if?(seq[count]!=alpha[j])?
continue;
else???
break;
}
l1=l+(u-l)*fx[j];???
u=l+(u-l)*fx[j+1];
l=l1;
count++;
ls--;
}
}
//計算區分當前字符串與其它字符串所需要的最小長度,同時將編碼間隔的上限轉換為二進制表示
p=new?char[wl-k+1];?
p=intobi(uwl-kp);
for(i=0;i tag[k+i]=p[i];
tag[wl]=‘\0‘;
//顯示最小編碼間隔,計算將字符串轉換為整數輸出時需要的長度,動態分配內存存儲
cout<<“min=“< if(wl/8==0)
len_result=wl/8;
else?
len_result=wl/8+1;
p2=new?int[len_result];
chartoint(tagwlp2);
delete?p;
delete?p2;
delete?fx;
delete?prob;
delete?tag;
return?0;
}
//函數intobi將十進制小數num轉換為count位的二進制表示,并以字符串的形式存儲
//num為待轉換的十進制小數
//count為轉換以后得到的二進制表示的長度
//*p為轉換結束后存儲的轉換結果,返回到主函數被使用
char*?intobi(long?double?numint?countchar?*p)?
{
int?ij;
for(j=0;j {?
num=num*2;
if(num>1)
{
i=1;
num=num-1;
}
else?
{
i=0;
}
*(p+j)=i+48;
}
*(p+count)=‘\0‘;
return(p);
}?
//%函數char2int將字符串轉換為無符號8位整數,每8位進行一次處理
//*p為需要轉換的字符串
//*p2為轉換后得到的整數
//count為字符串*p的長度
int?chartoint(char?*?pint?countint?*p2)??
{????????????????????????????????
int?ikmnmnll;
int?res=0l=0;
//將輸入序列長度對8取余,如果余數不為0則補0使得輸入序列長度是8的整數
n=count%8;
if?(n!=0)???????????????????????
{
for(i=0;i<8-n;i++)
*(p+count+i)=‘0‘;
*(p+count+8-n)=‘\0‘;
}
//對字符串進行8位處理,如果處理完8位則將相應的整數存入指針p2中
ll=strlen(p);
for(i=1;i<=ll;i++)?????????
{
k=i%8;
if(k!=0)
{
m=*p;
n=(int)((m-48)*pow(2(8-k)));

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3840??2010-05-06?14:43??算術編碼C++源代碼\code??C\code.cpp

?????文件???????3377??2010-05-06?14:40??算術編碼C++源代碼\code??C\code.dsp

?????文件????????516??2010-05-06?14:43??算術編碼C++源代碼\code??C\code.dsw

?????文件??????41984??2010-05-06?14:43??算術編碼C++源代碼\code??C\code.ncb

?????文件??????48640??2010-05-06?14:43??算術編碼C++源代碼\code??C\code.opt

?????文件????????734??2010-05-06?14:40??算術編碼C++源代碼\code??C\code.plg

?????文件?????577585??2010-05-06?14:40??算術編碼C++源代碼\code??C\Debug\code.exe

?????文件?????808416??2010-05-06?14:40??算術編碼C++源代碼\code??C\Debug\code.ilk

?????文件?????266233??2010-05-06?14:40??算術編碼C++源代碼\code??C\Debug\code.obj

?????文件????2087540??2010-05-06?13:09??算術編碼C++源代碼\code??C\Debug\code.pch

?????文件????1115136??2010-05-06?14:40??算術編碼C++源代碼\code??C\Debug\code.pdb

?????文件??????91136??2010-05-06?14:41??算術編碼C++源代碼\code??C\Debug\vc60.idb

?????文件?????135168??2010-05-06?14:40??算術編碼C++源代碼\code??C\Debug\vc60.pdb

?????文件???????4045??2010-05-06?14:19??算術編碼C++源代碼\decode??C\decode.cpp

?????文件???????3401??2010-05-06?14:24??算術編碼C++源代碼\decode??C\decode.dsp

?????文件????????520??2010-05-06?14:26??算術編碼C++源代碼\decode??C\decode.dsw

?????文件??????41984??2010-05-06?14:26??算術編碼C++源代碼\decode??C\decode.ncb

?????文件??????48640??2010-05-06?14:26??算術編碼C++源代碼\decode??C\decode.opt

?????文件????????744??2010-05-06?14:24??算術編碼C++源代碼\decode??C\decode.plg

?????文件?????266385??2010-05-06?14:19??算術編碼C++源代碼\decode??C\Debug\code.obj

?????文件?????573492??2010-05-06?14:24??算術編碼C++源代碼\decode??C\Debug\decode.exe

?????文件?????804772??2010-05-06?14:24??算術編碼C++源代碼\decode??C\Debug\decode.ilk

?????文件?????222832??2010-05-06?14:24??算術編碼C++源代碼\decode??C\Debug\decode.obj

?????文件????2325928??2010-05-06?14:19??算術編碼C++源代碼\decode??C\Debug\decode.pch

?????文件????1106944??2010-05-06?14:24??算術編碼C++源代碼\decode??C\Debug\decode.pdb

?????文件??????99328??2010-05-06?14:24??算術編碼C++源代碼\decode??C\Debug\vc60.idb

?????文件?????135168??2010-05-06?14:19??算術編碼C++源代碼\decode??C\Debug\vc60.pdb

?????目錄??????????0??2010-05-06?14:43??算術編碼C++源代碼\code??C\Debug

?????目錄??????????0??2010-05-06?14:43??算術編碼C++源代碼\decode??C\Debug

?????目錄??????????0??2010-05-06?14:43??算術編碼C++源代碼\code??C

............此處省略5個文件信息

評論

共有 條評論