Sunday, October 24, 2021

CPP R20 SYLLABUS, MATERIAL , NOTES & LAB-PROGRAMS







Exercise -1(Classes Objects) 

Creating objects of DISTANCE class


Aim: Create a Distance class with, feet and inches as data members , member function to input distance , member function to output distance, member function to add two distance objects. To write a main function to create objects of DISTANCE class. Input two distances and output the sum

Program:

#include<iostream> 

using namespace std;

class DISTANCE

{

public:

int feet,inch,x,y,z; 

void input()

{

cout<<"enter feet and inches:"<<"\n"; 

cin>>feet>>inch;

}

void show()

{

cout<<"The distance is "; cout<<feet<<" feet "<<inch<<" inch\n";

}

// function object as argument

void sum(Distance x,Distance y)

{

feet=x.feet+y.feet;

inch=x.inch+y.inch; 

if(inch>=12)

{

feet=feet+1; 

inch=inch-12;

}

}

};

int main()

{

DISTANCE x,y,z;

x.input();

y.input();

z.sum(x,y);

z.show();

}


Input and Output:


enter feet and inches: 3 8

enter feet and inches: 4 9

The distance is 8 feet 5 inch

 

Use of Constructors and Destructors

Aim: To write a C++ Program to illustrate the use of Constructors and Destructors (use the above program.)


Program:


#include <iostream> 

using namespace std; 

class Distance

{

private:

int feet; 

int inches;

 public:

Distance() {} 

Distance(int f, int i)

{

feet = f; 

inches = i;

}

void get_distance()

{

cout<<"Distance is feet= "<<feet<<", inches= "<<inches<<endl;

}

void add(Distance &d1, Distance &d2)

{

feet = d1.feet + d2.feet;

inches = d1.inches + d2.inches; 

feet = feet + (inches / 12);

 inches = inches % 12;

}

~Distance()

{

cout<<"Distance object destroyed"<<endl;

}

};

int main()

{

int f1, in1, f2, in2; 

cout<<"Enter feet: "; 

cin>>f1;

cout<<"Enter inches: "; 

cin>>in1; 

cout<<"Enter feet: ";

 cin>>f2;

cout<<"Enter inches: ";

 cin>>in2;

Distance d1(f1, in1); 

Distance d2(f2, in2); 

Distance d3; 

d3.add(d1, d2); 

d3.get_distance(); 

return 0;

}

 

Input and Output:


Enter feet: 3

Enter inches: 8

Enter feet: 4

Enter inches: 9

Distance is feet= 8, inches= 5 Distance object destroyed Distance object destroyed Distance object destroyed

 

Function Overloading

Aim: To write a program for illustrating function overloading in adding the distance between objects (use the above problem)


Program:


#include <iostream> 

using namespace std; 

class Distance

{

private:

int feet; 

int inches; 

public:

void set_distance()

{

cout<<"Enter feet: "; 

cin>>feet; 

cout<<"Enter inches: "; 

cin>>inches;

}

void get_distance()

{

cout<<"Distance is feet= "<<feet<<", inches= "<<inches<<endl;

}

void add(Distance d1, Distance d2)

{

feet = d1.feet + d2.feet;

inches = d1.inches + d2.inches;

 feet = feet + (inches / 12); 

inches = inches % 12;

}

void add(Distance *d1, Distance *d2)

{

feet = d1->feet + d2->feet;

inches = d1->inches + d2->inches; feet = feet + (inches / 12);

inches = inches % 12;

}

};

int main()

{

Distance d1, d2, d3;

 d1.set_distance(); 

d2.set_distance(); 

d3.add(d1, d2); 

d3.get_distance();

 d3.add(&d1, &d2);

 d3.get_distance();

 return 0;

}

 

Input and Output:


Enter feet: 3

Enter inches: 4

Enter feet: 4

Enter inches: 9

Distance is feet= 8, inches= 1

Distance is feet= 8, inches= 1

 

Exercise -2(Access)

2. Implementing Access Specifiers public, private, protected

Aim: To write a program for illustrating Access Specifiers public, private, protected


Program:

