GRADE 11 JUNE PAPER 1 2018 – POSSIBLE SOLUTIONS
QUESTION ONE
implementation
var
category,Race : String;
entryFee : Real;
age : Integer;
//Q 1.1
procedure TForm1.btnQ11Click(Sender: TObject);
var
dob : String;
year : Integer;
begin
dob := edtDOB.Text;
year := StrToInt(Copy(dob,7,4));
age := 2018 - year;
category := 'Senior';
if age <= 16 then
category := 'Junior';
edtCategory.Text := category; (8)
end;
//Q1.2
procedure TForm1.btnQ12Click(Sender: TObject);
var discount : Real;
begin
discount := 0;
if chbxClub.Checked then
discount := discount + 0.08;
if chbxCharity.Checked then
discount := discount + 0.025;
if category = 'Junior' then
begin
if cmbRace.ItemIndex > 1 then
begin
ShowMessage('This Entrant Is Not Eligible For This Race');
cmbRace.ItemIndex := 0;
end
else
begin
entryFee := 45;
race := cmbRace.Text;
end;
end
else
begin
if cmbRace.ItemIndex < 2 then
begin
ShowMessage('This Entrant Is Not Eligible For This Race');
cmbRace.ItemIndex := 0;
Skip to contentAll 2018 papers 





View all





