📄 tool.cpp
字号:
// Tool.cpp: implementation of the Tool class.
//
//////////////////////////////////////////////////////////////////////
#pragma warning(disable:4786)
#include "stdafx.h"
#include "Kap.h"
#include "Tool.h"
#include <map>
#include <string>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
#pragma warning(disable:4786)
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#pragma warning(disable:4786)
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Tool::Tool()
{
}
Tool::~Tool()
{
}
void Tool::Compute()
{
int zhao1,zhao2,zhao3,zhao4;
int Liu1, Liu2, Liu3,Liu4;
zhao1=zhao2=zhao3=zhao4=0;
Liu1=Liu2=Liu3=Liu4=0;
CStdioFile fOut("nonRes.txt",CFile::modeCreate|CFile::modeReadWrite);
CStdioFile fLi("li_labeled.txt",CFile::modeRead);
CStdioFile fLiu("liu_labeled.txt",CFile::modeRead);
CStdioFile fZhao("zhao_labeled.txt",CFile::modeRead);
map<string,string> map_li;
map<string,string> map_liu;
map<string,string> map_zhao;
CString strLine;
while(fLi.ReadString(strLine))
{
int nIndex=strLine.Find(" ");
nIndex=strLine.Find(" ",nIndex+1);
string s_strKey=(LPCTSTR)strLine.Left(nIndex);
string s_strV=(LPCTSTR)strLine.Mid(nIndex+1,1);
map_li.insert(make_pair(s_strKey,s_strV));
}
while(fLiu.ReadString(strLine))
{
int nIndex=strLine.Find(" ");
nIndex=strLine.Find(" ",nIndex+1);
string s_strKey=(LPCTSTR)strLine.Left(nIndex);
string s_strV=(LPCTSTR)strLine.Mid(nIndex+1,1);
int nV=atoi(s_strV.c_str());
switch(nV) {
case 1:
Liu1++;
break;
case 2:
Liu2++;
break;
case 3:
Liu3++;
break;
case 4:
Liu4++;
break;
}
map_liu.insert(make_pair(s_strKey,s_strV));
}
while(fZhao.ReadString(strLine))
{
int nIndex=strLine.Find(" ");
nIndex=strLine.Find(" ",nIndex+1);
string s_strKey=(LPCTSTR)strLine.Left(nIndex);
string s_strV=(LPCTSTR)strLine.Mid(nIndex+1,1);
int nV=atoi(s_strV.c_str());
switch(nV) {
case 1:
zhao1++;
break;
case 2:
zhao2++;
break;
case 3:
zhao3++;
break;
case 4:
zhao4++;
break;
}
map_zhao.insert(make_pair(s_strKey,s_strV));
}
map<string,string>::iterator iter_li=map_li.begin();
map<string,string>::iterator iter_liu=map_liu.begin();
map<string,string>::iterator iter_zhao=map_zhao.begin();
//mod
vector<pair<string,string> > vecLi;
vector<pair<string, string> > vecLiu;
vector<pair<string, string> > vecZhao;
/*
int nCount=0;
for(;iter_li!=map_li.end();iter_li++,iter_liu++,iter_zhao++)
{
if((iter_li->first!=iter_zhao->first)||(iter_li->first!=iter_liu->first)||(iter_zhao->first!=iter_liu->first))
AfxMessageBox("bAD");
if((iter_li->second==iter_liu->second)&&(iter_liu->second==iter_zhao->second))
nCount++;
}
CString strCount;
strCount.Format("%d",nCount);
AfxMessageBox(strCount);
*/
for(;iter_li!=map_li.end();iter_li++,iter_liu++,iter_zhao++)
{
vecLi.push_back(*iter_li);
vecLiu.push_back(*iter_liu);
vecZhao.push_back(*iter_zhao);
}
sort(vecLi.begin(),vecLi.end());
sort(vecLiu.begin(),vecLiu.end());
sort(vecZhao.begin(),vecZhao.end());
vector<pair<string,string> >::iterator iterLi=vecLi.begin();
vector<pair<string,string> >::iterator iterLiu=vecLiu.begin();
vector<pair<string,string> >::iterator iterZhao=vecZhao.begin();
int nCount=0;
for(;iterLi!=vecLi.end();iterLi++,iterLiu++,iterZhao++)
{
if((iterLi->first!=iterZhao->first)||(iterLi->first!=iterLiu->first)||(iterZhao->first!=iterLiu->first))
AfxMessageBox("bAD");
if((iterLiu->second==iterZhao->second))
nCount++;
else
{
CString strOut="";
CString strTemp=(iterZhao->first).c_str();
strOut=strOut+strTemp+":";
CString strZhao="";
CString strLiu="";
strZhao=(iterZhao->second).c_str();
strLiu=(iterLiu->second).c_str();
strOut=strOut+"Zhao "+strZhao+"|";
strOut=strOut+"Liu "+strLiu+"\n";
fOut.WriteString(strOut);
}
}
float Pe=((float)(zhao1+Liu1)/(2*300))*((float)(zhao1+Liu1)/(2*300))+((float)(zhao2+Liu2)/(2*300))*((float)(zhao2+Liu2)/(2*300))\
+((float)(zhao3+Liu3)/(2*300))*((float)(zhao3+Liu3)/(2*300))+((float)(zhao4+Liu4)/(2*300))*((float)(zhao4+Liu4)/(2*300));
float k=(((float)nCount/300)-Pe)/(1-Pe);
CString strCount;
strCount.Format("%d",nCount);
CString strResultOut="Count:"+strCount;
strCount.Format("%f",Pe);
strResultOut=strResultOut+" Pe:"+strCount;
strCount.Format("%f",k);
strResultOut=strResultOut+" K:"+strCount;
AfxMessageBox(strResultOut);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -