Can't figure this out

This is a discussion on Can't figure this out within the C Programming forums, part of the General Programming Boards category; EDIT: All I did was take out ", pairarr[2]={0}, twopairarr[4]={0}" from the declaration line and it worked. Please explain why ...

  1. #1
    Registered User
    Join Date
    Feb 2011
    Posts
    1

    Can't figure this out

    EDIT: All I did was take out ", pairarr[2]={0}, twopairarr[4]={0}" from the declaration line and it worked. Please explain why it messed up my program? Thanks

    Hey guys, I created this program for my class, and most of it is working and I've been fixing it a lot but new problems seem to come up.

    This program is a basic poker game, which shuffles the deck and displays a 5 card hand, then tells the user what kind of hand they have (pair, three of a kind, flush, etc)

    For some reason, whenever I have an Ace in the hand, it seems to mess it up, here's a couple examples:

    Six of ---
    King of ---
    Ace of ---
    Eight of ---
    Three of ---
    and it will show that there is a pair...

    Queen of ---
    Deuce of ---
    Eight of ---
    Ace of ---
    Deuce of ---
    and it will show that there is two pairs

    Thanks in advance for helping
    My guess would be to first look at how I check for pairs, three of a kind, etc. The problem won't be anywhere else than the main I think, I'm positive it has something to do with how I check for hand types, I will keep looking over it also.

    Here is my code:
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void shuffle(int [][13]);
    void deal(int [][13], char *[], char*[], int[][2]);
    void hand(int [][13], char *[], char*[]);
    void pair(int [][2]);
    void bubblesort(int [][2]);
    
    void main()
    {
        int cards[5][2] = {0};//hand
        int i, k, j, x=0, z, y, f;//counters
        int fullhouse=0, straight=0, flush=0, fourkind=0, threekind=0, twokind=0, pair=0, pairarr[2]={0}, twopairarr[4]={0};
        char *suit[4] = {"Hearts", "Diamonds", "Clubs", "Spades"};
        char *face[13] = {"Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
        int deck[4][13] = {0};
     
        srand(time(0));
     
        shuffle(deck);
        deal(deck, face, suit, cards);
       
       for(x=0; x<=4; x++)
            puts("");
     
       for(i = 0; i < 5; i++)
       {
            printf("%-8sof  %8s\n", face[cards[i][0]],suit[cards[i][1]]);//prints hand
       }
     
       bubblesort(cards);
      
       /////pair/////
       for(j=1; j<5; j++)
           {
           for(k=0; k<5; k++)
               if(cards[k][0] == cards[k+j][0])
                    twokind += 1;
               if(twokind == 1)
            		pair = 1;    
           }
           
       /////three of a kind/////
      
       for(x=0; x<=4; x++)
             if(cards[x][0] == cards[x+1][0] && cards[x][0] == cards[x+2][0])
                 threekind = 1;
             if(threekind == 1 && pair == 1)
             	 fullhouse = 1;
             else
             	pair = 0;
        /////four of a kind/////         
        for(x=0; x<4; x++)
                {
                if(cards[x][0] == cards[x+1][0])
                    fourkind += 1;
                if(fourkind == 3)
                	threekind = 0;
                }
       
        /////flush/////      
        for(z=1; z<3; z++)
        for(x=0; x<5; x++)
            {
                if(cards[x][1] == cards[0+z][1])
                    flush = 1;
                else
                flush = 0;
                if(flush == 0)
                break;
               }
       
        /////straight/////
        for(f=1; f<=4; f++)
            {
            if(cards[0][0] == (cards[f][0] - f))
                straight = 1;
            else
                straight = 0;
            if(straight == 0)
            break;
            }
      
        puts("");
       
        if(flush == 1)
            printf("You have a flush!");
       
        if(straight == 1)
            printf("You have a straight!");
          
        if(fullhouse == 1 && threekind == 1)
            printf("You have a full house!");
        else if(fourkind == 3)
            printf("You have four of a kind.");      
        else if(threekind == 1)
            printf("You have three of a kind.");
        else if(twokind == 2)
            printf("You have two pairs.");
        else if(twokind == 1)
            printf("You have a pair of ");
        else
            y=0;
      
           if(y==0 && flush != 1 && straight != 1)
               printf("You have a bad hand :(");
      
     
    }
    
    void shuffle(int workdeck[][13])
    {
    int card, row, column;
    
    for(card = 1; card <=52; card++)
    {
        row = rand() % 4;
        column = rand() % 13;
        while(workdeck[row][column] != 0)
        {
            row = rand() % 4;
            column = rand() % 13;
        }
        workdeck[row][column] = card;
        }
    }
    
    void deal(int workdeck2[][13], char *workface[], char *worksuit[], int cards[5][2])
    {
        int card, row, column;
     
        for(card = 1; card <=5; card++)
            for(row = 0; row <=3; row++)
                for(column = 0; column <= 12; column++)
                    if(workdeck2[row][column] == card)
                    {
                        cards[card - 1][0] = column;
                        cards[card - 1][1] = row;
                        printf("%5s of %-8s", workface[column], worksuit[row]); //prints hand
                        if(card % 2 == 0)
                        puts("");
                        else
                        printf("\t");
                        break;
                    }
                 
                 
          cards[0][0] = 0; //manual hand to test displaying of hand types, etc
          cards[0][1] = 1;
          cards[1][0] = 12;
          cards[1][1] = 3;
          cards[2][0] = 2;
          cards[2][1] = 3;
          cards[3][0] = 0;
          cards[3][1] = 3;
          cards[4][0] = 2;
          cards[4][1] = 1;
               
    }
    
    void bubblesort(int hand[][2])
    {
        int temp = 0, i,j;
        for(i = 0; i < 5; i++)
        {
            for(j = 0; j < 5; j++)
            {
                if(hand[j][0] > hand[j+1][0])
                {
                    temp = hand[j][0];
                    hand[j][0] = hand[j+1][0];
                    hand[j+1][0] = temp;
                }
            }
        }
    }
    Last edited by Roflapiggy; 02-19-2011 at 08:10 PM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. symmetryc problem
    By raizard in forum C Programming
    Replies: 13
    Last Post: 08-29-2010, 10:11 PM
  2. * Character in
    By Jonnyb42 in forum C Programming
    Replies: 14
    Last Post: 01-15-2010, 10:28 AM
  3. figure - problem
    By jamesfisher in forum C++ Programming
    Replies: 6
    Last Post: 11-10-2009, 05:28 PM
  4. trying to figure out someone's code for a plugin
    By paulpars in forum C++ Programming
    Replies: 4
    Last Post: 07-20-2006, 11:57 AM
  5. newb to C, cant figure something out.
    By Phate4219 in forum C Programming
    Replies: 16
    Last Post: 03-06-2006, 01:47 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21