954,184 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Max Consecutive Heads/Tails

Hi everyone! I would really appreciate any help that I can get on this problem.

My professor asigned us a project where you create a program that essentially simulates coin flips. The first step in the program is to ask the user how many times they want to flip the coin. Regardless of how many times they choose to flip the coin the program needs to print the result of each flip whether it's heads or tails. I have all of that done i can't figure out how to implement the last step which is to display the maximum consecutive heads and tails that appear in the results from the coin toss'.

Here is the code that I have so far:

'10/11/2006
'Heads or tails program
INPUT "How many times do you want to flip the coin?: " ;flipq
IF flipq < 1 THEN
        PRINT "You must flip the coin at least 1 time"
    END IF
DO WHILE count < flipq
            LET num=INT(RND(0)*2)+1
            IF num = 1 THEN
                PRINT "T"
                        'LET count = count + 1
                            'LET tcount = tcount + 1
                                'LET maxtcount = tcount
                                    'IF maxtcount > tcount THEN
                                        'LET maxtcount = maxtcount
                                    'END IF
            ELSE
                PRINT "H"
            END IF
LOOP
 
PRINT tcount;
'PRINT "The maximum number of consecutive heads for " flipq; "coin flips is: " ;hcount
'PRINT "The maximum number of consecutive for " flipq; "coin flips is: " ;tcount
anandarose
Newbie Poster
20 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

This forum is for C and C++.
What you've posted seems to be visual basic.

Salem
Posting Sage
Team Colleague
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
 

I agree. Are they really teaching LET for VB? Or is this another version of BASIC? Maybe best in Legacy and Other Languages

DO WHILE count < flipq
    LET num=INT(RND(0)*2)+1
    IF num = 1 THEN
        PRINT "T"
        'LET count = count + 1      ' put this before the IF
        'LET tcount = tcount + 1    ' uncomment this and duplicate it for heads
        'LET maxtcount = tcount
        'IF maxtcount > tcount THEN
        'LET maxtcount = maxtcount
        'END IF
      ELSE
          PRINT "H"
      END IF
LOOP


Initializetcount and hcount before the while loop.

WaltP
Posting Sage w/ dash of thyme
Moderator
10,492 posts since May 2006
Reputation Points: 3,348
Solved Threads: 943
 
I agree. Are they really teaching LET for VB? Or is this another version of BASIC? Maybe best in Legacy and Other Languages .

The software is called Liberty Basic. Www.libertybasic.com

anandarose
Newbie Poster
20 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 
DO WHILE count < flipq
    LET num=INT(RND(0)*2)+1
    IF num = 1 THEN
        PRINT "T"
        'LET count = count + 1      ' put this before the IF
        'LET tcount = tcount + 1    ' uncomment this and duplicate it for heads
        'LET maxtcount = tcount
        'IF maxtcount > tcount THEN
        'LET maxtcount = maxtcount
        'END IF
      ELSE
          PRINT "H"
      END IF
LOOP
Initializetcount and hcount before the while loop.

Thank you for your help. Your advice massively improved my program. But I have another question: what do you mean by initialize? Please don't repremand me for asking. I feel bad enough about having to ask for help already. Haha.

Ananda

anandarose
Newbie Poster
20 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

Here is the improved code after incorperating your advice and the advice of my professor. It does everything except display the correct maximum consecutive head and tail count. I am open to any advice. Once again it is greatly appreciated.

Ananda

'Ananda Bennett
'10/11/2006
'Heads or tails program

INPUT "How many times do you want to flip the coin?: " ;flipq
IF flipq < 1 THEN
PRINT "You must flip the coin at least 1 time"
END IF

DO WHILE count < flipq
LET num=INT(RND(0)*2)+1
LET count = count + 1
IF num = 1 THEN
PRINT "T"
LET tcount = tcount +1
LET maxtcount = tcount
IF maxtcount > tcount THEN
LET maxtcount = maxtcount
END IF
ELSE
PRINT "H"
LET hcount = hcount + 1
LET maxhcount = hcount
IF maxhcount > hcount THEN
LET maxhcount = maxhcount
END IF
END IF
LOOP

PRINT "t count: " ;tcount; " h count: ";hcount

PRINT "The maximum number of consecutive heads for " ; flipq; " coin flips is: " ;maxhcount
PRINT "The maximum number of consecutive tails for " ; flipq; " coin flips is: " ;maxtcounta

anandarose
Newbie Poster
20 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

The code is below ... I have briefly commented it to give you an idea of what is going on, and left the keywords in lower case.

I kept it very rough, there are many, better ways to do this, it is my intention you will look at the method and learn from it and improve on the overall code.

INPUT "How many times do you want to flip the coin?: " ;flipq
IF flipq < 1 THEN
PRINT "You must flip the coin at least 1 time"
END IF
' Initialise values
hcount = 0
tcount = 0
' We will use LastValue to remember the last flip, and an ongoing tally ... Consec
LastValue = 0
consec = 1  ' We set it at one, because the run will not match last, but will be consecutive
maxhcount = 0
maxtcount = 0
DO WHILE count < flipq
    LET num=INT(RND(0)*2)+1
    LET count = count + 1
    IF num = 1 THEN
        PRINT "T"                       ' Show Tail
        LET tcount = tcount + 1         ' and increase tails counter
        ' Now we make sure we have a value in max values
        if maxtcount = 0 then   '
            maxtcount = 1
        end if
    ELSE
        PRINT "H"
        LET hcount = hcount + 1
        if maxhcount = 0 then
            maxhcount = 1
        end if
    END IF
    ' Now we compare it with the last value, and increase the counter for the run
    IF num = LastValue THEN
        consec = consec + 1
        ' Now we check if it's a run of Heads or tails,
        if num = 1 then
            if consec > maxtcount then
                maxtcount = consec
            end if
        else
            if consec > maxhcount then
                maxhcount = consec
            end if
        end if
    ELSE            ' if it's not, we reset the run
        consec = 1
    END IF
    ' And now we set the last value to this one
    LastValue = num
LOOP
PRINT "t count: " ;tcount; " h count: ";hcount
PRINT "The maximum number of consecutive heads for " ; flipq; " coin flips is: " ;maxhcount
PRINT "The maximum number of consecutive tails for " ; flipq; " coin flips is: " ;maxtcount
Yankie Dave
Newbie Poster
6 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

THANK YOU SO MUCH FOR YOUR HELP!

:cheesy: :mrgreen: :) :!: :confused: :lol: :p

anandarose
Newbie Poster
20 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You