Problem output of function - Page 2
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Page 2 of 2 FirstFirst 12
Results 16 to 20 of 20

Thread: Problem output of function

  1. #16
    Join Date
    Apr 2013
    Posts
    45

    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

  2. #17
    Join Date
    Apr 2013
    Posts
    45

    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

  3. #18
    Join Date
    Dec 2012
    Location
    England
    Posts
    2,540

    Re: Problem output of function

    Quote Originally Posted by mathmari View Post
    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!
    All advice is offered in good faith only. You are ultimately responsible for effects of your programs and the integrity of the machines they run on.

  4. #19
    Join Date
    Dec 2012
    Location
    England
    Posts
    2,540

    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
    All advice is offered in good faith only. You are ultimately responsible for effects of your programs and the integrity of the machines they run on.

  5. #20
    Join Date
    Apr 2013
    Posts
    45

    Talking Re: Problem output of function

    Thank you veeery much!!!!!!!!!

Page 2 of 2 FirstFirst 12

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center