100% found this document useful (2 votes)
793 views37 pages

CS Scenario Questions by Sockette

The document describes two programming problems. The first involves creating a times table test that sets conditions, displays questions, checks answers, and displays results. The second involves calculating student marks and grades from data in two arrays, and outputting results including number of distinctions, merits, passes and fails. Pseudocode or code with comments must be provided to explain the solutions.

Uploaded by

ayomiposi 2712
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
793 views37 pages

CS Scenario Questions by Sockette

The document describes two programming problems. The first involves creating a times table test that sets conditions, displays questions, checks answers, and displays results. The second involves calculating student marks and grades from data in two arrays, and outputting results including number of distinctions, merits, passes and fails. Pseudocode or code with comments must be provided to explain the solutions.

Uploaded by

ayomiposi 2712
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

11 A times table test will be set up.

Before using the test, the user can set the times table to be tested and
the number of questions to be asked. The times tables can be any whole number between 2 and 12
inclusive. The number of questions can be between 5 and 10 inclusive. No questions can be the same in
any test. The name of the user should be displayed with all messages and prompts.
Write and test a program that meets the following requirements:
o Sets up the starting conditions for the test
o During the test:
o displays each question with the question number
o checks if the answer input is correct and displays the right answer if the answer input was
wrong
o adds one to the user’s total every time an answer is right.
o At the end of the test:
o displays the result
o asks the user if they want a retest.
You must use pseudocode or program code and add comments to explain how your code works. All
inputs and outputs must contain suitable messages.
14

13 The 1D array StudentName[] contains the names of students in a class. The 2D array
StudentMark[] contains the mark for each subject, for each student. The position of
each student’s data in the two arrays is the same, for example, the student in position 10 in
StudentName[] and StudentMark[] is the same.

The variable ClassSize contains the number of students in the class. The variable SubjectNo
contains the number of subjects studied. All students study the same number of subjects.

The arrays and variables have already been set up and the data stored.

Students are awarded a grade based on their average mark.

Average mark Grade awarded


greater than or equal to 70 distinction
greater than or equal to 55 and less than 70 merit
greater than or equal to 40 and less than 55 pass
less than 40 fail

Write a program that meets the following requirements:


• calculates the combined total mark for each student for all their subjects
• calculates the average mark for each student for all their subjects, rounded to the nearest
whole number
• outputs for each student:
– name
– combined total mark
– average mark
– grade awarded
• calculates, stores and outputs the number of distinctions, merits, passes and fails for the
whole class.

You must use pseudocode or program code and add comments to explain how your code works.

You do not need to initialise the data in the array.

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

...........................................................................................................................................................

© UCLES 2020 0478/02/SP/23


8 Programming

15 Write and test a program that uses a two-dimensional array, Game[]to store the moves
in a noughts and crosses game. The program should meet the following requirements:
» Start each game with an empty array.
» Allow two players to input their moves in turn; the contents of the array are displayed
before and after every move.
» One player can input O and the other input X; no other moves are allowed, and no move
can use a space in the array already occupied.
» After every move the program should check for a completed line of three Os or three Xs,
and if found output the winner of the game.
» Use procedures and parameters.
» Include comments to explain how your code works.

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

.................................................................................................................................................................................

Photocopying prohibited
54 Cambridge IGCSE and O Level Computer Science Algorithms, Programming and Logic Workbook

318472_08_IGCSE_OLCSPW_026-054.indd 54 24/04/21 1:29 PM


Cambridge IGCSE™ and O Level Computer Science

c)

[6]
11
Python:
# set up starting conditions
Name = input("Please enter your name ")
Table = 0
while (Table < 1 or Table > 12):
Table = int(input("Please enter a table between 1 and 12 "))
Questions = 0
while (Questions < 5 or Questions > 10):
Questions = int(input("Please enter the number of questions between 5 and 10 "))

Retest = True

# conduct the test


while Retest:
Right = 0
for QuestionNumber in range(1, Questions + 1):
print("Question ", QuestionNumber)
print (Table, " X ", QuestionNumber)
Answer = int(input("Answer "))
if Answer == Table*QuestionNumber:
print(Name, " you are right, well done")
Right +=1
else:
print(Name, " you are wrong the answer is ", Table*QuestionNumber)
print("Test over ", Name, " you got ", Right, " out of ", Questions)

Choice = input(" Do you want a retest Y or N? ")# check for a retest


if Choice != "Y":
Retest = False

[14]

Cambridge IGCSE™ and O Level Computer Science Second Edition Study and Revision Guide 6
© Hodder & Stoughton Ltd 2022
Cambridge IGCSE™ and O Level Computer Science

Visual Basic:

Module Module1

Sub Main()
Dim Name, Choice As String
Dim Table, Questions, QuestionNumber, Right, Answer As Integer
Dim ReTest As Boolean
' set up staring conditions
Console.Write("Please enter your name ")
Name = Console.ReadLine()
Do
Console.Write("Please enter a table between 1 and 12 ")
Table = Int(Console.ReadLine())
Loop Until Table >= 1 And Table <= 12

