1189: 选票统计(二)(结构体专题)

问题

1189: 选票统计(二)(结构体专题)
时间限制: 1 Sec 内存限制: 128 MB
提交: 3392 解决: 2188

计算机与通信工程学院2012届学生会主席投票选举工作定于1月6日在电教楼前隆重举行。本次投票将采用电脑统计选票的方式,当投票选举正式开始后,同学们将排队一一走到电脑前,投上自己神圣的一票:在电脑前输入一个姓名,然后输入回车表示确认。
当所同学投票结束,工作人员只需要输入一个”#”并回车确认,表示投票结束,电脑立即显示出得票最高的同学姓名,该同学将当选为新一届计算机与通信工程学院学生会主席。
选举大会的准备工作正在紧张进行,编程统计投票的工作就交给你了。

输入
本题为单实例测试。输入包含多行,每行是一个由小写英文字母组成的字符串,表示一个姓名,遇到#时表示输入结束。 你可以假定,参加投票学生的人数不超过500人,每个学生姓名字符串的长度小于20。

输出
输出为一个字符串——当选为学生会主席的学生姓名

样例输入 Copy
wanglin
liming
wanglin
wanglin
fangfang
liming

样例输出 Copy
wanglin

代码

#include <iostream>
#include <vector>
#include <string>
using namespace std;

struct STU {
    string name;
    unsigned int votes;
};
void voteStage();
void printRes();
vector<STU> stu_vec;

int main() {
    voteStage();
    // vote 阶段
    printRes();

    return 0;
}

// vote 阶段的函数
void voteStage()
{
    int find_flag = 0;
    string name_input;
    cin >> name_input;
    while (!(name_input == "#")) {
        find_flag = 0;
        for (auto it = stu_vec.begin(); it != stu_vec.end(); it++) {
            if (name_input == (*it).name) {
                find_flag = 1;
                (*it).votes += 1;
                break;
            }
        }
        if (find_flag == 0) {
            STU temp{ name_input, 1 };  // 放入容器时,初始票数为 1
            stu_vec.push_back(temp);
        }
        cin >> name_input;
    }
}

void printRes()
{
    int max = 0;
    string name_chair = "";
    for (auto it = stu_vec.begin(); it != stu_vec.end(); it++) {
        if ((*it).votes > max) {
            max = (*it).votes;
            name_chair = (*it).name;
        }
    }
    cout << name_chair << endl;
    //    for (auto it = stu_vec.begin(); it != stu_vec.end(); it++) {
    //        cout << (*it).name << "\t\t" << (*it).votes << endl;
    //    } // 测试用
}

小结

再接再厉,理论加实践。循序渐进,均衡各科,重在专注和坚持,行动起来!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值