Information Technology Grade 11 P1 2018 Memo
Grade 11 Information Technology Paper 1 memorandum from the KwaZulu Natal June 2018, 10 pages. Read online or download the free PDF.
Information Technology · Grade 11 · KwaZulu Natal June · 2018. Memorandum, 10 pages. Read online or download the PDF.
- Subject
- Information Technology
- Grade
- Grade 11
- Document type
- Memorandum
- Year
- 2018
- Exam period
- KwaZulu Natal June
- Paper
- 1
- Curriculum
- CAPS
- Pages
- 10
- File size
- 115.7 KB
Free to read online, no sign-up needed
Loading document…
Loading document…
1 of 10
This exam
KwaZulu Natal June 2018
- Paper 1Question paperMemo
- Paper 2Question paperMemo
Questions in this paper
Document textSearch extracted text and jump to a page.
end
else
begin
entryFee := 75;
race := cmbRace.Text;
end;
end;
entryFee := entryFee - (discount * entryFee);
edtEntryFee.Text := FloatToStrF(entryFee,ffCurrency,8,2); (12)
end;
//Q1.3
procedure TForm1.btnQ13Click(Sender: TObject);
var
fName, entryNo,gender,iSN : String;
p,numVowels,x,randNum : Integer;
begin
fName := UpperCase(edtFullName.Text);
p := Pos(' ',fName);
gender := 'Female';
if rbtnMale.Checked then
gender := 'Male';
numVowels := 0;
for x := 1 to Length(fName) do
if fName[x] IN ['A','E','I','O','U'] then
Inc(numVowels);
randNum := RandomRange(1000,5000);
entryNo := fName[1] + fName[p+1] + IntToStr(age) + gender[1] + IntToStr(numVowels) +
IntToStr(randNum);
iSN := fName[1] + '. ' + Copy(fName,p+1);
redOutput.Lines.Add(entryNo + #9 + iSN + #9 + gender + #9 + category + #9 + Race + #9 +
FloatToStrF(entryFee,ffCurrency,8,2));
end; (15)
[35]
QUESTION TWO
implementation
var
id,gend,fName : String;
//2.1.1
Function TForm1.isValidID(id : STRING):boolean;
var
valid : Boolean;
x,sumOdd,even,sumEven,checkDigit,total : Integer;
sEven : String;
begin
sEven := '';
sumOdd := 0;
SumEven := 0;
valid := False;
for x := 1 to 12 do
begin
if x MOD 2 = 1 then
sumOdd := sumOdd + StrToInt(id[x])
else
sEven := sEven + id[x];
end;
even := StrToInt(sEven) * 2;
sEven := IntToStr(even);
for x := 1 to Length(sEven) do
sumEven := sumEven + StrToInt(sEven[x]);
total := sumOdd + sumEven;
checkDigit := 10 - (total MOD 10);
if checkDigit = StrToInt(id[13]) then
valid := True;
Result := valid;
end; (16)
//2.1.2
Function TForm1.isValidGender(id,gender : STRING) : Integer;
var
valid : Integer;
gen : String;
begin
gen := 'Female';
if strToInt(id[7]) > 4 then
gen := 'Male';
valid := 0;
if gen = gender then
valid := 1;
Result := valid;
end; (8)
//2.1.3
Function TForm1.isValidName(fName : STRING) : Boolean;
VAR
x : Integer;
valid : Boolean;
begin
valid := true;
x := 1;
while ((X <= Length(fName)) AND (valid)) do
begin
if NOT(fName[x] IN ['a'..'z','A'..'Z','-',' ']) then
valid := False;
Inc(x);
end;
Result := valid;
end; (8)
//2.1.4
Procedure TForm1.resetForm;
begin
edtIDNo.Clear;
edtFullName.Clear;
rbtnMale.Checked := False;
rbtnFemale.Checked := False;
btnValidateGender.Enabled := False;
btnValidateName.Enabled := False;
btnSave.Enabled := False;
btnDiscard.Enabled := False;
edtIDNo.SetFocus;
end; (3)
//2.2.1
procedure TForm1.btnValidateIDClick(Sender: TObject);
begin
id := edtIDNo.Text;
if isValidID(id) then
begin
btnValidateGender.Enabled := True;
ShowMessage('Id Number Is Valid');
end
else
begin
ShowMessage('Invalid Id Number! Please Try Again...');
edtIDNo.Clear;
edtIDNo.SetFocus;
end;
end; (4)
//2.2.2
procedure TForm1.btnValidateGenderClick(Sender: TObject);
begin
id := edtIDNo.Text;
gend := 'Male';
if rbtnFemale.Checked then
gend := 'Female';
if isValidGender(id,gend) = 1 then
begin
btnValidateName.Enabled := True;
ShowMessage('Selected Gender Is Valid');
end
else
begin
ShowMessage('Id Number And Gender Do Not Match! Please Enter New ID Number OR Select Different
Gender');
rbtnFemale.Checked := False;
rbtnMale.Checked := False;
end;
end; (9)
//2.2.3
procedure TForm1.btnValidateNameClick(Sender: TObject);
begin
fName := edtFullName.Text;
if isValidName(fName) then
begin
btnSave.Enabled := True;
btnDiscard.Enabled := True;
ShowMessage('Name Input Is Valid');
end
else
begin
ShowMessage('Invalid Name! Please Try Again...');
edtFullName.Clear;
edtFullName.SetFocus;
end;
end; (5)
//2.2.4
procedure TForm1.btnSaveClick(Sender: TObject);
var
t : TextFile;
line : String;
begin
AssignFile(t,'Registered.txt');
Append(t);
line := id + '#' + fName + '#' + gend;
Writeln(t,line);
ShowMessage('Details of Entrant Saved To File');
CloseFile(t);
resetForm;
end; (8)
//2.2.5
procedure TForm1.btnDiscardClick(Sender: TObject);
begin
resetForm;
end; (1)
[62]
QUESTION THREE
//3.1
procedure TForm1.btnGenerateClick(Sender: TObject);
var
x : Integer;
begin
for x := 1 to numEntrants do
case race[x] of
5 : time[x] := RandomRange(20,60);
10 : time[x] := RandomRange(61,90);
20 : time[x] := RandomRange(250,350);
50 : time[x] := RandomRange(390,500);
end;
end; (6)
//3.2
procedure TForm1.btnDisplayAllClick(Sender: TObject);
var
x,hh,mm : Integer;
disp,fTime : String;
begin
redOutput.Clear;
disp := 'Gender' + #9 + 'Race' + #9 + 'Finishing Time';
redOutput.Lines.Add(disp);
for x := 1 to numEntrants do
begin
hh := time[x] DIV 60;
mm := time[x] MOD 60;
fTime := IntToStr(hh) + ':' + IntToStr(mm);
disp := gender[x] + #9 + IntToStr(race[x]) + ' KM' + #9 + fTime;
redOutput.Lines.Add(disp);
end;
end; (8)
//3.3.1
procedure TForm1.btnFastestClick(Sender: TObject);
var
selGen : char;
selRace,x,fastest : Integer;
begin
redOutput.Clear;
selGen := 'F';
if cmbGender.ItemIndex = 1 then
selGen := 'M';
case cmbRaceType.ItemIndex of
0 : selRace := 5;
1 : selRace := 10;
2 : selRace := 20;
3 : selRace := 50;
end;
fastest := 0;
x := 1;
while fastest = 0 do
begin
if (gender[x] = selGen) AND (race[x] = selRace) then
fastest := time[x];
inc(x);
end;
for x := 1 to numEntrants do
if (gender[x] = selGen) AND (race[x] = selRace) then
if time[x] < fastest then
fastest := time[x];
redOutput.Lines.Add('The fastest time for ' + selGen + ' in the '+ IntToStr(selRace)+ 'KM is ' +
IntToStr(fastest) + ' Minutes');
end; (16)
//3.3.2
procedure TForm1.btnAverageTimeClick(Sender: TObject);
var
x,sum,count,selRace : Integer;
selGen : Char;
avg : real;
begin
selGen := 'F';
if cmbGender.ItemIndex = 1 then
selGen := 'M';
case cmbRaceType.ItemIndex of
0 : selRace := 5;
1 : selRace := 10;
2 : selRace := 20;
3 : selRace := 50;
end;
count := 0;
sum := 0;
for x := 1 to numEntrants do
if (gender[x] = selGen) AND (race[x] = selRace) then
begin
sum := sum + time[x];
inc(count);
end;
avg := sum/count;
redOutput.Clear;
redOutput.Lines.Add('The Average Time For ' + selGen + ' in the ' + IntToStr(selRace) + 'KM is ' +
FloatToStrF(avg,ffFixed,8,2) + ' Minutes');
end; (8)
//3.3.3
procedure TForm1.btnDisplaySelectedClick(Sender: TObject);
var
x,hh,mm,selRace : Integer;
disp,fTime : String;
selGen : Char;
begin
selGen := 'F';
if cmbGender.ItemIndex = 1 then
selGen := 'M';
case cmbRaceType.ItemIndex of
0 : selRace := 5;
1 : selRace := 10;
2 : selRace := 20;
3 : selRace := 50;
end;
redOutput.Clear;
disp := 'Gender' + #9 + 'Race' + #9 + 'Finishing Time';
redOutput.Lines.Add(disp);
for x := 1 to numEntrants do
begin
if (gender[x] = selGen) AND (race[x] = selRace) then
begin
hh := time[x] DIV 60;
mm := time[x] MOD 60;
fTime := IntToStr(hh) + ':' + IntToStr(mm);
disp := gender[x] + #9 + IntToStr(race[x]) + ' KM' + #9 + fTime;
redOutput.Lines.Add(disp);
end;
end;
end; (4)
//3.4
procedure TForm1.btnSortClick(Sender: TObject);
var
x,y,temp : Integer;
tGen : Char;
begin
for x := 1 to numEntrants - 1 do
for y := x+1 to numEntrants do
if race[x] > race[y] then
begin
temp := race[x];
race[x] := race[y];
race[y] := temp;
temp := time[x];
time[x] := time[y];
time[y] := temp;
tGen := gender[x];
gender[x] := gender[y];
gender[y] := tGen;
end;
for x := 1 to numEntrants - 1 do
for y := x+1 to numEntrants do
if race[x] = race[y] then
if time[x] > time[y] then
begin
temp := time[x];
time[x] := time[y];
time[y] := temp;
tGen := gender[x];
gender[x] := gender[y];
gender[y] := tGen;
end;
end; (11)
[53]
Study this subject
Recommended for this subject

Question paper
Information Technology Grade 11 P1 2018 QP

Memorandum
Information Technology Grade 11 P1 2018 Memo (Afr)

Memorandum
Information Technology Grade 11 P1 2018 Memo

Memorandum
Information Technology Grade 11 P1 2017 Memo

Memorandum
Information Technology Grade 11 P1 2015 Memo

Question paper
Information Technology Grade 11 P1 2018 QP (Afr)
More from Grade 11 Information Technology

Annual teaching plan
Gr 11 Info Tech ATP 2023 24

Question paper
Information Technology Grade 11 P1 2022 QP (Afr)

Question paper
Information Technology Grade 11 P1 2022 QP (Eng)

Question paper
Information Technology Grade 11 P2 2022 QP (Afr)

Question paper
Information Technology Grade 11 P2 2022 QP (Eng)

Question paper