I give these values(the same like you):
1
2
3
1
2
3
1
2
3
but I get the result player 3 winner :(
Printable View
I give these values(the same like you):
1
2
3
1
2
3
1
2
3
but I get the result player 3 winner :(
I gave the values:
1
2
3
1
2
3
1
2
3
but I just get the result player 3 winner :(
If you want to use a fixed size matrix for play - rather than dynamically allocated at run time - then the code below will check for array bound overflow. Note the final terminating 0 in the test data in main.
There must be someway for find_winner to know when the end of array ans is reached. I've used 0 as the terminating number. Another way of doing this would be to have an extra parameter to find_winner that specifies the number of elements in array ans. However, this could be prone to error. IMO having a terminating 0 is preferable.
This code produces the outputCode:#include <stdio.h>
#define NO_PLAYER 3
void find_winner(int ans[]) {
int noplay = 0,
i = 0,
pl = -1,
max = 0,
j,
play[NO_PLAYER] = {0};
while (ans[i] > 0) {
if (ans[i++] == 1)
if (++pl >= NO_PLAYER)
break;
play[pl]++;
if (play[pl] > max)
max = play[pl];
}
for (j = 0; j < NO_PLAYER; j++)
if (play[j] == max)
printf("player %d winner\n", j + 1);
}
int main()
{
int answers[] = {1, 2, 3, 1, 2, 3, 1, 2, 3, 0};
find_winner(answers);
return 0;
}
player 1 winner
player 2 winner
player 3 winner
Thank you veeery much!!!!!!!!! :thumb: