CAMBRIDGE IGCSE COMPUTER SCIENCE
Winter 2025 · Paper 21 · Question 11 · 15 marks
← 0478 CS Hub Paper 21 · Winter 2025 0478 / Paper 2 Question 11 15 MARKS
15-mark question lab · start here

From ten rounds on the range to a qualification verdict.

Build the solution in a sensible order: understand the two arrays, plan the nested input loop, validate every score between 0 and 30 inclusive, track the highest and lowest while the rounds are entered, discard both to leave the 8-score overall, band it into next competition, reserve or does not qualify, and report the three counts. Learn the reasoning before revealing the complete program.

2D arrayInput validationMax/min trackingDiscard arithmeticThree-way bands15 marks

Learning targets

By the end, you should be able to explain the algorithm before writing it.

Lesson overview

01 · Understand

Identify CompetitorName[] and CompetitorScore[,], the shared competitor index, the 10-round structure and the 0–30 validity rule every entered score must pass.

02 · Construct

Use nested loops to input and validate each round score while tracking the highest, the lowest and the running total for every competitor.

03 · Complete

Discard the two extremes to compute the 8-score overall, band it at 210 and 180, output every name and outcome, and report the three counts.

!

How Cambridge awards the marks: the mark scheme gives AO2 a maximum of 9 marks and AO3 a maximum of 6 marks. It lists requirements R1–R5, but does not assign a separate fixed mark total to each R requirement. The stage-to-mark links in this guide show alignment, not invented stage marks.

Source question

Read the whole question first

Do not begin coding after the first paragraph. The discard rule, the inclusive 0–30 validation and the three outcome counters all affect the structure of your solution.

Question 11 · 15 marks
Cambridge IGCSE Computer Science · 0478/21 · Question 11

The scores for each competitor in an archery competition are recorded. The one-dimensional (1D) array CompetitorName[] is used to store the names of the competitors. The maximum number of competitors is 30.

There are 10 rounds in the competition with a maximum score of 30 per round. The two-dimensional (2D) array CompetitorScore[] stores the score in each of the 10 rounds for each competitor. The first index of the array CompetitorScore[] is the same as the index of the competitor in CompetitorName[].

After the 10 rounds have been completed, the highest score and the lowest score for each competitor are discarded. The overall score for each competitor is the total of the remaining 8 scores (after discarding the highest and lowest scores).

A competitor with an overall score of 210 or more moves onto the next competition. A competitor with an overall score between 180 and 209 inclusive becomes a reserve competitor. A competitor with an overall score below 180 does not qualify.

Write a program that meets the following requirements:

  • inputs the total score (out of 30) for each competitor in each round
  • validates each input is between 0 and 30 inclusive
  • calculates the overall score for each competitor discarding the highest and lowest scores
  • outputs the name of each competitor and if they move onto the next competition, are a reserve or do not qualify
  • calculates and outputs the number of competitors who:
    • have qualified for the next competition
    • are reserve competitors
    • do not qualify.

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; assume that this has already been done.
All inputs and outputs must contain suitable messages.

Before you move on

These are the five required techniques identified by the Cambridge mark scheme.

Mark-scheme map
R1

Input each competitor’s total score (out of 30) for every one of the 10 rounds, with a prompt that names the competitor and the round.

R2

Validate every entered score, re-prompting while it is below 0 or above 30, so the boundary values 0 and 30 themselves are accepted.

R3

Calculate the overall score for each competitor by discarding the highest and the lowest — the row total minus both extremes.

R4

Output each competitor’s name and whether they move onto the next competition, are a reserve or do not qualify.

R5

Count and output the numbers of competitors who qualified, became reserves or did not qualify.

Use the tabs along the top to work through the seven stages. The complete solution is kept in its own tab, and the interactive visualisation is the final tab.