Programming Problem

Calculating bowling match scores


A bowling match consists of ten frames. Each frame except for the tenth consists of one or two balls, or attempts to knock down the ten pins at the end of the alley. Doing so on the first ball of the frame is called a strike, and the second ball of the frame is not rolled. Knocking down all ten pins with both balls (having left some up with the first ball) is called a spare. If both attempts to knock down the pins leave some standing, the frame is called an open frame. A spare in the tenth frame gives the bowler one extra ball; a strike in the tenth gives him or her two extra balls. A bowling score is computed as follows. A strike counts as 10 points plus the sum of the next two balls. A spare counts as 10 points plus the next ball. Any other balls merely count as themselves, as do any bonus balls rolled as a result of a strike or a spare in the tenth frame. Suppose for example that the sequence of balls was

9 1   0 10   10   10   6 2   7 3   8 2   10   9 0   9 1   10


The cumulative score for the ten frames would be
Frame   score
-----   -----
 1       10
 2       30
 3       56
 4       74
 5       82
 6      100
 7      120
 8      139
 9      148
 10     168

Write a program to accept from standard input the scores for a sequence of balls and output the scores for the ten frames. There may be multiple lines of input, where each input line will be the scores for one player. The scores will be separated by one or more blanks. You may assume that the number of scores on the line is valid.

Your design should include an array named “pins”  that stores the sequence of balls read from the input stream.  This array will have at most 21 elements. Use an array of size ten named “frames” to store the score computed for each frame.