Third
Annual Niagara South Board
Programming
CONTEST
February
1992
Teacher
Instructions
1. Please
duplicate enough copies of the tests for your students who are entering the
competition.
2. The test
is to be administered Thursday February 27, 1992 in the morning for a period of
two and one half hours.
3. The team
will consist of at most eight students.
3 students in their 4th
or 5th year of secondary school
C. 3 students in their 3rd year of secondary
school
C. 3 students in their 1st or 2nd year of
secondary school
4. Students
should have access to reference texts for the language they have chosen to use
for the contest.
5. NO
PRINTING may be used to help with debugging.
6. NO
PREVIOUSLY CREATED files may be used as reference.
7. Please
make sure the students save their solutions as indicated on their instructions.
8. Send the
solutions disks and a cover page with the school name and all contestant names
and years clearly indicated to marking committee before 3:30 February 28, 1992.
9. An entry fee of $2.00 per contestant should be brought to
the March Computer Studies Council meeting.
Programming
CONTEST
February
1992
DO NOT TURN THIS
PAGE UNTIL YOU ARE INSTRUCTED TO DO SO AND HAVE READ THE FOLLOWING CAREFULLY
1. YOU WILL HAVE TWO AND ONEHALF HOURS
FOR THIS CONTEST.
2. ALL SOLUTIONS ARE TO BE STORED ONTO THE
DISKETTE GIVEN TO YOU BY THE PRESIDING TEACHER.
3. PRINTING IS NOT ALLOWED DURING THE
CONTEST.
4. SOLUTIONS WILL BE JUDGED ON THE BASIS
OF LOGICAL CORRECTNESS AND ALSO GOOD STRUCTURED STYLE, INPUT VALIDATION, AND
SCREEN PRESENTATION.
5. YOU
ARE TO ATTEMPT ONLY 2 QUESTIONS
FROM PART A, 1 QUESTION ONLY FROM PART B AND 1 QUESTION ONLY FROM PART C.
6. IN DETERMINING YOUR OVERALL SCORE, THE
2 QUESTIONS FROM PART A ARE WORTH 25 POINTS EACH, THE 1 QUESTION FROM PART B IS
WORTH 50 POINTS AND THE 1 QUESTION FROM PART C, 75 POINTS.
7. BY SUBMITTING ANY SOLUTION(S) TO ANY
PROBLEM(S) IN THIS CONTEST YOU WILL HAVE GIVEN CONSENT TO THE NIAGARA SOUTH
PROGRAMMING COMMITTEE TO USE YOUR SOLUTION IN ANY WAY.
DO 2 QUESTIONS FROM
THIS PART
QUESTION
A1 [SAVE ON DISK AS "QA1" ]
The NSB Pizzeria sells
take out pizza priced according to the chart below:

SMALL

MEDIUM

LARGE

BASIC COST

$6.95

$9.95

$12.95

Additional per extra
item

$0.50

$0.75

$1.25

