投票程序CPP帮助(错误输出)



首先感谢您的阅读。我想写的程序必须做以下事情:

在大古斯拉鲁市长的选举中,有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; 
}

最新更新