NPTEL Programming In Modern C++ Week4 Programming Assignment 2024

NPTEL-Programming-In-Modern-C-Week4-Programming-Assignment-2024

There has been a continual debate on which programming language/s to learn, to use. As the latest TIOBE Programming Community Index for August 2021 indicates – C (13%), Python (12%), C++ (7%), Java (10%), and C#(5%) together control nearly half the programming activities worldwide. Further, C Programming Language Family (C, C++, C#, Objective C etc.) dominate more than 25% of activities. Hence, learning C++ is important as one learns about the entire family, about Object-Oriented Programming and gets a solid foundation to also migrate to Java and Python as needed. C++ is the mother of most general purpose of languages. It is multi-paradigm encompassing procedural, object-oriented, generic, and even functional programming. C++ has primarily been the systems language till C++03 which punches efficiency of the code with the efficacy of OOP. Then, why should I learn it if my primary focus is on applications? This is where the recent updates of C++, namely, C++11 and several later offer excellent depths and flexibility for C++ that no language can match. These extensions attempt to alleviate some of the long-standing shortcomings for C++ including porous resource management, error-prone pointer handling, expression semantics, and better readability. The present course builds up on the knowledge of C programming and basic data structure (array, list, stack, queue etc.) to create a strong familiarity with C++98 / C++03. Besides the constructs, syntax and semantics of C++ (over C), we also focus on various idioms of C++ and attempt to go to depth with every C++ feature justifying and illustrating them with several examples and assignment problems. On the way, we illustrate various OOP concepts. The course also covers important advances in C++11 and later released features..

Programming In Modern C++ Week4 Programming Assignment 2024

INTENDED AUDIENCE :  Any interested audience
PREREQUISITES :  10th standard/high school
INDUSTRY SUPPORT :  Programming in C++ is so fundamental that all companies dealing with systems as well as application development (including web, IoT, embedded systems) have a need for the same. These include – Microsoft, Samsung, Xerox, Yahoo, Oracle, Google, IBM, TCS, Infosys, Amazon, Flipkart, etc. This course would help industry developers to be up-to-date with the advances in C++ so that they can remain at the state-of-the-art.

Course Layout

Week 1: Programming in C++ is Fun.
Week 2: C++ as Better C.
Week 3: OOP in C++.
Week 4: OOP in C++.
Week 5: Inheritance.
Week 6: Polymorphism.
Week 7: Type Casting.
Week 8: Exceptions and Templates.
Week 9: Streams and STL.
Week 10: Modern C++.
Week 11: Lambda and Concurrency.
Week 12: Move, Rvalue and STL Containers

Programming In Modern C++ 2024

Programming Assignment Q1 :

Consider the program below.
• Fill in the blank at LINE-1 with appropriate keyword,
• Fill in the blank at LINE-2 with appropriate return type of the function,
• Fill in the blank at LINE-3 with the appropriate initialization statement of the static variable obj.
The program must satisfy the given test cases.

				
					#include<iostream>
using namespace std;
class myClass{
    char c;
    static myClass *obj;                   //LINE-1
    myClass(char x) : c(x) { }
    public:
        static myClass* create(char x){    //LINE-2
            if(!obj)
                obj = new myClass(x);
            return obj;
        }
        void show();
};
myClass* myClass::obj = nullptr;               //LINE-3

void myClass::show(){
    cout << c;
}
int main(){
    int x, y;
    myClass *s1, *s2;
    cin >> x >> y;
    s1 = myClass::create(x);
    s2 = myClass::create(y);
    s1->show();
    s2->show();
    return 0;
}
				
			

Programming In Modern C++ 2024

Programming Assignment Q2 :

Consider the following program.
• Fill in the blank at LINE-1 with the appropriate statement such that the global function can access private class members,
• Fill in the blank at LINE-2 with the appropriate statement such that the global function can access private class members
The program must satisfy the sample input and output.

				
					#include<iostream>
using namespace std;
class A{
int x;
    public:
        A(int _x) : x(_x){ cout << "Class A: "; }
        friend void print(int a, int b); //LINE-1
};
class B{
    int x;
    public:
        B(int _x) : x(_x){ cout << "Class B: "; }
        friend void print(int a, int b); //LINE-2
};

void print(int a, int b){
    if(a == 1)
        cout << A(b).x;
    else
        cout << B(b).x;
}
int main(){
    int a, b;
    cin >> a >> b;
    print(a,b);
    return 0;
}
				
			

Programming In Modern C++ 2024

Programming Assignment Q3 :

Consider the following program.
• Fill in the blanks at LINE-1, LINE-2, LINE-3 and LINE-4 with appropriate keywords
The program must satisfy the sample input and output.

				
					#include<iostream>
using namespace std;
class Emp{
    int id;
    mutable  double basic;                    //LINE-1
    mutable  double salary;                   //LINE-2
    public:
        Emp(int i, double b, double s=0) : id(i), basic(b), salary(s){ }
        void setBasic(double b) const{        //LINE-3
            basic = b;
        }
        friend double calculate(const Emp&); //LINE-4
};

double calculate(const Emp &e){
    e.salary = e.basic + e.basic * 0.5;
    return e.salary;
}
int main(){
    int a;
    double b,c;
    cin >> a >> b >> c;
    const Emp e(a,b);
    cout << calculate(e) << " ";
    e.setBasic(c);
    cout << calculate(e);
    return 0;
}