Вы создаете массив из одного char
и одного int
с этим кодом:
allCandidates = new char[1];
votes = new int[1];
Я полагаю, вы имели в виду:
allCandidates = new char[numCandidates];
votes = new int[numCandidates];
, который создает динамические массивы размером numCandidates
.
Кроме того, когда вы вводите имена кандидатов, которые вы, вероятно, хотели бы использовать std::string
, примерно так:
string *allCandidates;
allCandidates = new string[numCandidates];
(Спасибо Бену Фойгту за указание на это) И поскольку вы вводите их полное имя, вам нужно будет вводить его по-другому. Возможно использовать getline()
:
getline(cin, allCandidates[i]);
В ответ на ваше редактирование:
Вы должны будете передать свои указатели как ссылки:
void readVotes (ifstream & infile, int *&votes, string *&allCandidates, int & numCandidates)
и освободите их в main()
delete[] votes;
delete[] allCandidates;