Professional Documents
Culture Documents
9618_s21_ms_42
9618_s21_ms_42
These general marking principles must be applied by all examiners when marking candidate answers. They should be applied alongside the
specific content of the mark scheme or generic level descriptors for a question. Each question paper and mark scheme will also comply with these
marking principles.
• the specific content of the mark scheme or the generic level descriptors for the question
• the specific skills defined in the mark scheme or in the generic level descriptors for the question
• the standard of response required by a candidate as exemplified by the standardisation scripts.
Marks awarded are always whole marks (not half marks, or other fractions).
Marks should be awarded using the full range of marks defined in the mark scheme for the question (however; the use of the full mark range may
be limited according to the quality of the candidate responses seen).
Marks awarded are based solely on the requirements as defined in the mark scheme. Marks should not be awarded with grade thresholds or
grade descriptors in mind.
Example code:
Visual Basic
Structure node
Dim Data As Integer
Dim nextNode As Integer
End Structure
Python
class node:
def __init__(self, theData, nextNodeNumber):
self. Data = theData
self.nextNode = nextNodeNumber
Java
class node{
private Integer Data;
private Integer nextNode;
public node(Integer dataP, Integer nextNodeP){
this.Data = dataP;
this.nextNode = nextNodeP;
}
}
Example code:
Visual Basic
Dim linkedList(9) As node
linkedList(0).data = 1
linkedList(0).nextNode = 1
linkedList(1).data = 5
linkedList(1).nextNode = 4
linkedList(2).data = 6
linkedList(2).nextNode = 7
linkedList(3).data = 7
linkedList(3).nextNode = -1
linkedList(4).data = 2
linkedList(4).nextNode = 2
linkedList(5).data = 0
linkedList(5).nextNode = 6
linkedList(6).data = 0
linkedList(6).nextNode = 8
linkedList(7).data = 56
linkedList(7).nextNode = 3
linkedList(8).data = 0
linkedList(8).nextNode = 9
linkedList(9).data = 0
linkedList(9).nextNode = -1
Dim startPointer As Integer = 0
Dim emptyList As Integer = 5
1(b) Python
linkedList = [node(1,1),node(5,4),node(6,7),node(7,-1),node(2,2),node(0,6),
node(0,8),node(56,3),node(0,9),node(0,-1)]
startPointer = 0
emptyList = 5
Java
public static void main(String[] args){
node[] linkedList = new node[10];
linkedList[0] = new node(1,1);
linkedList[1] = new node(5, 4);
linkedList[2] = new node(6, 7);
linkedList[3] = new node(7,-1);
linkedList[4] = new node(2,2);
linkedList[5] = new node(0,6);
linkedList[6] = new node(0,8);
linkedList[7] = new node(56, 3);
linkedList[8] = new node(0,9);
linkedList[9] = new node(0,-1);
Integer startPointer = 0;
Integer emptyList = 5;
}
Example code:
Visual Basic
Sub outputNodes(ByRef linkedList, ByVal currentPointer)
While (currentPointer <> -1)
Console.WriteLine(linkedList(currentPointer).data)
currentPointer = linkedList(currentPointer).nextNode
End While
End Sub
Python
def outputNodes(linkedList, currentPointer):
while(currentPointer != -1):
print(str(linkedList[currentPointer].data))
currentPointer = linkedList[currentPointer].nextNode
Java
public static void outputNodes(node[] linkedList, Integer currentPointer){
while(currentPointer != -1){
System.out.println(linkedList[currentPointer].data);
currentPointer = linkedList[currentPointer].nextNode;
}
}
Example code:
Visual Basic
Function addNode(ByRef linkedList() As node, ByVal currentPointer As Integer, ByRef
emptyList As Integer)
Console.WriteLine("Enter the data to add")
Dim dataToAdd As Integer = Console.ReadLine()
Dim previousPointer As Integer = 0
Dim newNode As node
If emptyList < 0 Or emptyList > 9 Then
Return False
Else
newNode.data = dataToAdd
newNode.nextNode = -1
Return True
End If
End Function
Python
def addNode(linkedList, currentPointer, emptyList):
dataToAdd = input("Enter the data to add")
previousPointer = 0
while(currentPointer != -1):
previousPointer = currentPointer
currentPointer = linkedList[currentPointer].nextNode
linkedList[previousPointer].nextNode = emptyList
emptyList = linkedList[emptyList].nextNode
return True
1(d)(i) Java
public static Boolean addNode(node[] linkedList, Integer currentPointer,
Integer emptyList){
Integer dataToAdd;
Integer previousPointer;
node newNode;
Scanner in = new Scanner(System.in);
System.out.println("Enter the data to add");
dataToAdd = in.nextInt();
if(emptyList < 0 || emptyList > 9){
return false;
}else{
newNode = new node(dataToAdd, -1);
linkedList[emptyList] = newNode;
previousPointer = 0;
while(currentPointer != -1){
previousPointer = currentPointer;
currentPointer = linkedList[currentPointer].nextNode;
}
linkedList[previousPointer].nextNode = emptyList;
emptyList = linkedList[emptyList].nextNode;
return true;
}
}
Example code:
Visual Basic
Sub Main()
Dim linkedList(10) As node
linkedList(0).data = 1
linkedList(0).nextNode = 1
linkedList(1).data = 5
linkedList(1).nextNode = 4
linkedList(2).data = 6
linkedList(2).nextNode = 7
linkedList(3).data = 7
linkedList(3).nextNode = -1
linkedList(4).data = 2
linkedList(4).nextNode = 2
linkedList(5).data = -1
linkedList(5).nextNode = 6
linkedList(6).data = -1
linkedList(6).nextNode = 7
linkedList(7).data = 56
linkedList(7).nextNode = 3
linkedList(8).data = -1
linkedList(8).nextNode = 9
linkedList(9).data = -1
linkedList(9).nextNode = -1
Dim startPointer As Integer = 0
Dim emptyList As Integer = 5
outputNodes(linkedList, startPointer)
Dim returnValue As Boolean
returnValue = addNode(linkedList, startPointer,
emptyList)
Example:
1
5
2
6
56
7
5 (being input)
1
5
2
6
56
7
5
Example code:
Visual Basic
Dim arrayData(9) As Integer
Sub Main()
arrayData(0) = 10
arrayData(1) = 5
arrayData(2) = 6
arrayData(3) = 7
arrayData(4) = 1
arrayData(5) = 12
arrayData(6) = 13
arrayData(7) = 15
arrayData(8) = 21
arrayData(9) = 8
End Sub
Python
arrayData = [10, 5, 6, 7, 1, 12, 13, 15, 21, 8]
Java
int[] arrayData = new int[];
public static void main(String[] args){
arrayData[0] = 10;
arrayData[1] = 5;
arrayData[2] = 6;
arrayData[3] = 7;
arrayData[4] = 1;
arrayData[5] = 12;
arrayData[6] = 13;
Example code:
Visual Basic
Function linearSearch(ByRef searchValue As Integer)
For x = 0 To 9
If arrayData(x) = searchValue Then
Return True
End If
Next
Return False
End Function
2(b)(i) Python
def linearSearch(searchValue):
for x in range(0, 10):
if arrayData[x] == searchValue:
return True
return False
Java
public static Boolean linearSearch(Integer searchValue){
for (int x = 0; x < 10; x++){
if(arrayData[x] == searchValue){
return true;
}
}
return false;
}
Example code:
Visual Basic
Dim arrayData(10) As Integer
Sub Main()
arrayData(0) = 10
arrayData(1) = 5
arrayData(2) = 6
arrayData(3) = 7
arrayData(4) = 1
arrayData(5) = 12
arrayData(6) = 13
arrayData(7) = 15
arrayData(8) = 12
arrayData(9) = 8
Console.WriteLine("Enter a number to search for")
Dim searchValue As Integer = Console.ReadLine()
Dim returnValue As Boolean = linearSearch(searchValue)
If returnValue = True Then
Console.WriteLine("Found it")
Else
Console.WriteLine("Didn't find it")
End If
End Sub
2(b)(ii) Python
arrayData = [10, 5, 6, 7, 1, 12, 13, 15, 21, 8]
searchValue = int(input("Enter the number to search for"))
returnValue = linearSearch(searchValue)
if returnValue == True:
print("It was found")
else:
print("It was not found")
Java
Integer[] arrayData = new Integer[10];
public static void main(String[] args){
arrayData[0] = 10;
arrayData[1] = 5;
arrayData[2] = 6;
arrayData[3] = 7;
arrayData[4] = 1;
arrayData[5] = 12;
arrayData[6] = 13;
arrayData[7] = 15;
arrayData[8] = 12;
arrayData[9] = 8;
System.out.println("Enter the number to search for");
Integer searchValue;
Scanner in = new Scanner(System.in);
searchValue = in.nextInt();
Boolean returnValue;
returnValue = linearSearch(searchValue);
if (returnValue == true){
System.out.println("It was found");
}else{
System.out.println("It was not found");
}
}
2(b)(iii) 1 mark for screenshot showing input and output for number found 2
1 mark for screenshot showing input and output for number not found
Example code:
Visual Basic
Sub bubbleSort()
Dim temp As Integer = 0
For x = 0 To 9
For y = 0 To 8
If theArray(y) < theArray(y + 1) Then
temp = theArray(y)
theArray(y) = theArray(y + 1)
theArray(y + 1) = temp
End If
Next
Next
End Sub
2(c) Python
def bubbleSort():
for x in range (0, 10):
for y in range(0, 9):
if theArray[y] < theArray[y + 1]:
temp = theArray[y]
theArray[y] = theArray[y + 1]
theArray[y + 1] = temp
Java
public static void bubbleSort(){
int temp;
for (int x = 0; x < 10; x++){
for (int y = 0; y < 9; y++){
if(theArray[y] < theArray[y+1]){
temp = theArray[y];
theArray[y] = theArray[y+1];
theArray[y+1] = temp;
}
}
}
}
Example code:
Visual Basic
Class treasureChest
Private question As String
Private answer As Integer
Private points As Integer
Python
class treasureChest:
#Private question : String
#Private answer : Integer
#Private points : Integer
Visual Basic
Sub readData()
Dim arrayTreasure(4) as treasureChest
Dim filename As String = "treasureChestData.txt"
Try
Dim fileReader As New System.IO.StreamReader(filename)
Dim question As String
Dim answer, points As Integer
Dim numberQuestions as Integer = 0
While fileReader.Peek <> -1
question = fileReader.ReadLine()
answer = fileReader.ReadLine()
points = fileReader.ReadLine()
arrayTreasure(numberQuestions) = New treasureChest(question, answer, points)
numberQuestions += 1
End While
fileReader.Close()
Catch ex As Exception
Console.WriteLine("Invalid file")
End Try
End Sub
Python
# arrayTreasure(5) as treasureChest
def readData():
filename = "treasureChestData.txt"
try:
file= open(filename,"r")
dataFetched = (file.readline()).strip()
while(dataFetched != "" ):
question = dataFetched
answer = (file.readline()).strip()
Java
public static void readData(){
treasureChest[] arrayTreasure = new treasureChest[5]:
String filename = "treasureChestData.txt";
String dataRead;
String question;
String answer;
String points;
Integer numberQuestions = 0;
try{
FileReader f = new FileReader(filename);
BufferedReader reader = new BufferedReader(f);
dataRead = reader.readLine();
Example code:
Visual Basic
Function getQuestion()
Return question
End Function
Python
def getQuestion(self):
return self.__question
Java
public String getQuestion(){
return question;
}
Example code:
Visual Basic
Function checkAnswer(answerP)
If answer = answerP Then
Return True
Else
Return False
End If
End Function
Python
def checkAnswer(self, answerP):
if int(self.__answer) == answerP:
return True
else:
return False
Java
public Boolean checkAnswer(Integer answerP){
if (answer == answerP){
return true;
}else{
return false;
}
}
Example code:
Visual Basic
Function getPoints(attempts)
If attempts = 1 Then
Return points
ElseIf attempts = 2 Then
Return points \ 2
ElseIf attempts = 3 Or attempts = 4 Then
Return points \ 4
Else
Return 0
End If
End Function
Python
def getPoints(self, attempts):
if attempts == 1:
return int(self.__points)
elif attempts == 2:
return int(self.__points) // 2
elif attempts == 3 or attempts == 4:
return int(self.__points) // 4
else:
return 0
3(c)(iii) Java
public Integer getPoints(Integer attempts){
if (attempts == 1){
return points;
}else if(attempts == 2){
return Math.round(points/2);
}else if(attempts == 3 || attempts == 4){
return Math.round(points/4);
}else{
return 0;
}
}
Visual Basic
Sub Main()
readData()
Console.WriteLine("Pick a treasure chest to open")
Dim choice As Integer = Console.ReadLine()
Dim result As Boolean
Dim answer As Integer
Dim attempts As Integer = 0
If choice > 0 And choice < 6 Then
result = False
attempts = 0
While result = False
Console.WriteLine(arrayTreasure(choice - 1).getQuestion())
answer = Console.ReadLine
result = arrayTreasure(choice - 1).checkAnswer(answer)
attempts = attempts + 1
End While
Console.WriteLine(arrayTreasure(choice - 1).getPoints(attempts))
End If
End Sub
Python
readData()
choice = int(input("Pick a treasure chest to open"))
if choice > 0 and choice < 6:
result = False
attempts = 0
while result == False:
answer = int(input(arrayTreasure[choice-1].getQuestion()))
result = arrayTreasure[choice-1].checkAnswer(answer)
attempts = attempts + 1
print(int(arrayTreasure[choice-1].getPoints(attempts)))
3(c)(iv) Java
public static void main(String[] args){
readData();
Scanner scanner = new Scanner(System.in);
System.out.println("Pick a treasure chest to open");
Integer answer;
Integer choice;
choice= Integer.parseInt(scanner.nextLine());
Integer attempts;
if (choice> 0 && choice < 6){
Boolean result = false;
attempts = 0;
while (result == false){
System.out.println(arrayTreasure[choice-1].getQuestion());
answer = Integer.parseInt(scanner.nextLine());
result = arrayTreasure[choice-1].checkAnswer(answer);
attempts++;
}
System.out.println(arrayTreasure[choice-1].getPoints(attempts));
}
}
• Screenshot:
outputting 3000+4000
entering an incorrect value
entering 7000
outputting 9