• COS1512 – May/ June 2014
• COS1512 – May/ June 2015
• COS1512 – Oct/ Nov 2015
• COS1512 – May/ June 2016
• COS1512 – Oct/ Nov 2016
• COS1512 – May/June 2017 P1
• COS1512 – May/June 2017 P2
, COS1512/104/2/2015
5 LAYOUT OF EXAMINATION PAPER
This section provides estimates of the marks allocated per question to different sections of the
work. You will need to know all the work which has been outlined in Tutorial Letter 101. The mark
allocation will approximately be as follows:
Question 1: +/- 4 marks: C strings
Question 2: +/- 4 marks: recursion
Question 3: +/- 5 marks: pointers
Question 4: +/- 27 marks: class definition and implementation
Question 5: +/- 10 marks: file processing
Question 6: +/- 15 marks: inheritance
Question 6: +/- 10 marks: vectors and templates
Please note that we test all the work. This outline points out the most important aspects tested in
each question.
6 PREVIOUS EXAMINATION PAPER
The examination paper which is used for this section is on myUnisa. It is the May/June 2014
examination paper. Please download the examination paper. We have only included the
memorandum for the examination.
Memorandum for May 2014 Exam
double computeBill(double price)
{
return price * 1.14;
}
double computeBill(double price, int quantity)
{
return (price * quantity) * 1.14;
}
double computeBill(double price, int quantity, double coupon)
{
double total = (price * quantity - coupon) * 1.14;
return total;
}
int main()
{
double price = 12.99;
int quantity = 10;
double coupon = 5.00;
, cout << "Amount = " << computeBill(9.99);
cout << "Amount = " << computeBill(9.99, 10);
cout << "Amount = " << computeBill(9.99, 10, 50.00);
}
Rectangle duplicate (Rectangle & rect1 , Rectangle & rect2 )
{
rect1.width = rect2.width;
rect1.height = rect2.height;
}
friend Rectangle duplicate (Rectangle & rect1, Rectangle & rect2);
duplicate (foo, bar);
3.1 SS.push_back("The number is 10"); (1)
3.2 cout << SS.size() << endl; (1)
3.3 cout << SS[2] << endl; (1)
3.4 int ii; (2)
for(ii=0 ; ii < SS.size() ; ii++)
{
cout << SS[ii] << endl;
}
4.1 if (n == 0) (1)
4.2 We are busy with recursion111 (1)
1. #include <fstream> // file i/o
2. ifstream input;
3. input.open(name);
if(!input)
{
cout << "Cannot open file " << name << " Aborting." << endl;
6
, COS1512/104/2/2015
exit (1);
}
4. while(input)
5. input.close();
The declaration int * pOne; declares pOne to be a pointer pointing to an int value. (1)
The declaration int vTwo; declares pTwo as an int value. (1)
The statement int * pThree = &vTwo; declares a pointer to an integer and initializes it with the
address of another variable of vTwo. (1)
The declaration int * q = p; declares q to be a pointer pointing to the same int to which p points.
The assignment n = *p; assigns to n the int to which p points. (2)
6.2.2 The declaration int & r = n; declares r to be a reference for the int variable n. (2)
The assignment p = &n; assigns the address of n to the pointer p.
6.3.1 123456789
6.3.2 10 1 2 3 4 5 6 7 8 9
6.3.3 0123456789
class Product
{
public:
Product();
Product(long, double, double, long);
void display();
double retailPrice();
void modify();
Product increment();
Product decrement();
private:
long id;
double price;
double markup;
long number;
};
#include <iostream>