模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票,选举结束后获取各个候选人的得票数以及无效票的个数。 例如: 添加了“ChenFeng”和“Dongli”作为候选人。
请实现接口: unsigned int AddCandidate (char* pCandidateName);
Void Vote(char* pCandidateName);
功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源 输出:无
void Clear() // 功能:清除投票结果,释放所有资源 |
#include <stdlib.h>
#include <map>
#include <string>
#include "oj.h"
using namespace std;
map<string, unsigned int> CandidateMap;
unsigned int NullVoteNum = 0;
unsigned int AddCandidate(char* pCandidateName)
{
map<string, unsigned int>::iterator pFind_it = CandidateMap.find(pCandidateName);
if (pFind_it == CandidateMap.end())
{
CandidateMap.insert(make_pair(pCandidateName, 0));
return 1;
}
else
return 0;
}
void Vote(char* pCandidateName)
{
map<string, unsigned int>::iterator pFind_it = CandidateMap.find(pCandidateName);
if (pFind_it != CandidateMap.end())
(pFind_it->second)++;
else
NullVoteNum++;
}
unsigned int GetVoteResult(char* pCandidateName)
{
if (NULL == pCandidateName)
return NullVoteNum;
map<string, unsigned int>::iterator pFind_it = CandidateMap.find(pCandidateName);
return pFind_it->second;
}
void Clear()
{
CandidateMap.erase(CandidateMap.begin(), CandidateMap.end());
NullVoteNum = 0;
}
模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票,选举结束后获取各个候选人的得票数以及无效票的个数。 例如: 添加了“ChenFeng”和“Dongli”作为候选人。
请实现接口: unsigned int AddCandidate (char* pCandidateName);
Void Vote(char* pCandidateName);
功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源 输出:无
void Clear() // 功能:清除投票结果,释放所有资源 |