So, I see a logic error in this bit of code:
if (winner_int < candidates[i].votes)
winner = candidates[i].name;
Since you set winner_int equal to the number of votes that candidate and never change that value, this will not always provide a valid winner in each situation. If candidate.votes == 3, candidate.votes == 4, and candidate....