100% de satisfacción garantizada Inmediatamente disponible después del pago Tanto en línea como en PDF No estas atado a nada 4.2 TrustPilot
logo-home
Otro

COS1512 Assignment 4 memo 2024 MCQ and code

Puntuación
5.0
(1)
Vendido
11
Páginas
69
Subido en
13-09-2024
Escrito en
2024/2025

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 the assignment will be available in the Assessment Shell for Assignment 4 on the myModules site for COS1512. You will not be able to do the MCQ part unless you have completed thecoding part. 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 =1if power= 0 = number x numberpower-1otherwise 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 1. #include <iostream>using namespace std; 2. float raised_to_power( ) 3. { 4. if (power < 0) 5. { 6. cout << "nError - can't raise to a negative powern"; 7. exit(1); 9. } 10. else if ( ) 11. return ( ); 12. else 13. return (number * raised_to_power(number, power - 1)); 14. } 15. main() 16. 17. float answer = raised_to_power(4.0,3); 18. cout << answer; 19. return 0; 20.} (a)Complete the function header in line 2. (b)Using the fact that any value raised to the power of 0 is 1, complete the baseCOS1512/2024 case in line 10 and 11. (c)Why do we need a base case in a recursive function? (d)What is the purpose of the general case? Question 2 Examine the code fragment below and answer the questions that follow: 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: publicA 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: } Answer the following questions based on the code fragment given above: (a)Is line 18 a valid access? Justify your answer. (b)Is line 32 a valid statement? Justify your answer. (c)Identify another invalid access statement in the code. (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. (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.COS1512/2024 Question 3 Consider the class definition below and answer the questions that follow: class InsurancePolicy { public: InsurancePolicy(); InsurancePolicy(int pNr, string pHolder, double aRate); ~InsurancePolicy(); void setPolicy(int pNr, string pHolder, double aRate);int get_pNr()const; string get_pHolder()const; double get_aRate()const; private: int policyNr; string policyHolder;double annualRate; }; (a)Implement the class InsurancePolicy. (b)Code the interface for a class CarInsurance derived from class InsurancePolicy (the base class). This class has an additional member variable, excess. Class InsurancePolicy also has member functions, get_excess() and set_excess()to return the value of member variable excess and update the value of member variable excess respectively. The class CarInsurance should override function showPolicy() in order to display the member variables of CarInsurance and also override member function setPolicy() in order to update the member variables of CarInsurance.(c) Implement the class CarInsurance and use the code below to implement setPolicy(): void CarInsurance:: setPolicy(int pNr, string pHolder,double aRate, double eValue) { policyNr = pNr; policyholder = pHolder; annualRate = aRate; excess = eValue; } You should obtain the following errors: Explain why setPolicy()is not a legal definition in the derived class CarInsurance? Suggest two ways to fix this problem. (d)Add a member function void showPolicy(ostream & out)const; to the class InsurancePolicy as well as to the class CarInsurancein order to display the member variables of InsurancePolicy and CarInsurance. (e)Use the following driver program to test your classes InsurancePolicy and CarInsurance: #include <iostream> #include <fstream> #include "Insurance.h" #include "CarInsurance.h" using namespace std; int main() { InsurancePolicy myPolicy(123456, "Peter Molema", 3450.67); CarInsurance yourPolicy(456891, "Wilson Ntemba", 5550.67, 15000.00); (ios::fixed); (ios::showpoint);COS1512/2024 sion(2); myPPolicy(cout); cout << endl; yourPPolicy(cout); cout << endl << "AFTER UPDATES:" << endl; myPPolicy(123456, "Peter Molema", 5450.67); yourPPolicy(456891,"Wilson Ntemba",6650.67, 25000.00); myPPolicy(cout); cout << endl; yourPPolicy(cout); cout << endl; return 0; } Question 4 (a) Write a function called found() to determine whether a specific value occurs in a vector of integers. The function should receive two parameters: the vector to be searched (v) and the value to search for (val). The function found() should return a Boolean value to indicate whether or not val occurs in vector v. Test your function found() in a program by declaring a vector and initializing it,and then call function found() to determine whether a specific value occurs in the vector. (b) Write a template version of the function found() to determine whether a specific value occurs in a vector of any base type. Test your template function by declaring two or more vectors with different base types and determining whether specific values occurs in these two vectors. Question 5 Many application programs use a data structure called a dictionary in which one can use a key value to retrieve its associated data value. For example, we might want to associate automobile part numbers with the names of the corresponding parts: Key 100000 100001 100002 100003 Value tire wheel distributor air filter The following class interface presents an approach to implementing the above scenario:class Dictionary { public: Dictionary(); void Add(int key, const string &value); string Find (int key) const; private: vector<int> Keys; vector<string> Values; }; The class Dictionaryhas the following operations (member functions): • Add() - adds a new key and value to the dictionary • Find()- retrieves the corresponding value for that particular key, for example Find(100002) would return “distributor”. Consider the following implementation of the class Dictionary and convert it into a template class. In other words, re-design the Dictionary interface so that it may be used to create a Dictionary containing keys and values of any type. For instance, the value could be of type double, whereas the key could be of type char. Note the key and value may be most likely of different types hence we need two different template arguments to be supplied. Also test your template class by declaring two objects of template class Dictionary with different template arguments. Dictionary.h #ifndef DICTIONARY_H #define DICTIONARY_H #include <vector> #include <string> #include <iostream> using namespace std; class Dictionary { public: Dictionary(); void add(int key, const string &value);string find (int key) const; void display(); private: vector<int> keys; vector<string> values; }; #endif // DICTIONARY_HCOS1512/2024 D #include "Dictionary.h" #include <vector> #include <iostream> using namespace std; Dictionary::Dictionary() { //nothing to do, vector member variables are empty on //declaration }; void Dictionary::add(int key, const string &value) { _back(key); _back(value); } string Dictionary::find (int key) const { string value = " "; for (unsigned int i = 0; i < (); i++)if (key == keys[i]) value = values[i];if (value == " ") return "no such key can be found";else return value; } void Dictionary::display() { for (unsigned int i = 0; i < (); i++) cout << keys[i] << ' ' << values[i] << endl; return; } M #include <iostream> #include <cstdlib> #include "Dictionary.h" #include <vector> using namespace std; int main() { Dictionary parts; string part; int key; //add 4 values to the parts dictionaryfor (int i = 0; i <= 3; i++) { cout << "Please enter a part name and a key to add " << "to the parts dictionary." << endl; cout << "Part name: "; getline(cin, part); cout << "Key for part name: ";cin>> key; (key, part); (); } cout << endl; ay(); cout << endl; //find the part for a key cout << "For which key do you want to find the part? ";cin >> key; cout << "The part for key " << key << " is ";cout << (key) << endl; return 0; }

