Solved

Getting different output than expected

Posted on 2004-10-10
4
167 Views
Last Modified: 2010-04-15
<code>

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

const int n = 1000000;                                           /* number of shuffles */

void Exchange(int* iPtr, int* jPtr);

char* Suit[4] = {"Spades", "Hearts", "Clubs", "Diamonds"};
char* CardValue[13] = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"};

int main(void)
{
      int Deck[52], Counter[13], i, j, m, r, k, FullHouse=0;
      double t = clock();
      
/* ------ Initialize Deck ------ */

      for (j=0; j<13; j++) {
            Counter[j]=0; }
      for (i=0; i<52; i++) {
            Deck[i] = i; }
      
      printf("the program is running\nthe first hand with a full house is:\n\n");

/* -------- Shuffle Deck ------- */

      for (k=0; k<n; k++) {
            for (i=51; i>0; i--) {
                  Exchange(&Deck[i], &Deck[rand()%(i + 1)]); }}
      
/* -------- Draw a Hand -------- */
      
      for (m=0; m<5; m++) {
            Counter[Deck[m]%13]++; }

/* --- Check for Full House ---- */

      for (r=0; r<13; r++) {
            if (Counter[r]==3) {
                  for (j=0; j<13;j++) {
                        if (Counter[j]==2) {
                              FullHouse++;
                              if (FullHouse==1) {
                                    for (i=0; i<5; i++) {
                                          printf("%s of %s\n", CardValue[Deck[i]%13], Suit[Deck[i]/13]); }}}}}}
      for (j=0; j<13; j++) {
            Counter[j]=0; }
      t = clock() - t;
      printf("\nthe experimental probability of two cards with the same value is %1f\n", (double)FullHouse/k);
      printf("the time taken equals %f seconds\n", t/CLOCKS_PER_SEC);      
      return 0;
}

void Exchange(int* iPtr, int* jPtr) {
      int k = *iPtr;
      *iPtr = *jPtr;
      *jPtr = k; }


</code>

The output that I am supposed to be getting is:

Three of Hearts
Three of Spades
Two of Spades
Three of Diamonds
Two of Hearts

the experimental probability of a full house is 0.001438
the time taken equals 3.423568 seconds.

Thanks
0
Comment
Question by:biloonline
4 Comments
 
LVL 15

Accepted Solution

by:
efn earned 125 total points
Comment Utility
The program shuffles the deck a million times and deals one hand.  It doesn't report on that one hand unless it is a full house.  The odds are that the hand will not be a full house, and so the program will not report its contents.

If you want to evaluate the experimental probability of a getting a full house, it would be helpful to examine more than one hand.
0
 
LVL 22

Expert Comment

by:grg99
Comment Utility
I think you need an endless loop around all that code so it continues on even if the first hand isnt a full house.

Either that or you  need to put a brick on the uparrow and enter keys.



0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.
The goal of this video is to provide viewers with basic examples to understand opening and reading files in the C programming language.

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now