📄 source_code.txt
字号:
/* float *fTemp;//保存中间结果
int *iMap; //保存映射关系
fTemp=new float[m_iColorNum];
iMap=new int[m_iColorNum];
m_strCode=new CString[m_iColorNum];
for(i=0;i<m_iColorNum;i++) //初始化
{ fTemp[i]=m_fFreq[i];
iMap[i]=i;
}
//用冒泡法对灰度值出现的概率进行排序
for(j=0;j<m_iColorNum;j++)
{ for(i=0;i<m_iColorNum-j-1;i++)
if(fTemp[i]>fTemp[i+1])
{ fT=fTemp[i];
fTemp[i]=fTemp[i+1];
fTemp[i+1]=fT;
for(k=0;k<m_iColorNum;k++)//更换映射关系
{ if(iMap[k]==i)
iMap[k]=i+1;
else if(iMap[k]==i+1)
iMap[k]=i;
}
}
}
//////////////////////////////////////////////
//以下进行灰度值的哈夫曼编码
//找到概率大于0的灰度值开始编码
for(i=0;i<m_iColorNum-1;i++)
{ if(fTemp[i]>0)
break;
}
for(;i<m_iColorNum-1;i++)
{ for(k=0;k<m_iColorNum;k++)
{ if(iMap[k]==i)
m_strCode[k]="1"+m_strCode[k];
else if(iMap[k]==i+1)
m_strCode[k]="0"+m_strCode[k];
}
fTemp[i+1]+=fTemp[i];
for(k=0;k<m_iColorNum;k++)
{ if(iMap[k]==i)
iMap[i]=i+1;
}
//重新排序
for(j=i+1;j<m_iColorNum-1;j++)
{ if(fTemp[j]>fTemp[j+1])
{ fT=fTemp[j];
fTemp[j]=fTemp[j+1];
fTemp[j+1]=fT;
for(k=0;k<m_iColorNum;k++)
{ if(iMap[k]==j)
iMap[k]=j+1;
else if(iMap[k]==j+1)
iMap[k]=j;
}
}
else
break;
}
}*/
/* for(i=1;i<=m_iColorNum;i++)
m_dAvgCodeLen+=m_fFreq[i].freq *m_strCode[i-1].GetLength();
m_dEfficiency=m_dEntropy/m_dAvgCodeLen;
UpdateData(FALSE); //保存变动
///////////////////////////////////////////////////////
//输出编码结果
//设置List控件样式
m_lstTable.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
//给List控件添加Header
m_lstTable.InsertColumn(0,"灰度值",LVCFMT_LEFT,60,0);
m_lstTable.InsertColumn(1,"出现频率",LVCFMT_LEFT,78,0);
m_lstTable.InsertColumn(2,"哈夫曼编码",LVCFMT_LEFT,110,1);
m_lstTable.InsertColumn(3,"码字长度",LVCFMT_LEFT,78,2);
//设置样式为文本
lvitem.mask=LVIF_TEXT;
//计算平均码字长度
for(i=0;i<m_iColorNum;i++)
{ //添加一项
lvitem.iItem=m_lstTable.GetItemCount( );
str.Format("%u",m_fFreq[i+1].GrayValue );
lvitem.iSubItem=0;
lvitem.pszText=(LPSTR)(LPCTSTR)str;
iActualItem=m_lstTable.InsertItem(&lvitem);
//添加其他列
lvitem.iItem=iActualItem;
//添加灰度值出现的概率
lvitem.iSubItem=1;
str.Format("%f",m_fFreq[i+1].freq );
lvitem.pszText=(LPTSTR)(LPCTSTR)str;
m_lstTable.SetItem(&lvitem);
//添加哈夫曼编码
lvitem.iSubItem=2;
lvitem.pszText=(LPTSTR)(LPCTSTR)m_strCode[i];
m_lstTable.SetItem (&lvitem);
//添加码字长度
lvitem.iSubItem=3;
str.Format("%u",m_strCode[i].GetLength ());
lvitem.pszText=(LPTSTR)(LPCTSTR)str;
m_lstTable.SetItem(&lvitem);
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -