COS1512 Assignment 4 memo 2024 MCQ and code
NB: This assignment consists of two parts:
•
•
a part where you write and implement program code (this part) and
an MCQ part where you answer questions on the code you have written,
and the material covered in this assignment.
The MCQ part of t...
Crystal Indigo!
Crystal Indigo!
Providing all solutions you need anytime
+27 76 626 8187
All the code and answered MCQ ready to submit and ready
for MCQ
NB: This assignment consists of two parts:
• a part where you write and implement program code, which is provided in this
document in full and
• an MCQ part where you answer questions on the code you have written,
which is provided in this document in full
,Question 1
The program below contains an incomplete recursive function raised_to_power(). The
function returns the value of the first parameter number of type float raised to the value of the
second parameter power of type int for all values of power greater than or equal to 0.
The algorithm used in this question to write a recursive function to raise a float value number to a
positive power uses repeated multiplication as follows:
numberpower = 1 if power= 0
= number x numberpower -1 otherwise
In other words, number raised to power gives 1 if power is 0; and otherwise numberpower can
be calculated with the formula: number x numberpower -1
(a) Complete the function header in line 2. //see in the code below.
(b) Using the fact that any value raised to the power of 0 is 1, complete the base case in line 10
and 11. //see in the code below.
(c) Why do we need a base case in a recursive function?
Because, the base case provides a stopping condition for the recursion. Without it, the
function would keep calling itself indefinitely, leading to a stack overflow. The base case is
the simplest scenario where we can directly return a result without further recursive calls.
(d) What is the purpose of the general case?
The general case generate the recursive calls which should eventually result in a call that
cause the base case to execute and end the recursion. It handles all other scenarios not
covered by the base case. It breaks down the problem into smaller subproblems and makes
recursive calls to solve these subproblems. In this case, it multiplies the number by itself
raised to power - 1, gradually reducing the problem until it reaches the base case.
1 #include <iostream>
2
3 using namespace std;
4
5 //(a)Complete the function header in line 2
6 float raised_to_power(float number, int power) {
7 if (power < 0) {
8 cout << "\nError - can't raise to a negative power\n";
9 exit(1);
10 } else if (power == 0) {//(b)
11 return 1.0;
12 } else {
13 return number * raised_to_power(number, power - 1);
14 }
15 }
16
17 int main() {
18 float answer = raised_to_power(4.0, 3);
19 cout << answer<<endl;
20 return 0;
,Question 2
1: #include <iostream>
2: using namespace std;
3:
4: //
5:
6: class A
7: {
8: private:
9: int x;
10: protected:
11: int getX();
12: public:
13: void setX();
14: };
15:
16: int A::getX()
17: {
18: return x;
19: }
20:
21: void A::setX()
22: {
23: x=10;
24: }
25:
26://
27: class B
28: {
29: private:
30: int y;
,31: protected:
32: A objA;
33: int getY();
34: public:
35: void setY();
37: };
38:
39: void B::setY()
40: {
41: y=24;
42: int a = objA.getX();
43: }
44:
45://
46:
47: class C: public A
48: {
49: protected:
50: int z;
51: public:
52: int getZ();
53: void setZ();
54: };
55:
56: int C::getZ()
57: {
58: return z;
59: }
60:
61: void C::setZ()
62: {
63: z=65;
, 64: }
(a) Is line 18 a valid access? Justify your answer.
It's inside the getX() member function of class A, which has access to the private member
x. x is a private data member of the class A and therefore it can only be accessed by other
member functions and operators of the class A.
(b) Is line 32 a valid statement? Justify your answer.
An object of class A is created in class B as objA. Since class B has access to protected
members of class A, it is able to use them.
(c) Identify another invalid access statement in the code.
Another invalid access statement in the code is on line 42: int a = objA.getX();
This is invalid because getX() is a protected member of class A, and class B is not derived
from A, so it cannot access getX().
(d) Class C has public inheritance with the class A. Identify and list class C’s private, protected
and public member variables resulting from the inheritance.
With public inheritance, the public and protected members of the base class A are inherited
as public and protected members of the derived class C.
Private data members or member functions resulting from the inheritance: None
Protected data members or member functions resulting from the inheritance: getX()
Public data members or member functions resulting from the inheritance: setX()
(e) If class C had protected inheritance with the class A, identify and list class C’s private,
protected and public members variables resulting from the inheritance.
With protected inheritance, public and protected members of the base class become
protected members of the derived class.
Private data members or member functions resulting from the inheritance: None
Protected data members or member functions resulting from the inheritance: setX() and
getX()
Public data members or member functions resulting from the inheritance: None
Question 3
(a) Implement the class InsurancePolicy.
insurancepolicy.h
#ifndef INSURANCE_H
#define INSURANCE_H
#include <iostream>
The benefits of buying summaries with Stuvia:
Guaranteed quality through customer reviews
Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.
Quick and easy check-out
You can quickly pay through credit card or Stuvia-credit for the summaries. There is no membership needed.
Focus on what matters
Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!
Frequently asked questions
What do I get when I buy this document?
You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.
Satisfaction guarantee: how does it work?
Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.
Who am I buying these notes from?
Stuvia is a marketplace, so you are not buying this document from us, but from seller CrystalIndigo. Stuvia facilitates payment to the seller.
Will I be stuck with a subscription?
No, you only buy these notes for $7.67. You're not tied to anything after your purchase.