Помощь программы голосования CPP (неверный вывод)

Прежде всего, спасибо за чтение. Программа, которую я пытаюсь написать, должна делать следующее:

На выборах мэра Великого Гуслару сняли М кандидатов, помеченных цифрами от 1 до М. Каждый из N избирателей проголосовал за одного из них.
Напишите программу, которая читает описание голосов, а затем сообщит результаты голосования и номер выбранного кандидата в мэры.
Согласно закону о выборах Великого Гуслару, если два или более кандидатов получили одинаковое, наибольшее количество голосов, на выборах побеждает тот, кто имеет меньшее количество голосов.

Вход

Первая строка ввода содержит два целых числа M и N (1 <= М <= 10, 1 <= N <= 1000), определяя соответствующее количество кандидатов и количество поданных голосов.
Вторая строка — это N целых чисел от 1 до М. Это номера кандидатов, которые были отданы отдельным голосам.

Выход

В первых 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

Решение

Отказ от ответственности Я не проверял это

Прежде всего, вы должны работать немного более аккуратно с вашим кодом. Дайте правильные понятные названия и используйте отступы, чтобы более четко отображать петли.

#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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]