Mostrar más Leer menos
Institución
Grado












Ups! No podemos cargar tu documento ahora. Inténtalo de nuevo o contacta con soporte.

Escuela, estudio y materia

Institución
Grado

Información del documento

Subido en
13 de septiembre de 2024
Número de páginas
69
Escrito en
2024/2025
Tipo
Otro
Personaje
Desconocido

Temas

Vista previa del contenido

COS1512 2024 Assignment 4 memo

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>
$8.17
Accede al documento completo:

100% de satisfacción garantizada
Inmediatamente disponible después del pago
Tanto en línea como en PDF
No estas atado a nada

Reseñas de compradores verificados

Se muestran los comentarios
1 año hace

5.0

1 reseñas

5
1
4
0
3
0
2
0
1
0
Reseñas confiables sobre Stuvia

Todas las reseñas las realizan usuarios reales de Stuvia después de compras verificadas.

Conoce al vendedor

Seller avatar
Los indicadores de reputación están sujetos a la cantidad de artículos vendidos por una tarifa y las reseñas que ha recibido por esos documentos. Hay tres niveles: Bronce, Plata y Oro. Cuanto mayor reputación, más podrás confiar en la calidad del trabajo del vendedor.
CrystalIndigo University of South Africa (Unisa)
Seguir Necesitas iniciar sesión para seguir a otros usuarios o asignaturas
Vendido
486
Miembro desde
5 año
Número de seguidores
226
Documentos
73
Última venta
1 mes hace
CrystalIndigo Solutions

providing all solutions to all computer science modules

4.1

51 reseñas

5
27
4
13
3
6
2
1
1
4

Recientemente visto por ti

Por qué los estudiantes eligen Stuvia

Creado por compañeros estudiantes, verificado por reseñas

Calidad en la que puedes confiar: escrito por estudiantes que aprobaron y evaluado por otros que han usado estos resúmenes.

¿No estás satisfecho? Elige otro documento

¡No te preocupes! Puedes elegir directamente otro documento que se ajuste mejor a lo que buscas.

Paga como quieras, empieza a estudiar al instante

Sin suscripción, sin compromisos. Paga como estés acostumbrado con tarjeta de crédito y descarga tu documento PDF inmediatamente.

Student with book image

“Comprado, descargado y aprobado. Así de fácil puede ser.”

Alisha Student

Preguntas frecuentes