说明:将左边输入框中的数值排名,一行一个,排名后将名次显示在右边输入框中。需要配合Excel来使用本工具。
用到了标准库中的map和multimap,自动排序,真的非常好用!
这个工具主要用于教师对学生分数的排名。比如:
97 7
100 1
100 1
100 1
100 1
92 9
97 7
100 1
98 6
89 10
下载文件 (已下载 73 次)
用到了标准库中的map和multimap,自动排序,真的非常好用!
这个工具主要用于教师对学生分数的排名。比如:
97 7
100 1
100 1
100 1
100 1
92 9
97 7
100 1
98 6
89 10
下载文件 (已下载 73 次)// first:待排序的分数; second:序号
typedef std::multimap<double, int> MMAP;
// first:序号; second:名次
typedef std::map<int, CString> MAP;
TCHAR szBuf[20];
MMAP mmap;
int nTotal = m_wndSrc.GetLineCount();
for (int i = 0; i < nTotal; i++)
{
ZeroMemory(szBuf, sizeof(szBuf));
m_wndSrc.GetLine(i, szBuf, _countof(szBuf));
if (szBuf[0] == 20) continue;
mmap.insert(MMAP::value_type(_tstoi(szBuf), i));
}
MAP map;
int i = 1, j = 1;
CString str;
if (IsDlgButtonChecked(IDC_Desc))
{
const MMAP::const_iterator iterBegin = --mmap.begin();
for (MMAP::iterator iter = --mmap.end(); iter != iterBegin; iter--)
{
str.Format(_T("%d"), i);
map.insert(MAP::value_type(iter->second, str));
// 递增名次
j++;
MMAP::iterator it = iter;
--it;
if (it != iterBegin && iter->first != (it)->first) i = j;
}
}
else
{
const MMAP::const_iterator iterEnd = mmap.end();
for (MMAP::iterator iter = mmap.begin(); iter != iterEnd; iter++)
{
str.Format(_T("%d"), i);
map.insert(MAP::value_type(iter->second, str));
// 递增名次
j++;
MMAP::iterator it = iter;
++it;
if (it != iterEnd && iter->first != (it)->first) i = j;
}
}
typedef std::multimap<double, int> MMAP;
// first:序号; second:名次
typedef std::map<int, CString> MAP;
TCHAR szBuf[20];
MMAP mmap;
int nTotal = m_wndSrc.GetLineCount();
for (int i = 0; i < nTotal; i++)
{
ZeroMemory(szBuf, sizeof(szBuf));
m_wndSrc.GetLine(i, szBuf, _countof(szBuf));
if (szBuf[0] == 20) continue;
mmap.insert(MMAP::value_type(_tstoi(szBuf), i));
}
MAP map;
int i = 1, j = 1;
CString str;
if (IsDlgButtonChecked(IDC_Desc))
{
const MMAP::const_iterator iterBegin = --mmap.begin();
for (MMAP::iterator iter = --mmap.end(); iter != iterBegin; iter--)
{
str.Format(_T("%d"), i);
map.insert(MAP::value_type(iter->second, str));
// 递增名次
j++;
MMAP::iterator it = iter;
--it;
if (it != iterBegin && iter->first != (it)->first) i = j;
}
}
else
{
const MMAP::const_iterator iterEnd = mmap.end();
for (MMAP::iterator iter = mmap.begin(); iter != iterEnd; iter++)
{
str.Format(_T("%d"), i);
map.insert(MAP::value_type(iter->second, str));
// 递增名次
j++;
MMAP::iterator it = iter;
++it;
if (it != iterEnd && iter->first != (it)->first) i = j;
}
}
批量删词工具(Word Manager) 1.01
Quick MSDN 1.1