#include <iostream> 

using namespace std; 

class A

{

protected: 

int x;

 public:

 A(int p)

{

x = p;

}

};

class B : public A

{

private:

int y;

 public:

B(int p, int q) : A(p)

{

y = q;

}

void show()

{

cout<<"x = "<<x<<endl; 

cout<<"y = "<<y<<endl;

}

};

int main()

{

B obj(10, 20);

//Since show is public in class B, it is accessible in main function 

obj.show(); //x is protected in A so it is accessible in B's show function

//y is not accessible in main as it is private to class B

//cout<<obj.y

return 0;

}


Output:


x = 10

y = 20

 

Implementing Friend Function

Aim: To write a program implementing Friend Function


Program:


#include <iostream> 

using namespace std;

 class A

{

private:

 int x; 

public:

A(int p)

{

x = p;

}

friend void display(A &); // friend stmt

};

void display(A &obj)

{

cout<<"x = "<<obj.x;

}

int main()

{

A obj(10); 

display(obj); 

return 0;

}


Output:


x = 10

 

Illustrating this pointer

Aim: To write a program to illustrate this pointer


Program:


#include <iostream>

 using namespace std;

class  A

{

private:

int x;

 int y;

 public:

A(int x, int y)

{

this->x = x;

 this->y = y;

}

void display()

{

cout<<"x = "<<x<<endl;

 cout<<"y = "<<y<<endl;

}

A& clone()

{

return *this;

}

};

int main()

{

A obj1(10, 20);

obj1.display();

A obj2 = obj1.clone(); 

obj2.display();

return 0;

}


Output:


x = 10

y = 20

x = 10

y = 20

 

Illustrating pointer to a class

Aim: To write a Program to illustrate pointer to a class


Program:


#include <iostream>

 using namespace std; 

class A

{

private:

int x; int y; public:

A(int x, int y)

{

this->x = x; this->y = y;

}

void display()

{

cout<<"x = "<<x<<endl; 

cout<<"y = "<<y<<endl;

}

};

int main()

{

A *ptr = new A(10, 30); //Here ptr is pointer to class A ptr->display();

return 0;

}



Output:


x = 10

y = 30

 

Exercise -3(Operator Overloading) Overloading Unary, and Binary Operators

Aim: To write a program to Overload Unary, and Binary Operators as Member Function, and Non Member Function


1. Unary operator as member function


Program:


#include <iostream> using namespace std; class Number

{

private:

int x; public:

Number(int p)

{

x = p;

}

void operator -()

{

x = -x;

}

void display()

{

cout<<"x = "<<x;

}

};

int main()

{

Number n(10);

-n; n.display(); return 0;

}



Output


x = -10

 

2. Binary operator as non member function


Program:


#include <iostream> using namespace std; class Complex

{

private:

float real; float imag; public: Complex(){}

Complex(float r, float i)

{

real = r; imag = i;

}

void display()

{

cout<<real<<"+i"<<imag;

}

friend Complex operator +(Complex &, Complex &);

};

Complex operator +(Complex &c1, Complex &c2)

{

Complex temp;

temp.real = c1.real + c2.real; temp.imag = c1.imag + c2.imag; return temp;

}

int main()

{

Complex c1(3, 4);

Complex c2(4, 6); Complex c3 = c1+c2; c3.display();

return 0;

}



Output


7+i10

 

Overloading assignment = Operator

Aim: To write a c ++ program to implement the overloading assignment = operator


Program:


#include <iostream> using namespace std; class Number

{

private:

int x; public:

Number(int p)

{

x = p;

}

Number operator =(Number &n)

{

return Number(n.x);

}

void display()

{

cout<<"x = "<<x;

}

};

int main()

{

Number n1(10); Number n2 = n1; n2.display(); return 0;

}



Output


x = 10

 

Exercise -4 (Inheritance) Overloading Unary, and Binary Operators

Aim: To write C++ Programs and incorporating various forms of Inheritance

i) Single Inheritance

ii) Hierarchical Inheritance

iii) Multiple Inheritances

iv) Multi-level inheritance

