首先感谢阅读。我想写的程序必须遵循:
在大古斯拉鲁市市长的选举中,从1到M的数字中选出了M个候选人.N选民中的每一个都对其中一人进行了重要投票。 编写一个程序,读取描述投票,然后给出市长选举候选人的投票结果和编号。 根据Great Guslaru的选举法,如果两名或两名以上的候选人获得相同的票数,那么选举将由数量较少的人赢得。
入口
输入的第一行包含两个整数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
到目前为止,我已经想到它似乎所做的就是拿出并输出总和。任何提示或建议?感谢。
答案 0 :(得分:0)
免责声明我尚未对此进行测试
首先,您应该对代码更加整洁。给出正确的不言自明的名称并使用缩进来更清楚地显示循环。
#include <iostream>
using namespace std;
int main()
{
在他们自己的行上初始化变量,并为他们提供信息丰富的名称。
int candidateAmount;
int voteAmount;
cin >> candidateAmount
>> voteAmount;
数组在c ++中是零基础的。因此,从索引0到99将运行100个元素数组。
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;
}