Я делаю простую программу для класса, чтобы можно было узнать нового мэра / президента на основе системы избирательных колледжей. Вход в мой массив и последующий вывод таблицы результатов работают отлично, но...Мои переменные aStatesWon, bStatesWon, cStatesWon и dStatesWon (для кандидатов A, B, C и D соответственно) не рассчитываются должным образом, хотя я думал, что они правильно их вычислили.Я получаю цифры, похожие на -2324252 или 62341, а не на 2 или 3, как я ожидаю.Вот код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define STATES 5
#define CANDIDATES 4
void declareNewMayor(int aStatesWon,int bStatesWon,int cStatesWon, int dStatesWon);
void main() {
int votes[STATES][CANDIDATES];
int StateWon = -1;
int StateWinner;
int aStatesWon = 0;
int bStatesWon = 0;
int cStatesWon = 0;
int dStatesWon = 0;
int newMayor;
FILE* open;
int i,j;
for (i = 0; i < STATES; i++)
{
StateWinner = 0;
StateWon = -1;
for (j = 0; j < CANDIDATES; j++)
{
printf("Please enter the votes for candidate %d for state %d\n",(j+1),(i + 1));
scanf("%d",&votes[i][j]);
if (votes[i][j] > StateWon)
{
StateWon = votes[i][j];
StateWinner = j;
} //see if the won that state
}
printf("Winner of State %d is Candidate %d\n",i,j);
if (StateWinner = 0)
{
aStatesWon++;
}
else if (StateWinner = 1)
{
bStatesWon++;
}
else if (StateWinner = 2)
{
cStatesWon++;
}
else if (StateWinner = 3)
{
dStatesWon++;
}//increase number of states won by that candidate if the won that state
printf("States Won A:%d B:%d C:%d D:%d", aStatesWon, bStatesWon, cStatesWon, dStatesWon);
}//enter in votes for each candidate for each state
open = fopen("votes.txt", "w");
if (open == NULL)
{
printf("\nFile could not be opened\n");
}
else
{
printf("STATES CANDIDATE A CANDIDATE B CANDIDATE C CANDIDATE D\n");
fprintf(open,"STATES CANDIDATE A CANDIDATE B CANDIDATE C CANDIDATE D\n");
for (i = 0; i < STATES; i++)
{
printf("STATE %d", (i + 1));
fprintf(open,"STATE %d", (i + 1));
for (j = 0; j < CANDIDATES; j++)
{
printf(" %d ", votes[i][j]);
fprintf(open," %d ", votes[i][j]);
}
printf("\n");
}//print out table
}
declareNewMayor(aStatesWon,bStatesWon,cStatesWon,dStatesWon);
}//main
void declareNewMayor(int aStatesWon, int bStatesWon, int cStatesWon, int dStatesWon)
{
char winner;
int statesWon;
if (aStatesWon > bStatesWon&&aStatesWon > cStatesWon&&aStatesWon > dStatesWon)
{
statesWon = aStatesWon;
winner = "A";
}
else if (bStatesWon > aStatesWon&&bStatesWon > cStatesWon&&bStatesWon > dStatesWon) {
statesWon = bStatesWon;
winner = "B";
}
else if (cStatesWon > aStatesWon&&cStatesWon > bStatesWon&&cStatesWon > dStatesWon) {
statesWon = cStatesWon;
winner = "C";
}
else if (dStatesWon > aStatesWon&&dStatesWon > cStatesWon&&dStatesWon > aStatesWon) {
statesWon = dStatesWon;
winner = "C";
}
printf("The new Mayor is candiate %c with %d states won!", winner,statesWon);
}//calculate new mayor and declare it