Write
a program which simulates an automatic cash register. The input will be a two character code representing the size and
number of extra toppings. The first
character of the code will be an 'S', an 'M' or a 'L' representing small,
medium and large. The second character
of the code will be a digit 0 through 9 representing the number of extra
toppings ordered. The output should
show the basic cost of the pizza, the cost of the additional items, the total
pizza cost, the GST calculated at 7%, the PST calculated at 8% and the TOTAL
BILL.
QUESTION
A2 [SAVE ON DISK AS "QA2" ]
The Euclidean algorithm for finding the GCD
(greatest common divisor) of two positive integers is to repeatedly replace the
larger of the two numbers with the difference of the two numbers until the
numbers become equal, at which point they are both equal to the desired
GCD. Write a program which accepts two
positive integers as input and gives the GCD as output.
QUESTION
A3 [SAVE ON DISK AS "QA3" ]
In the NHL, 2 points are awarded for each
win, 1 point for each tie and 0 points are awarded for a loss. Write a program which accepts a list of 10
pairs of numbers representing the scores in the last 10 games played by the
TORONTO MAPLE LEAFS as input. In each
case, the first number represents the number of goals scored by the LEAFS and
the second number represents the goals scored by the opposing team. The output should be a report showing the
number of wins, the number of ties, the number of losses and the total number
of points accumulated in the 10 games.
QUESTION
A4 [SAVE ON DISK AS "QA4" ]
Write a program which
accepts any positive integer greater than 1 as an input. The output should be a list of all prime
numbers which divide evenly into the input value. [NOTE: A prime number is
a number which is divisible only by itself and 1.]
Example:
For
the input 30, the output should be the numbers 2, 3 and 5.
PART B
DO ONLY 1 QUESTION
FROM THIS PART
QUESTION B1 [SAVE ON DISK AS "QB1" ]
Write a program which translates three
ENGLISH words into PIG LATIN. The program should accept any three words entered without
punctuation and output the PIG LATIN translation on one line, using the
following rules to translate.
If the word contains any digits or hyphens, then the
word does not change.
eg. The word "cooperation" remains
unchanged.
Otherwise, if the word begins with a vowel, then
concatenate "HAY" to the end
eg. The word "always" translates to
the PIG LATIN "alwayshay"
Otherwise, if the word contains NO vowels, such as an
anachronism, then append "AY" to it.
eg. The word "gst" becomes the PIG
LATIN "gstay"
Otherwise, the frontmost consonant(s) are all to be
removed and appended to the end of the word and followed by "AY".
eg. The word "storage" translates to
the PIG LATIN "oragestay"
QUESTION
B2 [SAVE ON DISK AS "QB2" ]
Write a program which
finds the MINIMUM value for Z where:
<image not available  sorry!>
where A, B, and C can be any integer in the
range L through H inclusive. The input
to the program should be the range values L and H. The output should be the MINIMUM value found for Z, and the
values of A, B and C which produced the minimum.
QUESTION
B3 [SAVE ON DISK AS "QB3" ]
Write a program which
accepts the 2 fractions a/b and c/d as input. The values will actually be entered as four
integers and assigned to the variables a, b, c and d. The output should be the fully reduced mixed
fraction which results from adding a/b and c/d. This mixed fraction should be represented in the form of three
integers, the first representing the whole number, the second representing the
numerator of the fraction, and the third representing the denominator.
eg. for the fractions 3/4 and 1/2
INPUT the four values 3, 4, 1 and 2
OUTPUT the three values 1, 1, and 4 representing 1 1/4.
for the fractions 1/6 and 1/2
INPUT the four values 1, 6, 1 and 2
OUTPUT the three values 0, 2, and 3 representing 0
2/3
PART C
DO ONLY 1 QUESTION
FROM THIS PART
QUESTION
C1 [SAVE ON DISK AS "QC1" ]
Write a program which generates a MAGIC
SQUARE of order N. [NOTE: N MUST BE AN ODD NUMBER.] A MAGIC SQUARE of order N is an N by N
matrix of integers where each row, each column and each diagonal sum to the
same value. The input for this question
should be the order of the MAGIC square (the value of N). The output should be the MAGIC SQUARE and
the value found by adding all the values in the diagonal which runs from the
top left to the bottom right. A method
used for generating a magic square follows:
QUESTION C1
Continued
de la Loubere's Method
Place a 1 in the top middle cell of
the matrix. Subsequent numbers are
placed in cells upward and to the right (go up, and then go over). When you leave the top of the square,
reenter from the bottom remaining in the same column. When you leave the side of the square, reenter from the other
side, remaining in the same row. If it
is impossible to place the next number because the desired cell is occupied,
place the next number directly below the most recent number.
eg. Magic
Square  Order 3
Magic
Square  Order 5
8

1

6


17

24

1

8

15

3

5

7


23

5

7

14

16

4

9

2


4

6

13

20

22





10

12

19

21

3





11

18

25

2

9

QUESTION
C2 [SAVE ON DISK AS "QC2" ]
Write a program which
determines and reports the type of poker hand given any five cards. The possible values are defined in order
(from highest to lowest) as follows:
ROYAL FLUSH:
The Ace, King, Queen, Jack and Ten in the same suit
STRAIGHT FLUSH: any
5 cards of the same suit in numerical order
FOUR OF A KIND: 4
of the 5 cards have the same value
FULL HOUSE:
3 cards of the same value and two cards of the same value
STRAIGHT: 5 cards in the same order
THREE OF A KIND: 3
cards of the same value
TWO PAIR: 2 pairs of two cards of the same value
ONE PAIR: 1 pair of cards of the same value
GRUB:
none of the above
The input is 5 two
character codes representing the 5 cards.
The first character is the VALUE of the card (2, 3, 4, 5, 6, 7, 8, 9, 0,
J, Q, K, A NOTE THE TEN is represented
with the character 0) followed by the character representing the suit (H, D, C,
S representing Hearts, Diamonds, Clubs and Spades)
The output should be
the highest possible value of the hand from the list above.
eg.
INPUT 2H 2S 5D 6C 0C would
generate the output "ONE PAIR".