首先感谢您的阅读。我想写的程序必须做以下事情:
在大古斯拉鲁市长的选举中,有M个候选人被从1到M的数字标记出来,N个选民中的每一个都给他们中的一个人投了重要的一票。编写一个程序,读取描述选票,然后给出投票结果和选出的市长候选人的编号。根据大古斯拉鲁的选举法,如果两个或两个以上的候选人获得相同的最高票数,则选举由票数较低的人获胜。
入口第一行输入包含两个整数M和N (1 <= M <= 10, 1 <= N <= 1000),确定适当的候选人人数和投票人数。第二行是从1到m的N个整数,这些是候选人的数量,它们被分配给每个声音。
在前M行中,应按顺序输出编号为1到M的候选人赢得的选票,格式为"X: Y",其中X是候选人的人数,Y是投给候选人的票数。然后单独的一行应该包含赢得选举的候选人的号码。
入口
:
3 10
1 3 2 1 2 3 3 3 2 2
退出:
1: 2
2: 4
3: 4
我现在的代码是:
#include <iostream>
using namespace std;
int main()
{
int c,v,tab[100],sum,p;
sum=0;
cin>>c>>v;
for(p=1;p<=v;p++)
cin>>tab[p];
for(int i=1;i<=c;i++){
if (i==tab[p]){
sum+=tab[p]+1;
}
cout<<i<<": ";
cout<<sum<<endl;
}
return 0;
}
我的输出如下:
1: 0
2: 0
3: 0
到目前为止,我已经弄清楚了,它似乎所做的就是取并输出总和。有什么建议吗?谢谢。
免责声明我没有测试过这个
首先,您应该更整齐地编写代码。给出适当的自解释名称,并使用缩进以更清楚地显示循环。
#include <iostream>
using namespace std;
int main()
{
在自己的行中初始化变量,并为它们提供有用的名称。
int candidateAmount;
int voteAmount;
cin >> candidateAmount
>> voteAmount;
数组在c++中是从零开始的。一个包含100个元素的数组将从索引0运行到索引99。
int votes[voteAmount];
int votesPerCandidate[candidateAmount];
for (int voteCount = 0; voteCount < voteAmount; ++voteCount)
{
int currentVote = 0;
cin >> currentVote;
votes[voteCount] = currentVote;
++votesPerCandidate[currentVote];
}
for (int candidateCount = 0; candidateCount < candidateAmount ; ++candidateCount)
{
cout << candidateCount + 1 << ": "
votesPerCandidate[candidateCount] << endl;
}
return 0;
}