v) Hybrid inheritance i) Single Inheritance Program:

#include<iostream> using namespace std; class A

{

protected:

char name[10]; int age;

};

class B:public A

{

public: float h; int w;

void get_data()

{

cout<<"Enter name and age:\n"; cin>>name>>age;

cout<<"\n Enter weight and height:\n"; cin>>w>>h;

}

void show()

{

cout<<"Name: "<<name<<endl; 

cout<<"Age: "<<age<<endl; 

cout<<"Weight: "<<w<<endl; 

cout<<"Height: "<<h<<endl;

}

};

int main()

{

B C;

C.get_data();

C.show();

}

Output:

Enter name and age: Radhika 52

Enter weight and height:

72 5.5

 

Name: Radhika Age: 52

Weight: 72

Height: 5.5


ii) Hierarchical Inheritance


Program:


#include<iostream> 

using namespace std;

 class A

{

protected:

char name[20];

 int age;

};

class B:public A

{

public:

float h; int w;

void get_data1()

{

cout<<"Enter name:"; 

cin>>name;

cout<<"Enter weight and height:";

 cin>>w>>h;

}

void show()

{

cout<<"This is class B and it is inherited from Class A\n"; 

cout<<"Name: "<<name<<endl;

cout<<"Weight: "<<w<<endl;

 cout<<"Height: "<<h<<endl;

}

};

class C:public A

{

public:

char gender; 

void get_data2()

{

cout<<"Enter age:"; cin>>age; cout<<"Enter gender:"; cin>>gender;

}

void show()

{

cout<<"This is class C and it is inherited from class A\n"; cout<<"Age: "<<age<<endl;

 

cout<<"Gender: "<<gender<<endl;

}

};

int main()

{

B ob; 

C ob1;

ob.get_data1(); ob1.get_data2(); ob.show();

ob1.show();

}

Output:

Enter name: Ramu

Enter weight and height: 63 5.8

Enter age: 26

 Enter gender: M

This is class B and it is inherited form class A 

Name: Ramu

Weight: 63

Height: 5.8

This is class C and it is inherited form class A Age: 26

Gender: M

iii) Multiple Inheritance

Program:

#include<iostream>

 using namespace std; 

class A

{

 };

class B

{

};

 

protected:

char name[20]; int age;




protected: int w; float h;

 

class C:public A, B

{

public: char g;

void get_data()

{

cout<<"Enter name and age:\n"; cin>>name>>age;

cout<<"Enter weight and height:\n"; cin>>w>>h;

cout<<"Enter gender: ";

 

cin>>g;

}

void show()

{

cout<<"\nName: "<<name<<endl<<"Age: "<<age<<endl; cout<<"Weight: "<<w<<endl<<"Height: "<<h<<endl; cout<<"Gender: "<<g<<endl;

}

};

int main()

{

C ob; ob.get_data(); ob.show();

}


Output:

Enter name and age: Mukesh 31

Enter weight and height: 64 5.9

Enter gender: M Name: Mukesh Age: 31

Weight: 64

Height: 5.9 Gender: M

iv) Multi-level Inheritance Program:

#include<iostream> using namespace std; class A

{

protected:

char name[20]; int age;

};

class B:public A

{

protected: int w; float h;

};

class C:public B

{

public: char g;


void get_data()

{

cout<<"Enter name and age:\n";

 

cin>>name>>age;

cout<<"Enter weight and height:\n"; cin>>w>>h;

cout<<"Enter gender:"; cin>>g;

}

void show()

{

cout<<"\nName: "<<name<<endl<<"Age: "<<age<<endl; cout<<"Weight: "<<w<<endl<<"Height: "<<h<<endl; cout<<"Gender: "<<g<<endl;

}

};

int main()

{

C ob; ob.get_data(); ob.show();

}

Output:

Enter name and age: Madhu 35

Enter weight and height: 58 5.6

Enter gender: F Name: Madhu Age: 35

Weight: 58

Height: 5.6 Gender: F

v) Hybrid Inheritance Program:

#include<iostream> using namespace std; class A //Base class

