Note AcademyNote Academy

Computer Science · May / June 2024 · Paper 21 · Question 10

0478

As printed in the paper

The question as text

The one-dimensional (1D) array Clubs[] is used to store the names of 12 cricket clubs in a local sports league. The two-dimensional (2D) array Statistics[] is used to store, for each cricket club, the number of: • matches won • matches drawn • matches lost. The 1D array Points[] is used to store the total number of points each cricket club has been awarded. The position of any cricket club’s data is the same in all three arrays. For example, the data in index 2 of Statistics[] and index 2 of Points[] belongs to the cricket club in index 2 of Clubs[] The variable Matches stores the number of matches played by each team. Each team plays the same number of matches. Points are awarded for: • a win – 12 points • a draw – 5 points • a loss – 0 points. Write a program that meets the following requirements: • allows the number of matches played to be input and stored, with a maximum of 22 matches • validates the number of matches played • allows the names of the cricket clubs to be input and stored • allows the number of matches won, drawn and lost to be input and stored for each team • validates the number of matches won, drawn or lost against the number of matches played • asks the user to re-enter the number of matches won, drawn or lost if the total does not match th • calculates and stores the total number of points for each club • finds the cricket club or clubs with the highest number of points • outputs the name or names of the winning club or clubs, the number of wins and the total n You must use pseudocode or program code and add comments to explain how your code works. You do not need to declare any arrays or variables; you may assume that this has already been done. All inputs and outputs must contain suitable messages.

Read automatically from the paper; the printed page above is exact.

Show the answer and mark scheme

Data structures required:

The names underlined must match those given in the scenario:

Arrays or lists Clubs[], Statistics[], Points[], TieIndex[]

Variables

Matches, Won, Drawn, Lost, Counter, Maximum, TieCheck, OutLoop, Max, Count Requirements (techniques):

R1 Input and store number of matches, cricket club names, number of matches won, drawn and lost. Validation of number of matches played and matches won, lost and drawn against number of matches played (with prompts, iteration, storing data in variables, validation, 1D and 2D arrays).

R2 Calculate and store the number of points for each cricket club. Finding the index of the array with the highest score / highest score (calculation, finding the maximum, iteration).

R3 Identifying cricket clubs with highest number of points and whether there is a tie for the top position. Output with appropriate messages (iteration, selection and output).

Example 15-mark answer in pseudocode

// meaningful identifiers and appropriate data structures

// similar variables grouped to save space as in HL languages

DECLARE Clubs : ARRAY[1:12] OF STRING

DECLARE Statistics : ARRAY[1:12, 1:3] OF INTEGER

DECLARE Points : ARRAY[1 : 12] OF INTEGER

DECLARE TieIndex : ARRAY[1 : 12] OF INTEGER

DECLARE Matches, Won, Drawn, Lost : INTEGER

DECLARE Counter, Maximum, TieCheck, OutLoop : INTEGER

DECLARE Max, Count : INTEGER

// input number of matches

REPEAT

OUTPUT "How many matches have been played (Maximum 22)? "

INPUT Matches

UNTIL Matches <= 22

// input of data as a single loop – multiple loops for data entry

// is also acceptable.

FOR Counter ← 1 TO 12

OUTPUT "Enter the name of the cricket club"

INPUT Clubs[Counter]

// input of match results with validation

REPEAT

OUTPUT "Enter the number of matches won, drawn and lost for ", Clubs[Counter] INPUT Won, Drawn, Lost

IF Won + Drawn + Lost <> Matches

THEN

OUTPUT "Your inputs must total ", Matches, " please try again"

ENDIF

UNTIL Matches = Won + Drawn + Lost

Statistics[Counter, 1] ← Won

Statistics[Counter, 2] ← Drawn

Statistics[Counter, 3] ← Lost

// calculating and storing points

Points[Counter] ← Statistics[Counter, 1] * 12 + Statistics[Counter, 2] * 5

NEXT Counter

// finding the highest points

Max ← -100

FOR Maximum ← 1 TO 12

IF Points[Maximum] > Max

THEN

Max ← Points[Maximum]

ENDIF

NEXT Maximum

// finding the winner(s)

Count ← 0

FOR TieCheck ← 1 TO 12

IF Points[TieCheck] = Max

THEN

Count ← Count + 1

TieIndex[Count] ← TieCheck

ENDIF

Next TieCheck

// outputting the results

FOR OutLoop ← 1 TO Count

OUTPUT "Winning Club(s): ", Clubs[TieIndex[OutLoop]]

OUTPUT "Number of wins: ", Statistics[TieIndex[OutLoop], 1]

Next OutLoop

OUTPUT "Winning Points: ", Max

AO2: Apply knowledge and understanding of the principles and concepts of computer science to a given context, including the analysis and design of computational or programming problems

Make a free account to save your answers and see your weak topics and ask the AI why a wrong answer is wrong.