CSC-9618 Mock 1 A2 Paper 4 (Mark Scheme)
CSC-9618 Mock 1 A2 Paper 4 (Mark Scheme)
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;
}
}
Question Answer Marks
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
Question Answer Marks
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;
}
Question Answer Marks
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;
}
}
Question Answer Marks
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
Question Answer Marks
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
Question Answer Marks
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;
}
}
Question Answer Marks
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)
Question Answer Marks
Python
linkedList = [node(1,1),node(5,4),node(6,7),node(7,-1),node(2,2),node(-1,6),
node(-1,7),node(56,3),node(-1,9),node(-1,-1)]
startPointer = 0
emptyList = 5
outputNodes(linkedList, startPointer)
returnValue = addNode(linkedList, startPointer, emptyList)
if returnValue == True:
print("Item successfully added")
else:
print("Item not added, list full")
outputNodes(linkedList, startPointer)
Java
public static void main(String[] args){
Example:
1
5
2
6
56
7
5 (being input)
1
5
2
6
56
7
5
Question Answer Marks
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;
Question Answer Marks
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
Question Answer Marks
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;
}
Question Answer Marks
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
Question Answer Marks
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");
}
}
Question Answer Marks
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
Question Answer Marks
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;
}
}
}
}
Question Answer Marks
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
3(a) Java
import java.util.Scanner;
class treasureChest{
private String question;
private Integer answer;
private Integer points;
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()
Question Answer Marks
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;
}
Question Answer Marks
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;
}
}
Question Answer Marks
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
Question Answer Marks
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)))
Question Answer Marks
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