{

public: int l;

void len()

{

cout<<"Length: ";

cin>>l; //Length is enter by user

}

};

class B :public A //Inherits property of class A

{

public:

int b,c;

void l_into_b()

{

len();

 





};

class C

{

 }


public:

 int h;

 cout<<"Breadth: ";

cin>>b; //Breadth is enter by user

c=b*l; //c stores value of length * Breadth i.e. (l*b).

 void height()

{

cout<<"Height: ";

cin>>h; //Height is enter by user

}

};

class D:public B, public C //Hybrid Inheritance Level

{

public:

int res;

void volume()

{

l_into_b();

 height(); 

res=h*c;

cout<<"Volume is (l*b*h): "<<res<<endl;

}

void area()

{

l_into_b();

cout<<"Area is (l*b): "<<c<<endl;

}

};

int main()

{

D d1;

cout<<"Enter dimensions of object to get Area:\n"; 

d1.area();

cout<<"Enter values of object to get Volume:\n"; 

d1.volume();

return 0;

}

Output:

Enter dimensions of object to get Area: Length: 63

Breadth: 23

Area is (l * b): 1449

Enter dimensions of object to get Volume: Length: 12

Breadth: 27

Height: 14

Volume is (l * b * h): 4536

 

Order of execution of constructors and destructors in inheritance

Aim: To write C++ program to illustrate the order of execution of constructors and destructors in inheritance


Program:


#include<iostream> using namespace std; class parent//parent class

{

public: parent()//constructor

{

cout<<"Parent class Constructor\n";

}

~parent()//destructor

{

cout<<"Parent class Destructor\n";

}

};

class child : public parent//child class

{

public:

child() //constructor

{

cout<<"Child class Constructor\n";

}

~ child() //destructor

{

cout<<"Child class Destructor\n";

}

};

int main()

{


child c; //automatically executes both child and parent class //constructors and destructors because of inheritance

return 0;

}


Output:


Parent class Constructor Child class Constructor Child class Destructor Parent class Destructor

 

Exercise -5(Templates, Exception Handling)

a) Illustrating template class

Aim: To write a C++ Program to illustrate template class


Program:


#include <iostream> 

using namespace std;

 template<class T> class Swapper

{

private:

T x;

T y; public:

Swapper(T x, T y)

{

this->x = x; this->y = y;

}

void swap()

{

T temp = x; x = y;

y = temp;

}

void display()

{

cout<<"After swap x = "<<x<<", y = "<<y<<endl;

}

};

int main()

{

Swapper<int> s1(2, 4);

 s1.swap();

s1.display(); 

Swapper<double> s2(4.2, 6.9);

 s2.swap();

s2.display();

 return 0;

}



Output:


After swap x = 4, y = 2 After swap x = 6.9, y = 4.2

 

b) Member Function Templates

Aim: To write a Program to illustrate member function templates


Program:


#include <iostream>

 using namespace std;

// template function 

template <class T> T Large(T n1, T n2)

{

return (n1 > n2) ? n1 : n2;

}

int main()

{

int i1, i2; 

float f1, f2; 

char c1, c2;

cout << "Enter two integers:\n"; 

cin >> i1 >> i2;

cout << Large(i1, i2) <<" is larger." << endl;


cout << "\nEnter two floating-point numbers:\n"; 

cin >> f1 >> f2;

cout << Large(f1, f2) <<" is larger." << endl;


cout << "\nEnter two characters:\n"; 

cin >> c1 >> c2;

cout << Large(c1, c2) << " has larger ASCII value.";


return 0;

}


Output:


Enter two integers: 5

10

10 is larger.


Enter two floating-point numbers: 12.4

10.2

12.4 is larger.


Enter two characters: z

Z

z has larger ASCII value

 

c) Exception Handling Divide by Zero

Aim: To write a Program for Exception Handling Divide by zero


Program:


#include <iostream> 

using namespace std; 

int main()

{

int a, b;

cout<<"Enter two integer values: ";

 cin>>a>>b;

try

{

if(b == 0)

{

}

else

{

}

}

throw b;

cout<<(a/b);

catch(int)

{

cout<<"Second value cannot be zero";

}

return 0;

}

