CS 111 - Introduction to Computer Science
Homework #4

Due: Friday 2/17 at the beginning of class

1. Circle Math: Implement a program CircleMath.java. that prompts the user with "Radius? ", reads an integer radius, uses Math.PI in calculation of double-precision floating point values for diameter, circumference, and area, and uses printf for printing these values in the exact format shown below (including leading spaces).   Note: You can calculate the square of radius by using either radius * radius or Math.pow(radius, 2).

Example Transcript (input underlined):

Radius? 10
     diameter = 20.000000
circumference = 62.831853
         area = 314.159265

Hint: To print a floating point value x to six decimal places alone on a single line, one could use "System.out.printf("%d\n", x);".

2. Rock, Paper, Scissors:  Call your program RockPaperScissors.java. (At least a portion of this exercise should be done together in class during week 3.) 



Hint: At no point should you have an if-else chain for 9 cases.  Each of the last two print statements should require at most 3 cases each. Let the user's play be p1 and the computer's play be p2.  Consider what value you get if you compute (p1 - p2 + 3) % 3.  How does the result of this computation map to the win/lose/draw cases?  Why does this work?  Why wouldn't the expression (p1 - p2) % 3 suffice for our three cases?   (Answers to these hint questions are not to be submitted, but try to understand why these expressions are helpful or not.)

Example transcripts (input underlined):

Please enter 0 (rock), 1 (paper), or 2 (scissors): 0
I played paper.
You lose.

Please enter 0 (rock), 1 (paper), or 2 (scissors): 1
I played rock.
You win.

Please enter 0 (rock), 1 (paper), or 2 (scissors): 2
I played scissors.

3. Flip 5: Create a program called Flip5.java that implements "Flip 5", a simple gambling game of my design.  The bettor places a bet on "more tails" or "more heads", and then flips 5 coins.  If the coins show all heads or all tails, the house wins and the bettor loses their stake.  Otherwise, if the majority of coins match the bettor's bet (e.g. 3 or 4 tails out of 5 when the bettor bet "tails"), then the banker pays 1 for 1.  Otherwise, if the majority doesn't match the bettor's bet, then the bettor loses their stake.  The specification of the program is as follows:




Example transcripts (input underlined):

Bet (0) more tails, or (1) more heads: 0
TTTTT --> All flips are the same. You lose.

Bet (0) more tails, or (1) more heads: 1
HTHHT --> You win!

Bet (0) more tails, or (1) more heads: 0
HTHTH --> You lose.