# Problem output of function

Show 50 post(s) from this thread on one page
Page 2 of 2 First 12
• May 24th, 2013, 07:24 PM
mathmari
Re: Problem output of function
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 :(
• May 24th, 2013, 07:29 PM
mathmari
Re: Problem output of function
I gave the values:
1
2
3
1
2
3
1
2
3
but I just get the result player 3 winner :(
• May 25th, 2013, 03:21 AM
2kaud
Re: Problem output of function
Quote:

Originally Posted by mathmari
I gave the values:
1
2
3
1
2
3
1
2
3
but I just get the result player 3 winner :(

What about the terminating 0? The program will continue reading data until it finds the 0. If there is no terminating 0 specified the program will read data until it finds one somewhere in memory - which will make player 3 always the winner!
• May 25th, 2013, 03:37 AM
2kaud
Re: Problem output of function
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.

Code:

```#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; }```
This code produces the output
player 1 winner
player 2 winner
player 3 winner
• May 25th, 2013, 10:43 AM
mathmari
Re: Problem output of function
Thank you veeery much!!!!!!!!! :thumb:
Show 50 post(s) from this thread on one page
Page 2 of 2 First 12