Input and Output:

Enter two integer values: 4 0 

Second value cannot be zero


d) Rethrow an Exception

Aim: To write a Program to rethrow an Exception


Program:


#include <iostream> 

using namespace std; 

int main()

{

 try

{

 int a, b;

cout<<"Enter two integer values: "; cin>>a>>b;

try

{

 if(b == 0)

{

 }

else

{

}

}

 throw b;

cout<<(a/b);

catch(...)

{

throw; //rethrowing the exception

}

}

catch(int)

{

cout<<"Second value cannot be zero";

}

return 0;

}



Input and Output:


Enter two integer values: 10 0 Second value cannot be zero



6.

a) Write a C++ program illustrating user defined string processing functions using pointers.

(string length, string copy ,string concatenation )

Program:

#include <iostream>

using namespace std;

class Strings

{

    public:

        int strlen(char st[100])

        {

            int L;

            for(L=0;st[L]!=0;L++);

            return L;

        }

        void  strcpy(char *s1,const char*s2)

        {

            cout<<"before copy s1="<<s1<<endl;

            int L;

            for(L=0;s2[L]!=0;L++)

            s1[L]=s2[L];

            s1[L]=0;

            cout<<"After copy s1="<<s1<<endl;

        }

        char* strcat(char*s1,char*s2)

        {

            int L,i;

            for(L=0;s1[L]!=0;L++);

            //copying s2 to s1

            for(i=0,L--;s2[i]!=0;i++)

            s1[L++]=s2[i];

            //init null

            s1[L]=0;

            return s1;

        

        }

      

};


int main()

{

    char s1[]="Ongole";

    char s2[]=" Town";

    

    Strings st;

    cout<<st.strlen(s1)<<endl;

    cout<<st.strcat(s1,s2)<<endl;

    st.strcpy(s1,s2);

    return 0;

}


Output :

6
Ongol Town
before copy s1=Ongol Town
before copy s1= Town

b)Write a c++ program illustrating Virtual classes & Virtual functions.

Program on Virtual function :

#include <iostream>    

{    

 public:    

 virtual void display()    

 {    

  cout << "Base class is invoked"<<endl;    

 }    

};    

class B:public A    

{    

 public:    

 void display()    

 {    

  cout << "Derived Class is invoked"<<endl;    

 }    

};    

int main()    

{    

 A* a;    //pointer of base class    

 B b;     //object of derived class    

 a = &b;    

 a->display();   //Late Binding occurs    

}    

Output:

Derived Class is invokedD invoked  

-----------------------------

Program on Virtual class

#include <iostream>  

using namespace std;  

class Base  

{  

    public:  

    virtual void show() = 0;  

};  

class Derived : public Base  

{  

    public:  

    void show()  

    {  

        std::cout << "Derived class is derived from the base class." << std::endl;  

    }  

};  

int main()  

{  

    Base *bptr;  

    //Base b;  

    Derived d;  

    bptr = &d;  

    bptr->show();  

    return 0;  

}  

Output:

Derived class is derived from the base class.


c) Implementation of Bubble Sort

Aim: To write a C program that implement Bubble sort, to sort a given list of integers in ascending order

Program:

# include<stdio.h> 

void main()

{

int n,temp,i,j,a[20];

cout<<"Enter total numbers of elements:\n"; 

cin>>n;

cout<<"Enter elements:\n"; 

for(i=0;i<n;i++) 

cin>>a[i]; 

for(i=0;i<n;i++)

{

for(j=0;j<n-1;j++)

{

if(a[j]>a[j+1])

{

temp=a[j]; 

a[j]=a[j+1]; 

a[j+1]=temp;

}

}

}

cout<<"After sorting elements are:\n"; 

for(i=0;i<n;i++)

cout< <a[i]); 

return 0;

}

Output:

Enter total numbers of elements: 10

Enter elements:

6 4 3 8 9 0 1 5 2 7

After sorting elements are: 

0 1 2 3 4 5 6 7 8 9


 


 


No comments:

Post a Comment