Do
Console.Write("Please enter the number between 5 and 10 ")
Questions = Int(Console.ReadLine())
Loop Until Questions >= 5 And Questions <= 10

ReTest = True

' conduct the test


Do
Right = 0
For QuestionNumber = 1 To Questions
Console.WriteLine("Question " & QuestionNumber)
Console.WriteLine(Table & " X " & QuestionNumber)
Answer = Int(Console.ReadLine())
If Answer = QuestionNumber * Table Then
Console.WriteLine(Name & " you are right well done")
Right = Right + 1
Else
Console.WriteLine(Name & " you are wrong the answer is " & Table *
QuestionNumber)
End If
Next
Console.WriteLine("Test over " & Name & " you got " & Right & " out of " & Questions)
Console.WriteLine("Do you want a retest Y or N?")
Choice = Console.ReadLine()
If Choice <> "Y" Then
ReTest = False
End If

Loop Until Not ReTest

[14]

Cambridge IGCSE™ and O Level Computer Science Second Edition Study and Revision Guide 7
© Hodder & Stoughton Ltd 2022
Cambridge IGCSE™ and O Level Computer Science

Java:
import java.util.Scanner;
class ExamQ11Java
{

public static void main(String args[])


{
// set up starting conditions
Scanner myObj = new Scanner(System.in);
String Name;
System.out.print("Please enter your name ");
Name = myObj.next();
int Table;
do
{
System.out.print("Please enter a table between 1 and 12 ");
Table = myObj.nextInt();
}
while (Table < 1 || Table > 12);

int Questions;
do
{
System.out.print("Please enter the number of questions between 5 and 10 ");
Questions = myObj.nextInt();
}
while (Questions < 5 || Questions > 12);

boolean Retest = true;

int QuestionNumber, Answer, Right;

// conduct the test


do
{
Right = 0;
for (QuestionNumber= 1; QuestionNumber <= Questions; QuestionNumber ++)
{

System.out.println("Question " + QuestionNumber);


System.out.println(Table + " X " + QuestionNumber);
Answer = myObj.nextInt();
if (Answer == Table * QuestionNumber)
{
System.out.println(Name + " you are right, well done");
Right ++;
}
else
{
System.out.println(Name + " you are wrong the answer is " + Table * QuestionNumber);
}
}
System.out.println("Test over " + Name + " you got " + Right + " out of " + Questions );
System.out.print("Do you want a retest Y or N? ");
String Choice;
Choice = myObj.next();
if(!Choice.equals("Y"))
{
Retest = false;
}
}
while (Retest);

Cambridge IGCSE™ and O Level Computer Science Second Edition Study and Revision Guide 8
© Hodder & Stoughton Ltd 2022
0478/02 Cambridge IGCSE – Mark Scheme For examination
SPECIMEN from 2023

Question Answer Marks


13 Example 15 mark answer in pseudocode.

// meaningful identifier names and appropriate data structures (variables, constants and the
// given arrays) to store all the data required
DECLARE TotalMark : ARRAY[1:50] OF INTEGER
DECLARE AverageMark : ARRAY[1:50] OF INTEGER
DECLARE SubjectCounter : INTEGER
DECLARE StudentCounter : INTEGER
DECLARE DistinctionNo : INTEGER
DECLARE MeritNo : INTEGER
DECLARE PassNo : INTEGER
DECLARE FailNo : INTEGER

CONSTANT Distinction = 70
CONSTANT Merit = 55
CONSTANT Pass = 40

// initialisation processes for this scenario, initialising the running totals used for
// grades and combined totals
DistinctionNo ← 0
MeritNo ← 0
PassNo ← 0
FailNo ← 0

FOR StudentCounter ← 1 to ClassSize


TotalMark[StudentCounter] ← 0
NEXT StudentCounter

// programming techniques of iteration, selection, totalling, counting and output are used

© UCLES 2020 Page 12 of 16


0478/02 Cambridge IGCSE – Mark Scheme For examination
SPECIMEN from 2023

Question Answer Marks


13 FOR StudentCounter ← 1 to ClassSize
FOR SubjectCounter ← 1 to SubjectNo
TotalMark[StudentCounter] ← TotalMark[StudentCounter] + StudentMark[StudentCounter,
SubjectCounter]
NEXT SubjectCounter
AverageMark[StudentCounter] ← INT((TotalMark[StudentCounter] / SubjectNo) + 0.5)
OUTPUT "Name ", StudentName[StudentCounter]
OUTPUT "Combined total mark ", TotalMark[StudentCounter]
OUTPUT "Average mark ", AverageMark[StudentCounter]
IF AverageMark[StudentCounter] >= Distinction
THEN
DistinctionNo ← DistinctionNo + 1
OUTPUT "Grade Distinction"
ELSE
IF AverageMark[StudentCounter] >= Merit
THEN
MeritNo ← MeritNo + 1
OUTPUT "Grade Merit"
ELSE
IF AverageMark[StudentCounter] >= Pass
THEN
PassNo ← PassNo + 1
OUTPUT "Grade Pass"
ELSE
FailNo ← FailNo + 1
OUTPUT "Grade Fail"
ENDIF
ENDIF
ENDIF
NEXT StudentCounter

OUTPUT "Number of Distinctions ", DistinctionNo


OUTPUT "Number of Merits ", MeritNo
OUTPUT "Number of Passes ", PassNo
OUTPUT "Number of Fails ", FailNo

© UCLES 2020 Page 13 of 16


IGCSE Computer Science - Paper 2 - Feb/March 2023
(Unofficial ~ Past Paper hasn't been released yet)

2D array called TeamPoints that stores the points for every


match for every team. 1D array called TeamName that stores
the names of every team at the same index location as in
TeamPoints.

A constant LeagueSize with the number of teams. A constant


MatchNo with the number of matches played by each team.

Points in the 2D array TeamPoints are awarded based on the


following criteria:
- An away win is 3 points
- A home win is 2 points
- A draw is 1 point
- A loss is 0 points

You must:
- Calculate and store the total points scored
- Calculate and display the total points for all matches in
each category (away win, home win, draw, loss)
- Calculate and display the total team points, total team
points for each category and name for each of the teams
- Find and display the name of the team with the highest and
lowest points

[15]
(Unofficial Python Markscheme by S_Skamr ~ Past Paper hasn't been
released yet)

Note: This code makes use of helper functions and dictionaries


(Discouraged for IGCSE Syllabus)

"""
MAPPINGS

0: Loss
1: Draw
2: Home Win
3: Away Win

They start with 0 so it can be easily used to index into a list that
stores every count for the mappings - helpers.
"""

# Test data generation starts (not required) -------------

from random import randint

# random test team names


teams = ["Berkeley", "Princeton", "Stanford", "Michigan", "CalTech",
"Duke", "Yale", "Cambridge", "Oxford", "Imperial", "Kings", "Harvard",
"NYU", "UC Davis"]
# number of mappings - this should never change as the number of
categories are a total of 4 always
MAP_COUNT = 4
# number of teams
TEAM_COUNT = len(teams)
# number of matches
MATCH_COUNT = randint(4,12)
# Generate a list of random numbers from 0-3 for the number of matches
for each team - 1 list of random numbers for every team
points = [[randint(0, 3) for i in range(MATCH_COUNT)] for x in
range(TEAM_COUNT)]

# Test data generation over -------------


# Generate an empty helper for all category mappings to maintain their
counts
def genHelper():
return [0] * MAP_COUNT

# each point value maps to a certain category of outcome - this function


increments the helper value for that outcome; each helper is essentailly a
list where the index corresponds to the point value
def incrementHelper(point, helper):
# increment the helper's value at index 'point'
helper[point] += 1
# return the full helper back
return helper

# Maps each index to the required message when printing - for eg. an index
of 1 corresponds to the returned message "Draws" which can be used to
display the required details for draws
def mapMsg(index):
return ["Losses", "Draws", "Home wins", "Away wins"][index]

# Set total points to 0 and generate a helper for totalCategory


(totalCategory counts the total count of each category)
totalPoints = 0
totalCategory = genHelper()

# Setting highest and lowest to [Name, Point] format with corresponding


values for 2nd index
highest = [None, 2**-64]
lowest = [None, 2**64]

# Enumerate self implementation - uses a generator to iterate over an


iterable while maintaining the count for index 'i'
def enumerateOver(iterObj, s=0):
i = s
for element in iterObj:
yield i, element
i += 1
# Loop over the index and matches returned by enumerating over the points
list
for i, teamMatches in enumerateOver(points):
# Generate a helper for the current team's category counts
teamHelper = genHelper()
# Current teams total points
teamTotalPoints = 0
# Points for every match of every team
for points in teamMatches:
# Add the points to the team's total points and the total Global
points
teamTotalPoints += points
totalPoints += points
# Increment the total category based helper and the current teams
helper as required
totalCategory, teamHelper = incrementHelper(points,
totalCategory), incrementHelper(points, teamHelper)
# Print the team's name as corresponding to the current index
print(f"Team name: {teams[i]}")
# Use the number of mappings and the 'mapMsg' function to display
Losses, Draws, Home wins, and Away wins for every team
for j in range(MAP_COUNT):
print(f"Team {mapMsg(j)}: {teamHelper[j]}")
# Display the team's total points
print(f"Team total points: {teamTotalPoints}")

# Check if the current teams points belong to highest or lowest and


set highest or lowest to the current teams name and points if so
if teamTotalPoints > highest[1]:
highest = [teams[i], teamTotalPoints]
if teamTotalPoints < lowest[1]:
lowest = [teams[i], teamTotalPoints]

# Print a divider for aesthetics


print("---")

# For each of the mappings print out the totals


for j in range(MAP_COUNT):
print(f"Total {mapMsg(j)}: {totalCategory[j]}")
print("---")

# Print the team with the lowest and highest points and their names
print(f"Lowest scoring team with {lowest[1]} points is {lowest[0]}.")
print(f"Highest scoring team with {highest[1]} points is {highest[0]}.")

You might also like