Assignment #4 - Functions
Due: Tues, Oct 25 (due date revised because setting on submission site was
wrong. Please submit now!)
Objective
This assignment will consist of writing a couple of small programs
that involve practice writing and calling functions.
Task
Write the following programs, each in a separate file. Filenames should
be:
(Note that the filenames are all lowercase)
Exercise 1
Filename: seconds.cpp
- Write a function called Seconds that takes in three
integer parameters (representing hours, minutes, and seconds) and returns
the number of seconds since the last time the clock "struck 12" (i.e. was
at 12:00:00 -- AM or PM doesn't matter since you're not tracking
this).
- To test this function, write a main() routine (in the
same file) that prompts the user to enter hours, minutes, and seconds for
two different clock times; then uses the Seconds function to calculate
the shortest amount of time in seconds between the two times (both of
which are within one 12-hour cycle of the clock); the print out the number
of seconds since "striking 12" for both clocks, as well as the number of
seconds between the two clock times
Sample Run 1:
(user input underlined)
Input first clock time...
Hours: 6
Minutes: 45
Seconds: 30
Input second clock time...
Hours: 4
Minutes: 50
Seconds: 12
It's been 24330 seconds since the first clock struck 12:00
It's been 17412 seconds since the second clock struck 12:00
The two times are 6918 seconds apart.
Sample Run 2:
(user input underlined)
Input first clock time...
Hours: 12
Minutes: 43
Seconds: 16
Input second clock time...
Hours: 7
Minutes: 11
Seconds: 59
It's been 2596 seconds since the first clock struck 12:00
It's been 25919 seconds since the second clock struck 12:00
The two times are 23323 seconds apart.
Exercise 2
Filename: dice.cpp
- Write a function called RollDice that returns the result
from rolling two standard six-sided dice)
- The function will take no parameters, but it will return the
resulting total of the dice roll as an integer
- Remember that the rolling of a die involves randomness, so you'll
need to use the random number generation functions discussed in
class (see online notes).
- Note that rolling two 6-sided dice is NOT equivalent to picking a
random number from 2 through 12. This is because when you roll 2
dice, there is a much larger change of hitting some totals than
others. You need to roll two dice and add them together
- To test this function, write a main() routine that does the
following:
- Ask the user to enter how many times they want to roll the
dice, and let them enter a value (for this writeup, I'll call
it N)
- Call the RollDice function this many times (i.e. N times), and
count how many
times a total of 2 (known as "Snake Eyes") appears, as well as how
many times a total of 7 appears.
- For each of these totals (2 and 7), print out how many times that
total appeared, as well as what percentage this is of the total
number of rolls. Percentages should be printed to 2 decimal
places.
- Note: When you seed the random number generator, go ahead and use
the time function, as illustrated in the class notes
Sample Run 1
(user input underlined)
How many times would you like to roll the two dice? 10000
Snake eyes (double 1s) appeared
268 times
2.68 % of the time
A roll of 7 appeared
1675 times
16.75 % of the time
Sample Run 2
(user input underlined)
How many times would you like to roll the two dice? 500000
Snake eyes (double 1s) appeared
13706 times
2.74 % of the time
A roll of 7 appeared
83300 times
16.66 % of the time
Sample Run 3
(user input underlined)
How many times would you like to roll the two dice? 500000
Snake eyes (double 1s) appeared
13921 times
2.78 % of the time
A roll of 7 appeared
83789 times
16.76 % of the time
Requirements for all programs
- No global variables, other than constants
- The required tasks must be performed with the functions
specified (not just with a single main() routine)
- Note that each exercise requires the writing of a function, and a
main routine to test that function.
- Each function should do exactly the task specified in item 1
of each exercise
- Item 2 of each exercise specifies what to do in main() --
this will always involve CALLING the function, sometimes more
than once
- Note that there is NO keyboard-input/screen-output specified in the
functions themselves (i.e. "return" does not mean "print")
- All input and output must be done with streams
- You may use the iostream and iomanip libraries
(the ones that have been discussed in class)
- For exercise 2, you'll need the cstdlib and ctime
libraries
- When you write source code, it should be readable and
well-documented.
- Your program should only use standard ANSI header files (make sure
to follow the directions exactly on the handout for creating Visual C++
projects, so that Windows-specific headers like stdafx.h and conio.h are
not placed into your file)
Submitting:
Program submissions should be done through the submission web page, linked
from the main course web site. Submit the files:
seconds.cpp
dice.cpp