This pseudocode algorithm should allow 500 names of people and their heights to be entered and stored in two one-dimensional (1D) arrays. The name of a person and the height of that person are in the same index in both the Names[] and the Heights[] arrays. The algorithm performs as follows: • at the start, the following data is entered: Ο name of person Ο height of person in cm • the data is stored in the relevant arrays • the heights of the people are totalled • the shortest person is found • at the end, the following is output: Ο name of shortest person Ο height of shortest person Ο average height of all 500 people. 01 DECLARE Names : ARRAY[1:500] OF REAL 02 DECLARE Heights : ARRAY[1:500] OF REAL 03 DECLARE Shortest : REAL 04 DECLARE Total : REAL 05 DECLARE Counter : INTEGER 06 DECLARE Index : INTEGER 07 Shortest ← 500 08 Index ← 0 09 Total ← 100 10 FOR Counter ← 1 TO 500 11 INPUT Names [Index] 12 INPUT Heights [Counter] 13 Total ← Counter + Heights [Counter] 14 IF Heights[Counter] < Shortest 15 THEN 16 Shortest ← Heights [Counter] 17 Index ← Counter 18 ENDIF 19 NEXT Counter 20 OUTPUT "The shortest height is ", Heights 21 OUTPUT "The shortest person is ", Names[Index] 22 OUTPUT "The average height is ", Total / 500
- (a)Identify the line numbers of five errors in the pseudocode and suggest a correction for each error. Error 1 line number Correction Error 2 line number Correction Error 3 line number Correction Error 4 line number Correction Error 5 line number Correction[5]
- (b)Write the pseudocode statement that will output the average height rounded to one decimal place.[2]
- (c)Explain how you could change the corrected algorithm so that it will also: • find the height of the tallest person. • output the height of the tallest person at the end of the algorithm. Any program statements used must be fully explained.[4]
Mark scheme
Marking points from the official mark scheme (May/June 2025). The mark or mark type is shown in brackets.
- [5] (a) One mark per mark point • Line 01 / DECLARE Names : ARRAY[1:500] OF REAL should be DECLARE Names : ARRAY[1:500] OF STRING • Line 09 / Total ← 100 should be Total ← 0 • Line 11 / INPUT Names[Index] should be INPUT Names [Counter] • Line 13 / Total ← Counter + Heights[Counter] should be Total ← Total + Heights [Counter] • Line 20 / OUTPUT "The shortest height is ", Heights should be OUTPUT "The shortest height is ", Shortest or OUTPUT "The shortest height is ", Heights [Index]
- [2] (b) One mark per mark point MP1 Output statement with correct calculation of average, or use of a variable average. MP2 Correct use of ROUND function set to 1 decimal place. For example, OUTPUT ROUND(Total / 500, 1)
- [4] (c) One mark per statement, max four MP1 Declaration of new variable for tallest person / largest value at start of algorithm MP2 Initialisation of largest variable to a low number e.g. 0 MP3 New selection statement after input of height to compare it with current largest value MP4 If input of height is larger than current largest variable, it should become the new largest value MP5 Outside the loop, output the current value of the largest variable.
Write your answer and get it marked
On Oracle Prep you can write or photograph your own answer and have it marked by AI against this mark scheme, with feedback on what you missed.
Sign up free →