# Programming in Modern C++ | Week 3

Session: JULY-DEC 2023

Course Name: Programming in Modern C++

### Programming

Question 1
Consider the following program. Fill in the blanks as per the instructions given below:
• Complete two constructor statements at LINE-1 and LINE-2,
• Complete the return statement at LINE-3 to calculate the manhattan distance between two points,
such that it will satisfy the given test cases.

Solution:

``````#include<iostream>
#include<cmath>
using namespace std;

class Point{
const int x,y;

public:
Point(int _x=0, int _y=0) : x(_x), y(_y) {} //LINE-1

Point(const Point& p) : x(p.x), y(p.y) {} //LINE-2

double distance(Point p){

return abs(x - p.x) + abs(y - p.y); //LINE-3
}``````

These are Nptel Programming in Modern C++ Assignment 3 Answers

Question 2
Consider the following program. Fill in the blanks as per the instructions given below.
• at LINE-1 with constructor definition,
• at LINE-2 with appropriate statement to deallocate array memory
such that it will satisfy the given test cases.

Solution:

``````#include<iostream>
using namespace std;

class Array{
int *arr;
int size;

public:
Array(int n) : size(n), arr(new int[size]) {} //LINE-1

~Array(){ delete[] arr; } //LINE-2``````

These are Nptel Programming in Modern C++ Assignment 3 Answers

Question 3
Consider the following program. Fill in the blanks at LINE-1, LINE-2 and LINE-3 with appropriate keywords such that it will satisfy the given test cases.

Solution:

``````#include<iostream>
using namespace std;
class Student{
const int sid;
string sname;

mutable int marks; //LINE-1

public:
Student(int a, string b, int c) : sid(a), sname(b), marks(c) {}

void updateMarks(int x) const { marks += x; } //LINE-2

void print() const {    //LINE-3``````

These are Nptel Programming in Modern C++ Assignment 3 Answers

Session: JULY-DEC 2022

Course Name: Programming in Modern C++

These are Nptel Programming in Modern C++ Assignment 3 Answers

### Quiz

#### Q1. Consider the following program.Which line/s will generate an error?a) LINE-1b) LINE-2c) LINE-3d) LINE-4

Q2. Consider the following class.
Fill in the blanks with proper access specifiers so that member y can be accessed from outside of the class but member x cannot be accessed.

a) public, public
b) public, private
c) private, public
d) private, private

These are Nptel Programming in Modern C++ Assignment 3 Answers

Q3. Consider the following code segment.
What will be the output/error?

a) 1st
b) 2nd
c) 1st 2nd
d) Compilation Error : call of overloaded ‘myClass()’ is ambiguous

Q4. Consider the following code segment.
What will be the output?

a) 1 2
b) 3 1
c) 2 3
d) 3 4

These are Nptel Programming in Modern C++ Assignment 3 Answers

Q5. Consider the following code segment.
Fill in the blank at LINE-1 so that the program will print fun is coding.

a) *lstr, *mstr, *fstr
b) *mstr, *fstr, *lstr
c) *lstr, *fstr, *mstr
d) *fstr, *lstr, *mstr

Q6. Consider the following code segment.
What will be the output?

a) 27
b) 00
c) Compilation error : no default constructor
d) Compilation error : constructor is private

Answer: d) Compilation error : constructor is private

These are Nptel Programming in Modern C++ Assignment 3 Answers

Q7. Consider the following code segment.
What will be the output/error?

a) 10 20
b) 20 50
c) Compilation Error : 1value required as left operand of assignment
d) Compilation Error : private data members are inaccessible

Answer: c) Compilation Error : 1value required as left operand of assignment

These are Nptel Programming in Modern C++ Assignment 3 Answers

Q8. Consider the following code segment.
What will be the output/error?

a) 1st
b) 2nd
c) 1st 2nd
d) Compilation error: conversion from ‘int’ to ‘Test’ is ambiguous

Answer: d) Compilation error: conversion from ‘int’ to ‘Test’ is ambiguous

These are Nptel Programming in Modern C++ Assignment 3 Answers

Q9. Consider the following code segment.
Fill in the blank at LINE-1 such that the program will print 5

a) int
b) const int
c) mutable int
d) int mutable

These are Nptel Programming in Modern C++ Assignment 3 Answers

### Assignment Questions

Question 1

Consider the program below. Fill in the blanks at LINE-1, LINE-2, and LINE-3 with appropriate keywords such that the program must satisfy the given test cases.

Solution:

``````#include<iostream>
using namespace std;
class Employee{
const int id;
string name;
mutable  int salary; //LINE-1
public:
Employee(int a, string b, int c) : id(a), name(b), salary(c) {}
void updateSalary(int x) const { salary += x; } //LINE-2
void print() const{    //LINE-3``````

These are Nptel Programming in Modern C++ Assignment 3 Answers

Question 2

Consider the following program.
• Fill in the blank at LINE-1 with the appropriate initializer statement for the parameterized constructor,
• Fill in the blank at LINE-2 with the appropriate statement which deletes the dynamically allocated memory to data member arr
The program must satisfy the sample input and output.

Solution:

``````#include<iostream>
using namespace std;
class Array{
char *arr;
int size;
public:
Array(int n) : size(n), arr(new char[n]){} //LINE-1
~Array(){ delete [] arr; } //LINE-2``````

These are Nptel Programming in Modern C++ Assignment 3 Answers

Question 3

Consider the program below.
• Fill in the blank at LINE-1 to complete parameterized constructor
• Fill in the blank at LINE-2 to complete copy constructor
• Fill in the blank at LINE-3 to complete return statement
The area( ) evaluates the area of the given right-angled triangle.
The program must satisfy the given test cases.

Solution:

``````#include <iostream>
using namespace std;
class triangle {
const int *_base, *_height;
public:
triangle(int b, int h) : _base(new int(b)), _height(new int(h)) { } // Line-1
// LINE-1: Complete Constructor definition
~triangle() {
delete _base,_height; // Line-2
// LINE-2: Complete destructor to delete both data pointers
}
double area();
};
double triangle::area() {  // LINE-3: Complete function header
return 0.5 * *_base * *_height;
}``````

These are Nptel Programming in Modern C++ Assignment 3 Answers

These are Nptel Programming in Modern C++ Assignment 3 Answers