计票统计

来源:互联网 发布:中国网络的发展历程 编辑:程序博客网 时间:2024/06/05 12:41


#include <iostream>#include <string>/* *采用两个数组分别保存候选人及其对应票数 */using namespace std;string s1,s2,s3;int main(){    string input,candidate[100];    int count[100] = {0}, k = 0, num, useless = 0,flag = 1;    while(flag){        getline(cin,input);        if(input.substr(0,12) == "addCandidate"){            candidate[k++] = input.substr(13);        }        if(input.substr(0,4) == "vote"){            s2 = input.substr(5);            num = 0;            for(int i = 0; i < k; i++){                if(s2 == candidate[i]){                    count[i]++;                    num = 1;                }            }            if(num == 0 ) useless++;        }        if(input == "getVoteResult"){            for(int j=0; j < k; j++){                cout<<candidate[j]<<" "<<count[j]<<endl;            }            cout<<useless;            flag = 0;        }    }    return 0;}

采用STL容器中的map

#include <iostream>#include <map>#include <string>/* *采用了C++中的STL容器map,这样处理更方便简洁 */using namespace std;int main(){    string input,s;    int useless = 0;    map<string,int> cnt;    while(getline(cin,input)){        if(input.substr(0,12) == "addCandidate"){            cnt[input.substr(13)] = 0;   //每个候选人初始票数为0        }        if(input.substr(0,4) == "vote"){            s = input.substr(5);  //截取字符串:从input[5]开始知道input的结尾,如果输入为 "vote xx1",则截取的字符串为"xx1",即为候选人的名字            if(cnt.count(s))     //如果候选人存在,则对应票数+1                cnt[s]++;    //map可以像数组一样使用,事实上map也称为"关联数组"            else                useless++;      //候选人不存在则无效票数+1        }        if(input == "getVoteResult"){            map<string,int>::iterator it;            for(it = cnt.begin(); it != cnt.end(); it++)                cout<< it->first << " " << it->second << endl;            cout<<useless;            return 0;        }    }    return 0;}


0 0
原创粉丝点击