Thread: Voting game

    #1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    May 2013
    Posts
    1
    Rep Power
    0

    Voting game


    Hello members, i have a probleme concerning the a voting game .
    Here is the code :

    #include<stdio.h>
    #include<conio.h>
    #define DIM 100
    void vote(char contestants[],int n);
    int sum(int n);
    char contestants[]={'A','B','C','D'};
    main()
    {
    srand(time(NULL));
    vote(contestants,4);

    getch(); }
    void vote(char contestants[],int n) //Voting function
    {
    int verification[DIM][DIM]={0},marks[DIM]={0},s,u,v,e,i;
    s=sum(n);
    for(i=0;i<s;i++)
    { do //Choosing two differents index
    {
    u = rand( ) % n;
    v = rand( ) % n;
    }
    while(u==v);

    if(verification[u][v]!=1 && verification[v][u]!=1) //Checking whether he two contestants have already fought each other or not :
    {
    printf("Which one is better ? 1-%c ou 2-%c .\n Enter 1 or 2 to choose :",contestants[u],contestants[v]);
    scanf("%d",&e);
    if(e==1)
    {
    marks[u]=marks[u]+1;
    }
    else
    {
    marks[v]=marks[v]+1;
    };

    verification[u][v]=1;
    verification[v][u]=1;
    }
    else
    {
    i--; //for repeating the instruction without incrementing the value of 'i'
    };
    }
    int k;
    for(k=0;k<n;k++)
    {
    printf("%c's mark is %d \n",contestants[k],marks[k]);
    }
    }
    int sum(int n)
    {
    int v,i;
    v=0;
    for(i=1 ; i<=n ; i++)
    {
    v=v+i;
    }
    return v;
    }


    The probleme is that the program works for some contestants and stops . I really can't identify the problem.

    Hope you understand my idea and help me identify the problem .
  2. #2
  3. Contributing User
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Aug 2011
    Posts
    4,837
    Rep Power
    480
    Don't put semi-colons after right braces. If you continue, it will someday cause you a horrid trouble.

    Otherwise, include more header files to make the declarations known.

    #include<time.h>
    #include<string.h>
    #include<stdlib.h>
    #include<stdio.h>

    also, your initialization was invalid according to gcc. I used memset.

    int
    verification[DIM][DIM],
    marks[DIM],
    s,u,v,e,i;

    memset(&(verification[0][0]),0,sizeof(verification));
    memset(&(marks[0]),0,sizeof(marks));

    Otherwise, I do not know what you expect your program should do.
    [code]Code tags[/code] are essential for python code and Makefiles!
  4. #3
  5. Contributing User
    Devshed Supreme Being (6500+ posts)

    Join Date
    Jan 2003
    Location
    USA
    Posts
    7,145
    Rep Power
    2222
    1. Use code tags! Otherwise your code listing will lose its formatting.

    Code:
    #include<stdio.h>
    #include<conio.h>
    #define DIM 100
    void vote(char contestants[],int n);
    int sum(int n);
    char contestants[]={'A','B','C','D'};
    main()
    {
     srand(time(NULL));
     vote(contestants,4);
     
        getch();    }
    void vote(char contestants[],int n) //Voting function
    {
    	int verification[DIM][DIM]={0},marks[DIM]={0},s,u,v,e,i;
    	s=sum(n); 
    	for(i=0;i<s;i++)
    	 {  do                //Choosing two differents index
    	 	 {
    		  u = rand( ) % n;
    	 	  v = rand( ) % n;
    		 }
    	 	 while(u==v);
    	 	 
    	 	 if(verification[u][v]!=1 && verification[v][u]!=1) //Checking whether he two contestants have already fought each other or not :
    	 	  {
    	 	  	printf("Which one is better ? 1-%c ou 2-%c .\n Enter 1 or 2 to choose :",contestants[u],contestants[v]);
    	 	  	scanf("%d",&e);
    	 	  	if(e==1)
    	 	  	 {
    	 	  	 	marks[u]=marks[u]+1;
    	 	  	 }
    	 	  	else
    		 	 {
    		 	 	marks[v]=marks[v]+1;
    		 	 };
    		 	 
    		 	 verification[u][v]=1; 
    		 	 verification[v][u]=1;
    	 	  }
    	 	 else 
    	 	  {
    	 	  	i--; //for repeating the instruction without incrementing the value of 'i'
    	 	  };
    	 } 
    	  int k;
    	for(k=0;k<n;k++)
    	  {
    	  	printf("%c's mark is %d \n",contestants[k],marks[k]);
    	  } 
    }
    int sum(int n)
    {
    	int v,i;
    	v=0;
    	for(i=1 ; i<=n ; i++)
    	 {
    	 	v=v+i;
    	 }
    	return v;
    }
    2. Do a proper job of formatting your code. Crappy formatting is crappy formatting. Be consistent in your indenting. And hiding close braces at the ends of lines is even worse than hiding open braces there.

    3. Do not ignore warnings! Warnings are much more important than error messages! And do not attempt to run a program until you have cleared all warnings. If you do, then you have no idea what it's really doing.

    Here is what I get when I try to compile your program with MinGW gcc:
    C:TEST>gcc -Wall otis01.c
    otis01.c:8: warning: return-type defaults to `int'
    otis01.c: In function `main':
    otis01.c:9: warning: implicit declaration of function `srand'
    otis01.c:9: warning: implicit declaration of function `time'
    otis01.c:12: warning: control reaches end of non-void function
    otis01.c: In function `vote':
    otis01.c:15: warning: missing braces around initializer
    otis01.c:15: warning: (near initialization for `verification[0]')
    otis01.c:20: warning: implicit declaration of function `rand'
    otis01.c:46: parse error before `int'
    otis01.c:47: `k' undeclared (first use in this function)
    otis01.c:47: (Each undeclared identifier is reported only once
    otis01.c:47: for each function it appears in.)

    C:TEST>
    The "implicit declaration of function" warnings tell you which functions you didn't #include the header file for. And you see warnings about your botched initialization on line 15 that b49P23TIvg told you about. There's also that misplaced declaration of k on line 46 -- given your secrecy about what language you're using, I'm assuming C rather than C++ or C99, so if you're using something other than C (which means C89 to programmers) then you need to say so.

    Never ignore warnings!
    Last edited by dwise1_aol; May 16th, 2013 at 12:49 PM.

IMN logo majestic logo threadwatch logo seochat tools logo