SlideShare a Scribd company logo
Manual for C++ Programming Page 1 of 89
PRACTICAL MANUAL
ON C ++
Mr. Naveen Choudhary Dr. Dharm Singh
DEPARTMENT OF COMPUTER SCIENCE &
ENGINEERING
COLLEGE OF TECHNOLOGY & ENGINEERING
(Maharana Pratap University of Agriculture. and Technology, Udaipur)
Manual for C++ Programming Page 2 of 89
PRACTICAL MANUAL
ON C ++
Mr. Naveen Choudhary
Associate Professor & Head
Dr. Dharm Singh
Assistant Professor
2008
DEPARTMENT OF COMPUTER SCIENCE &
ENGINEERING
COLLEGE OF TECHNOLOGY & ENGINEERING
(Maharana Pratap University of Agriculture. and Technology, Udaipur)
Manual for C++ Programming Page 3 of 89
PREFACE
The practical manual on “C ++” has been prepared for B.E. Computer
Science & Engineering Students. The “C ++” is increasingly becoming the
default choice of the IT industry especially industries involved in software
development at system level.
Therefore, for proper development of “C ++” skills among the students this
practical manual has been prepared. The manual contains the exercise
programs and their solution for easy & quick understanding of the students.
The author has gathered material from Books, Journals and Web resources.
We hope that this practical manual will be helpful for students of Computer
Science & Engineering for understanding the subject from the point of view
of applied aspects
There is always scope for improvement in the manual. We would appreciate
to receive valuable suggestions from readers and users for future use.
Udaipur Mr. Naveen Choudhary
Dr. Dharm Singh
Manual for C++ Programming Page 4 of 89
TABLE OF CONTENTS
S.
No.
Laboratory Exercises
PAGE NO.
1. Write a Program to design a class having static member
function named showcount() which has the property of
displaying the number of objects created of the class.
8
2. Write a Program using class to process Shopping List for a
Departmental Store. The list include details such as the Code
No and Price of each item and perform the operations like
Adding, Deleting Items to the list and Printing the Total value
of a Order.
9
3. Write a Program which creates & uses array of object of a
class.( for eg. implementing the list of Managers of a
Company having details such as Name, Age, etc..).
11
4. Write a Program to find Maximum out of Two Numbers using
friend function.
Note: Here one number is a member of one class and the
other number is member of some other class.
12
5. Write a Program to swap private data members of classes
named as class_1, class_2 using friend function. 13
6. Write a Program to design a class complex to represent
complex numbers. The complex class should use an
external function (use it as a friend function) to add two
complex numbers. The function should return an object of
type complex representing the sum of two complex numbers.
14
7. Write a Program using copy constructor to copy data of an
object to another object. 15
8. Write a Program to allocate memory dynamically for an
object of a given class using class’s constructor. 16
9. Write a Program to design a class to represent a matrix. The
class should have the functionality to insert and retrieve the
elements of the matrix.
17
10. Write a program to design a class representing complex
numbers and having the functionality of performing addition &
multiplication of two complex numbers using operator
overloading.
18
11. Write a Program to overload operators like *, <<, >> using
friend function. The following overloaded operators should
work for a class vector.
21
12. Write a program for developing a matrix class which can
handle integer matrices of different dimensions. Also
overload the operator for addition, multiplication &
comparison of matrices.
22
Manual for C++ Programming Page 5 of 89
13. Write a program to overload new/delete operators in a class.
25
14. Write a program in C++ to highlight the difference between
overloaded assignment operator and copy constructor. 28
15. Write a Program illustrating how the constructors are
implemented and the order in which they are called when the
classes are inherited. Use three classes named alpha, beta,
gamma such that alpha, beta are base class and gamma is
derived class inheriting alpha & beta.
29
16. Write a Program to design a student class representing
student roll no. and a test class (derived class of student)
representing the scores of the student in various subjects
and sports class representing the score in sports. The sports
and test class should be inherited by a result class having the
functionality to add the scores and display the final result for
a student.
30
17. Write a program to maintain the records of person with
details (Name and Age) and find the eldest among them. The
program must use this pointer to return the result.
32
18. Write a Program to illustrate the use of pointers to objects
which are related by inheritance. 33
19. Write a program illustrating the use of virtual functions in
class. 34
20. Write a program to design a class representing the
information regarding digital library (books, tape: book & tape
should be separate classes having the base class as media).
The class should have the functionality for adding new item,
issuing, deposit etc. the program should use the runtime
polymorphism.
35
21. Write a program to show conversion from string to int and
vice-versa. 37
22. Write a program showing data conversion between objects of
different classes. 38
23. Write a program showing data conversion between objects of
different classes and conversion routine should reside in
destination class.
40
24. Write a program implementing basic operation of class ios
i.e. setf, unsetf, precision etc. 42
25. Write a program to implement I/O operations on characters.
I/O operations includes inputting a string, Calculating length
of the string, Storing the string in a file, fetching the stored
characters from it, etc.
44
Manual for C++ Programming Page 6 of 89
26. Write a program to copy the contents of one file to another.
45
27. Write a program to perform read/write binary I/O operation on
a file (i.e. write the object of a structure/class to file). 46
28. Write a program to maintain a elementary database of
employees using files. 47
29. Write a program for reading and writing data to and from the
file using command line arguments. 51
30. Write a program showing implementation of stack class
having the functionality of push, pop operations. 53
31. Write program to implement a queue class with required
operations/ functions. 54
32. Write a program to implement circular queue class with
required operations/ functions. 56
33. Write a program implementing linked list as a class. Also
Perform some required operations like inserting, deleting
nodes & display the contents of entire linked list.
58
34. Write a program implementing stack & its operations using
dynamic memory allocation. 61
35. Write a program implementing Queue stack & its operations
using dynamic memory allocation.
63
36. Write a program to implement Binary search tree using class
and traverse the tree using any traversal scheme. In addition
to it the class must have capability to copy the contents from
one tree to another and compare the contents of two binary
trees.
65
37. Write a program to implement the exception handling with
multiple catch statements.
69
38. Write a program to implement the exception handling with re
throwing in exception.
70
Manual for C++ Programming Page 7 of 89
39. Write a program to implement the exception handling with the
functionality of testing the throw restrictions.
71
40. Write a function template that will sort an array of implicit
types like int, float, char etc. it can also sort user-defined
objects like strings & date. The necessary classes contains
overloading of operators.
72
41. Write a program implementing stack and it’s operations using
template class.
76
42. Write a program implementing linked list & some required
operations on it using class template 78
43. Write a program using mouse service routine (0x33
interrupt). The program should track all mouse activities. 82
Manual for C++ Programming Page 8 of 89
1. Write a Program to design a class having static member function named
showcount() which has the property of displaying the number of objects
created of the class.
#include<iostream.h>
#include<conio.h>
class test
{
int code;
static int count;
public:
void setcode(void)
{
code = ++count;
}
void showcode(void)
{
cout<<"object number:"<<code<<"n";
}
static void showcount(void)
{
cout<<"count:"<<count<<"n";
}
};
int test :: count;
int main()
{
test t1,t2;
t1.setcode();
t2.setcode();
test :: showcount();
test t3;
t3.setcode();
test :: showcount();
t1.showcode();
t2.showcode();
t3.showcode();
return 0;
}
Manual for C++ Programming Page 9 of 89
2. Write a Program using class to process Shopping List for a Departmental
Store. The list include details such as the Code No and Price of each item
and perform the operations like Adding, Deleting Items to the list and
Printing the Total value of a Order.
#include<iostream.h>
const m=50;
class ITEMS
{
int itemCode[m];
float itemPrice[m];
int count;
public:
void CNT(void){count=0;}
void getitem(void);
void displaySum(void);
void remove(void);
void displayItems(void);
};
void ITEMS :: getitem(void)
{
cout<<"Enter item code";
cin>>itemCode[count];
cout<<"Enter Item cost";
cin>>itemPrice[count];
count++;
}
void ITEMS :: displaySum(void)
{
float sum=0;
for(int i=0;i<count;i++)
sum=sum+itemPrice[i];
cout<<"n Total Value:"<<sum<<"n";
}
void ITEMS :: remove(void)
{
int a;
cout<<"Enter Item Code";
cin>>a;
for(int i=0;i<count;i++)
if(itemCode[i] == a)
itemPrice[i]=0;
}
void ITEMS :: displayItems(void)
{
cout<<"n Code Pricen";
for(int i=0;i<count;i++)
{
cout<<"n"<<itemCode[i];
cout<<" "<<itemPrice[i];
}
cout<<"n";
}
int main()
Manual for C++ Programming Page 10 of
89
{
ITEMS order;
order.CNT();
int x;
do
{
cout<<"n You can do the following;"
<<"Enter appropriate numbern";
cout<<"n1 : Add an Item";
cout<<"n2 : Display Total Value";
cout<<"n3 : Delete an Item";
cout<<"n4 : Display all items";
cout<<"n5 : Quit";
cout<<"nn What is your option?";
cin>>x;
switch(x)
{
case 1 : order.getitem();
break;
case 2 : order.displaySum();
break;
case 3 : order.remove();
break;
case 4 : order.displayItems();
break;
default : cout<<"Error in input";
}
}while(x!=5);
return 0;
}
Manual for C++ Programming Page 11 of
89
3. Write a Program which creates & uses array of object of a class.( for eg.
implementing the list of Managers of a Company having details such as Name,
Age, etc..).
#include<iostream.h>
#include<conio.h>
class employee
{
char name [30];
float age;
public:
void getdata(void);
void putdata(void);
};
void employee :: getdata(void)
{
cout<<"Enter Name";
cin>>name;
cout<<"Enter Age";
cin>>age;
}
void employee :: putdata(void)
{
cout<<"Name:"<<name<<"n";
cout<<"Age: "<<age<<"n";
}
const int size=3;
int main()
{
employee manager[size];
for(int i=0; i<size; i++)
{
cout<<"n Details of manager"<<i+1<<"n";
manager[i].getdata();
}
cout<<"n";
for(i=0; i<size; i++)
{
cout<<"n Manager"<<i+1<<"n";
manager[i].putdata();
}
return 0;
}
Manual for C++ Programming Page 12 of
89
4. Write a Program to find Maximum out of Two Numbers using friend function.
Note: Here one number is a member of one class and the other number is member
of some other class.
#include<iostream.h>
#include<conio.h>
class ABC;
class XYZ
{
int x;
public:
void setvalue(int i)
{
x=i;
}
friend void max(XYZ, ABC);
};
class ABC
{
int a;
public:
void setvalue(int i)
{
a=i;
}
friend void max(XYZ, ABC);
};
void max (XYZ m, ABC n)
{
if(m.x>=n.a)
cout<<m.x;
else
cout<<n.a;
}
int main()
{
ABC abc;
abc.setvalue(10);
XYZ xyz;
xyz.setvalue(20);
max(xyz,abc);
return 0;
}
Manual for C++ Programming Page 13 of
89
5. Write a Program to swap private data members of classes named as class_1,
class_2 using friend function.
#include<iostream.h>
#include<conio.h>
class class_2;
class class_1
{
int value1;
public:
void indata(int a)
{
value1=a;
}
void display(void)
{
cout<<value1<<"n";
}
friend void exchange(class_1 &, class_2 &);
};
class class_2
{
int value2;
public:
void indata(int a)
{
value2=a;
}
void display(void)
{
cout<<value2<<"n";
}
friend void exchange(class_1 &, class_2 &);
};
void exchange(class_1 &x, class_2 &y)
{
int temp = x.value1;
x.value1 = y.value2;
y.value2 = temp;
}
int main()
{
class_1 C1;
class_2 C2;
C1.indata(100);
C2.indata(200);
cout<<"Values before exchange"<<"n";
C1.display();
C2.display();
exchange(C1, C2);
cout<<"Values after exchange"<<"n";
C1.display();
C2.display();
return 0;
}
Manual for C++ Programming Page 14 of
89
6. Write a Program to design a class complex to represent complex numbers.
The complex class shuold use an external function (use it as a friend
function) to add two complex numbers.The function should return an object of
type complex representing the sum of two complex numbers.
#include<iostream.h>
#include<conio.h>
class complex
{
float x;
float y;
public:
void input(float real, float img)
{
x=real;
y=img;
}
friend complex sum(complex, complex);
void show(complex);
};
complex sum(complex c1, complex c2)
{
complex c3;
c3.x = c1.x + c2.x;
c3.y = c1.y + c2.y;
return (c3);
}
void complex :: show(complex c)
{
cout<<c.x<<"+j"<<c.y<<"n";
}
int main()
{
complex A,B,C;
A.input(3.1, 5.65);
B.input(2.75, 1.2);
C=sum(A,B);
cout<<"A=";
A.show(A);
cout<<"B=";
B.show(B);
cout<<"C=";
C.show(C);
return 0;
}
Manual for C++ Programming Page 15 of
89
7. Write a Program using copy constructor to copy data of an object to
another object.
#include<iostream.h>
#include<conio.h>
class code
{
int id;
public:
code(){}
code(int a)
{
id = a;
}
code(code & x)
{
id = x.id;
}
void display(void)
{
cout<<id;
}
};
int main()
{
code A(100);
code B(A);
code C = A;
code D;
D = A;
cout<<"n id of A:";
A.display();
cout<<"n id of B:";
B.display();
cout<<"n id of C:";
C.display();
cout<<"n id of D:";
D.display();
return 0;
}
Manual for C++ Programming Page 16 of
89
8. Write a Program to allocate memory dynamically for an objects of a given
class using class’s constructor.
#include<iostream.h>
#include<string.h>
#include<conio.h>
class String
{
char *name;
int length;
public:
String()
{
length = 0;
name = new char[length +1];
}
String (char *s)
{
length = strlen(s);
name= new char[length + 1];
strcpy(name, s);
}
void display(void)
{
cout<<name<<"n";
}
void join(String &a, String &b);
};
void String :: join (String &a, String &b)
{
length = a.length + b.length;
delete name;
name = new char [length + 1];
strcpy(name,a.name);
strcat(name, b.name);
};
int main()
{
char *first = "Joseph";
String name1(first), name2("Louis "), name3("Lagrange"),s1,s2;
s1.join(name1, name2);
s2.join(s1, name3);
name1.display();
name2.display();
name3.display();
s1.display();
s2.display();
return 0;
}
Manual for C++ Programming Page 17 of
89
9. Write a Program to design a class to represent a matrix. The class should
have the functionality to insert and retrieve the elements of the matrix.
#include<iostream.h>
class matrix
{
int **p;
int d1,d2;
public:
matrix(int x, int y);
void get_element(int i, int j, int value)
{
p[i][j]=value;
}
int & put_element(int i, int j)
{
return p[i][j];
}
};
matrix ::matrix(int x, int y)
{
d1 = x;
d2 = y;
p = new int *[d1];
for(int i = 0; i < d1; i++)
p[i] = new int[d2];
}
int main()
{
int m, n;
cout<<"Enter size of matrix";
cin>>m>>n;
matrix A(m,n);
cout<<"Enter Matrix Element row by row:";
int i,j,value;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
cin>>value;
A.get_element(i,j,value);
}
cout<<"n";
cout<<A.put_element(1,2);
return 0;
}
Manual for C++ Programming Page 18 of
89
10. Write a program to design a class representing complex numbers and having
the functionality of performing addition & multiplication of two complex
numbers using operator overloading.
#include <iostream.h>
class complex
{
private:
float real,
imag;
public:
complex( )
{
}
complex( float r, float i )
{
real = r;
imag = i;
}
void getdata( )
{
float r,
i;
cout << endl << "Enter real and imaginary part ";
cin >> r >> i;
real = r;
imag = i;
}
void setdata( )
{
real = r;
imag = i;
}
void displaydata( )
{
cout << endl << "real = " << real;
cout<<endl<<Imaginary = "<<imag;
}
complex operator +( complex c )
{
complex t;
t.real = real + c.real;
t.imag = imag + c.imag;
}
complex operator *( complex c )
{
complex t;
t.real = real * c.real - imag * c.imag;
t.imag = real * c.imag + c.real * imag;
return t;
}
} ;
void main( )
{
Manual for C++ Programming Page 19 of
89
complex c1,
c2 ( 1.2, -2.5 ),
c3,
c4;
c1.setdata( 2.0, 2.0 );
c3 = c1 + c2;
c3.displaydata( );
c4.getdata( );
complex c5 ( 2.5, 3.0 ),
c6;
c6 = c4 * c5;
c6.displaydata( );
complex c7;
c7 = c1 + c2 * c3;
c7.displaydata( );
}
Manual for C++ Programming Page 20 of
89
11. Write a Program to overload operators like *, <<, >> using friend
function. The following overloaded operators should work for a class vector.
#include<iostream.h>
#include<conio.h>
const size = 3;
class vector
{
int v[size];
public:
vector();
vector(int *x);
friend vector operator *(int a, vector b);
friend vector operator *(vector b, int a);
friend istream & operator >>(istream &, vector &);
friend ostream & operator <<(ostream &, vector &);
};
vector ::vector()
{
for(int i=0;i<size;i++)
v[i]=0;
}
vector :: vector(int *x)
{
for(int i=0; i<size; i++)
v[i] = x[i];
}
vector operator *(int a, vector b)
{
vector c;
for(int i=0; i<size; i++)
c.v[i] = a * b.v[i];
return c;
}
vector operator *(vector b, int a)
{
vector c;
for(int i=0; i<size; i++)
c.v[i] = b.v[i] * a;
return c;
}
istream & operator >> (istream &din, vector &b)
{
for(int i=0; i<size; i++)
din>>b.v[i];
return(din);
}
ostream & operator << (ostream &dout, vector &b)
{
Manual for C++ Programming Page 21 of
89
dout<<"("<<b.v [0];
for(int i=1; i<size; i++)
dout<<","<<b.v[i];
dout<<")";
return(dout);
}
int x[size] = {2,4,6};
int main()
{
vector m;
vector n = x;
cout<<"Enter Elements of vector m"<<"n";
cin>>m;
cout<<"n";
cout<<"m="<<m<<"n";
vector p,q;
p = 2 * m;
q = n * 2;
cout<<"n";
cout<<"p="<<p<<"n";
cout<<"q="<<q<<"n";
return 0;
}
Manual for C++ Programming Page 22 of
89
12. Write a program for developing a matrix class which can handle integer
matrices of different dimensions. Also overload the operator for addition,
multiplication & comparison of matrices.
#include <iostream.h>
#include <iomanip.h>
class matrix
{
int maxrow, maxcol;
int * ptr;
public:
matrix( int r, int c )
{
maxrow = r;
maxcol = c;
ptr = new int [r * c];
}
void getmat( )
{
int i,j, mat_off,temp;
cout << endl << "enter elements matrix:" << endl;
for( i = 0; i < maxrow; i++ )
{
for( j = 0; j < maxcol; j++ )
{
mat_off = i * maxcol + j;
cin >> ptr[ mat_off ];
}
}
}
void printmat( )
{
int i, j, mat_off;
for( i = 0; i < maxrow; i++ )
{
cout << endl;
for( j = 0; j < maxcol; j++ )
{
mat_off = i * maxcol + j;
cout << setw( 3 ) << ptr[ mat_off ];
}
}
}
int delmat( )
{
matrix q ( maxrow - 1, maxcol - 1 );
int sign = 1, sum = 0, i, j,k,count;
int newsize,newpos,pos,order;
order = maxrow;
if( order == 1 )
{
return ( ptr[ 0 ] );
}
for( i = 0; i < order; i++, sign *= -1 )
{
for( j = 1; j < order; j++ )
{
for( k = 0, count = 0; k < order;
k++ )
Manual for C++ Programming Page 23 of
89
{
if( k == i )
continue;
pos = j * order + k;
newpos = ( j - 1 ) * ( order - 1 ) + count;
q.ptr[ newpos ] = ptr[ pos ];
count++;
}
}
sum = sum + ptr[ i ] * sign * q.delmat( );
}
return ( sum );
}
matrix operator +( matrix b )
{
matrix c ( maxrow, maxcol );
int i,j,mat_off;
for( i = 0; i < maxrow; i++ )
{
for( j = 0; j < maxcol; j++ )
{
mat_off = i * maxcol + j;
c.ptr[ mat_off ] = ptr[ mat_off ] + b.ptr[ mat_off ];
}
}
return ( c );
}
matrix operator *( matrix b )
{
matrix c ( b.maxcol, maxrow );
int i,j,k,mat_off1, mat_off2, mat_off3;
for( i = 0; i < c.maxrow; i++ )
{
for( j = 0; j < c.maxcol; j++ )
{
mat_off3 - i * c.maxcol + j;
c.ptr[ mat_off3 ] = 0;
for( k = 0; k < b.maxrow; k++ )
{
mat_off2 = k * b.maxcol + j;
mat_off1 = i * maxcol + k;
c.ptr[mat_off3]+=ptr[mat_off1]* b.ptr[mat_off2 ];
}
}
}
return ( c );
}
int operator ==( matrix b )
{
int i,j, mat_off;
if( maxrow != b.maxrow
|| maxcol != b.maxcol )
return ( 0 );
for( i = 0; i < maxrow; i++ )
{
for( j = 0; j < maxcol; j++ )
{
mat_off = i * maxcol + j;
if( ptr[ mat_off ]
Manual for C++ Programming Page 24 of
89
!= b.ptr[ mat_off ] )
return ( 0 );
}
}
return ( 1 );
}
} ;
void main( )
{
int rowa, cola, rowb, colb;
cout << endl << "Enter dimensions of matrix A ";
cin >> rowa >> cola;
matrix a ( rowa, cola );
a.getmat( );
cout << endl << "Enter dimensions of matrix B";
cin >> rowb >> colb;
matrix b ( rowb, colb );
b.getmat( );
matrix c ( rowa, cola );
c = a + b;
cout << endl << "The sum of two matrics = ";
c.printmat( );
matrix d ( rowa, colb );
d = a * b;
cout << endl << "The product of two matrics = ";
d.printmat( );
cout << endl << "Determinant of matrix a =" << a.delmat( );
if( a == b )
cout << endl << "a & b are equal";
else
cout << endl << "a & b are not equal";
}
Manual for C++ Programming Page 25 of
89
13. Write a program to overload new/delete operators in a class.
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <new.h>
const int MAX = 5;
const int FREE = 0;
const int OCCUPIED = 1;
void memwarning( )
{
cout << endl << "Free store has now gone empty";
exit( 1 );
}
class employee
{
private:
char name[ 20 ];
int age;
float sal;
public:
void *operator new(size_t bytes)
void operator delete( void * q );
void setdata( char * n, int a, float s );
void showdata( );
~employee( );
} ;
struct pool
{
employee obj;
int status;
} ;
int flag = 0;
struct pool * p = NULL;
void * employee::operator new( size_t sz )
{
int i;
if( flag == 0 )
{
p = ( pool * )malloc( sz * MAX );
if( p == NULL )
memwarning( );
for( i = 0; i < MAX; i++ )
p[ i ].status = FREE;
flag = 1;
p[ 0 ].status = OCCUPIED;
return &p[ 0 ].obj;
}
else
{
for( i = 0; i < MAX; i++ )
Manual for C++ Programming Page 26 of
89
{
if( p[ i ].status = FREE )
{
p[ i ].status = OCCUPIED;
return &p[ i ].obj;
}
}
memwarning( );
}
}
void employee::operator delete( void * q )
{
if( q == NULL )
return;
for( int i = 0; i < MAX; i++)
{
if( q == &p[ i ].obj )
{
p[ i ].status = FREE;
strcpy( p[ i ].obj.name, "" );
p[ i ].obj.age = 0;
p[ i ].obj.sal = 0.0;
}
}
}
void employee::setdata( char * n, int a, float s )
{
strcpy( name, n );
age = a;
sal = s;
}
void employee::showdata( )
{
cout << endl << name << "t" << age << "t" << sal;
}
employee::~employee( )
{
cout << endl << "reached destructor";
free( p );
}
void main( )
{
void memwarning( );
set_new_handler( memwarning );
employee * e1,*e2,*e3,*e4,*e5,*e6;
e1 = new employee;
e1->setdata( "ajay", 23, 4500.50 );
e2 = new employee;
e2->setdata( "amol", 25, 5500.50 );
e3 = new employee;
e3->setdata( "anil", 26, 3500.50 );
Manual for C++ Programming Page 27 of
89
e4 = new employee;
e4->setdata( "anuj", 30, 6500.50 );
e5 = new employee;
e5->setdata( "atul", 23, 4200.50 );
e1->showdata( );
e2->showdata( );
e3->showdata( );
e4->showdata( );
e5->showdata( );
delete e4;
delete e5;
e4->showdata( );
e5->showdata( );
e4 = new employee;
e5 = new employee;
e6 = new employee;
cout << endl << "Done!!";
}
Manual for C++ Programming Page 28 of
89
14. Write a program in C++ to highlight the difference between overloaded
assignment operator and copy constructor.
#include <iostream.h>
class circle
{
private:
int radius;
float x, y;
public:
circle( )
{
}
circle( int rr, float xx, float yy )
{
radius = rr;
x = xx;
y = yy;
}
circle operator =( circle & c )
{
cout << endl << "Assignment operator invoked";
radiius = c.radius;
x = c.x;
y = c.y;
return circle( radius, x, y );
}
circle( circle & c )
{
cout << endl << "copy constructor invoked";
radius = c.radius;
x = c.x;
y = c.y;
}
void showdata( )
{
cout << endl << "Radius = " << radius;
cout << endl << "X-Coordinate=" << x;
cout << endl << "Y-Coordinate=" << y;
}
} ;
void main( )
{
circle c1 ( 10, 2.5, 2.5 );
circle c2,c4;
c4 = c2 = c1;
circle c3 = c1;
c1.showdata( );
c2.showdata( );
c3.showdata( );
c4.showdata( );
}
Manual for C++ Programming Page 29 of
89
15. Write a Program illustrating how the constructors are implemented and the
order in which they are called when the classes are inherited. Use three
classes named alpha, beta, gamma such that alpha,beta are base class and
gamma is derived class inheriting alpha & beta
#include<iostream.h>
#include<conio.h>
class alpha
{
int x;
public:
alpha(int i)
{
x = i;
cout<<"alpha initializedn";
}
void show_x(void)
{
cout<<"x="<<x<<"n";
}
};
class beta
{
float y;
public:
beta(float j)
{
y=j;
cout<<"beta initializedn";
}
void show_y(void)
{
cout<<"y= "<<y<<"n";
}
};
class gamma : public beta, public alpha
{
int m,n;
public:
gamma(int a, float b, int c, int d):
alpha(a), beta(b)
{
m = c; n = d;
cout<<"gamma initializedn";
}
void show_mn(void){
cout<<"m="<<m<<"n";
cout<<"n="<<n<<"n";
}
};
void main()
{
gamma g(5, 10.75, 20, 30);
g.show_x();
g.show_y();
g.show_mn();
}
Manual for C++ Programming Page 30 of
89
16. Write a Program to design a stuent class representing student roll no.
and a test class (derived class of student) representing the scores of the
student in various subjects and sports class representing the score in
sports. The sports and test class should be inherited by a result class
having the functionality to add the scores and display the final result for a
student.
#include<iostream.h>
class student
{
protected:
int roll_number;
public:
void get_number(int a)
{
roll_number = a;
}
void put_number(void)
{
cout<<"Roll No:"<<roll_number<<"n";
}
};
class test : public student
{
protected:
float part1, part2;
public:
void get_marks(float x, float y)
{
part1 = x;
part2 = y;
}
void put_marks(void)
{
cout<<"Marks obtained"<<"n"
<<"part1 ="<<part1<<"n"
<<"part2 ="<<part2<<"n";
}
};
class sports
{
protected:
float score;
public:
void get_score(float s)
{
score = s;
}
void put_score(void)
Manual for C++ Programming Page 31 of
89
{
cout<<"Sports wt:"<<score<<"nn";
}
};
class result : public test, public sports
{
float total;
public:
void display(void);
};
void result ::display(void)
{
total = part1 + part2 + score;
put_number();
put_marks();
put_score();
cout<<"Total Score:"<<total<<"n";
}
int main()
{
result student_1;
student_1.get_number (1234);
student_1.get_marks (27.5, 33.0);
student_1.get_score (6.0);
student_1.display ();
return 0;
}
Manual for C++ Programming Page 32 of
89
17. Write a program to maintain the records of person with details (Name and
Age) and find the eldest among them. The program must use this pointer to
return the result.
#include<iostream.h>
#include<string.h>
class person
{
char name[20];
float age;
public:
person(char *s, float a)
{
strcpy(name, s);
age = a;
}
person & person :: greater(person & x)
{
if(x.age >= age)
return x;
else
return *this;
}
void display(void)
{
cout<<"Name:"<<name<<"n"
<<"Age: "<<age<<"n";
}
};
int main()
{
person p1("John", 37.50),
p2("Ahmed",29.0),
p3("Hebber", 40.5);
person p = p1.greater (p3);
cout<<"Elder Person is:n";
p.display();
p = p1.greater (p2);
cout<<"Elder Person is:n";
p.display();
return 0;
}
Manual for C++ Programming Page 33 of
89
18. Write a Program to illustrate the use of pointers to objects whch are
related by inheritance.
#include<iostream.h>
class BC
{
public:
int b;
void show()
{
cout<<"b="<<b<<"n";
}
};
class DC : public BC
{
public:
int d;
void show()
{
cout<<"b="<<b<<"n"
<<"d="<<d<<"n";
}
};
int main()
{
BC *bptr;
BC base;
bptr = &base;
bptr->b = 100;
cout<<"bptr points to base objectn";
bptr->show ();
DC derived;
bptr = &derived;
bptr->b = 200;
cout<<"bptr now points to derived objectn";
bptr->show ();
DC *dptr;
dptr = &derived;
dptr->d = 300;
cout<<"dptr is derived type pointern";
dptr->show ();
cout<<"Using ((DC *)bptr)n";
((DC *)bptr)->d = 400;
((DC *)bptr)->show ();
return 0;
}
Manual for C++ Programming Page 34 of
89
19. Write a program illustrating the use of virtual functions in class.
#include<iostream.h>
class Base
{
public:
void display()
{
cout<<"n Display Base";
}
virtual void show()
{
cout<<"n Show Base:";
}
};
class Derived : public Base
{
public:
void display()
{
cout<<"n Display Derived";
}
void show()
{
cout<<"n Show Derived";
}
};
int main()
{
Base B;
Derived D;
Base *bptr;
cout<<"n bptr points to Basen";
bptr = &B;
bptr ->display ();
bptr ->show ();
cout<<"nn bptr points to derivedn";
bptr = &D;
bptr ->display ();
bptr ->show ();
return 0;
}
Manual for C++ Programming Page 35 of
89
20. Write a program to design a class representing the information regarding
digital library (books, tape: book & tape should be separate classes having
the base class as media ). The class should have the functionality for
adding new item, issuing, deposit etc. the program should use the runtime
polymorphism.
#include<iostream.h>
#include<string.h>
class media
{
protected:
char title[50];
float price;
public:
media(char *s, float a)
{
strcpy(title, s);
price = a;
}
virtual void display(){}
};
class book : public media
{
int pages;
public:
book(char *s, float a, int p) : media(s,a)
{
pages = p;
}
void display();
};
class tape : public media
{
float time;
public:
tape(char * s, float a, float t):media(s,a)
{
time =t;
}
void display();
};
void book ::display()
{
cout<<"n Title:"<<title;
cout<<"n Pages:"<<pages;
cout<<"n Price:"<<price;
}
void tape ::display ()
{
cout<<"n Title:"<<title;
cout<<"n Play Time:"<<time<<"mins";
cout<<"n Price:"<<price;
}
int main()
Manual for C++ Programming Page 36 of
89
{
char * title = new char[30];
float price, time;
int pages;
cout<<"n Enter Book Details n";
cout<<"n Title:";
cin>>title;
cout<<"n Price:";
cin>>price;
cout<<"n Pages:";
cin>>pages;
book book1(title, price, pages);
cout<<"n Enter Tape Details";
cout<<"n Title:";
cin>>title;
cout<<"n Price:";
cin>>price;
cout<<"n Play Times(mins):";
cin>>time;
tape tape1(title, price, time);
media* list[2];
list[0] = &book1;
list[1] = &tape1;
cout<<"n Media Details";
cout<<"n..............Book.....";
list[0]->display ();
cout<<"n..............Tape.....";
list[1]->display ();
return 0;
}
Manual for C++ Programming Page 37 of
89
21. write a program to show conversion from string to int and vice-versa.
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
class string
{
private:
char str[ 20 ];
public:
string( )
{
str[ 0 ] = '0';
}
string( char * s )
{
strcpy( str, s );
}
string( int a )
{
itoa( a, str, 10 );
}
operator int( )
{
int i = 0,
l,
ss = 0,
k = 1;
l = strlen( str ) - 1;
while( l >= 0 )
{
ss = ss + ( str[ l ] - 48 ) * k;
l--;
k *= 10;
}
return ( ss );
}
void displaydata( )
{
cout << str;
}
} ;
void main( )
{
string s1 = 123;
cout << endl << "s1=";
s1.displaydata( );
s1 = 150;
cout << endl << "s1=";
s1.displaydata( );
string s2 ( "123" );
int i = int( s2 );
cout << endl << "i=" << i;
string s3 ( "456" );
i = s3;
cout << endl << "i=" << i;
}
Manual for C++ Programming Page 38 of
89
22. Write a program showing data conversion between objects of different
classes.
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
class date
{
private:
char dt[ 9 ];
public:
date( )
{
dt[ 0 ] = '0';
}
date( char * s )
{
strcpy( dt, s );
}
void displaydata( )
{
cout << dt;
}
} ;
class dmy
{
private:
int day,
mth,
yr;
public:
dmy( )
{
day = mth = yr = 0;
}
dmy( int d, int m, int y )
{
day = d;
mth = m;
yr = y;
} ;
operator date( )
{
char temp[ 3 ], str[ 9 ];
itoa( day, str, 10 );
strcat( str, "/" );
itoa( mth, temp, 10 );
Manual for C++ Programming Page 39 of
89
strcat( str, temp );
strcat( str, "/" );
itoa( yr, temp, 10 );
strcat( str, temp );
return ( date( str ) );
}
void displaydata( )
{
cout << day << "t" << mth << "t" << yr;
}
} ;
void main( )
{
date d1;
dmy d2 ( 17, 11, 94 );
d1 = d2;
cout<,endl<<"d1=";
d1.displaydata( );
cout << endl << "d2=";
d2.displaydata( );
}
Manual for C++ Programming Page 40 of
89
23. Write a program showing data conversion between objects of different
classes and conversion routine should reside in destination class.
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
class dmy
{
int day,
mth,
yr;
public:
dmy( )
{
day = mth, yr = 0;
}
dmy( int d, int m, int y )
{
day = d;
mth = m;
yr = y;
}
int getday( )
{
return ( day );
}
int getmth( )
{
return ( mth );
}
int getyr( )
{
return ( yr );
}
void displaydata( )
{
cout << day << "t" << mth << "t" << yr;
}
} ;
class date
{
private:
char dt[ 9 ];
public:
date( )
{
dt[ 0 ] = '0';
}
date( char * s )
{
strcpy( dt, s );
Manual for C++ Programming Page 41 of
89
}
void displaydata( )
{
cout << dt;
}
date( dmy t )
{
int d = t.getday( );
int m = t.getmth( );
int y = t.getyr( );
char temp[ 3 ];
itoa( d, dt, 10 );
strcat( dt, "t" );
itoa( m, temp, 10 );
strcat( dt, temp );
strcat( dt, "/" );
itoa( y, temp, 10 );
strcat( dt, temp );
}
} ;
void main( )
{
date d1;
dmy d2 ( 17, 11, 94 );
d1 = d2;
cout << endl << "d1=";
d1.displaydata( );
cout << endl << "d2=";
d2.displaydata( );
}
Manual for C++ Programming Page 42 of
89
24. Write a program implementing basic operation of class ios i.e.
setf,unsetf,precision etc.
#include <iostream.h>
#include <conio.h>
void main( )
{
int i = 52;
float a = 425.0;
float b = 123.500328;
char str[ ] = "Dream. Then make it happend!";
clrscr( );
cout.setf( ios::unitbuf );
cout.setf( ios::stdio );
cout.setf( ios::showpos );
cout << i << endl;
cout.setf( ios::showbase );
cout.setf( ios::uppercase );
cout.setf( ios::hex, ios::basefield );
cout << i << endl;
cout.setf( ios::oct, ios::basefield );
cout << i << endl;
cout.fill( '0' );
cout << "Fill character " << cout.fill( ) << endl;
cout.setf( ios::dec, ios::basefield );
cout.width( 10 );
cout << i << endl;
cout << setf( ios::left, ios::adjustfield );
cout.width( 10 );
cout << i << endl;
cout.setf( ios::internal, ios::adjustfield );
cout.width( 10 );
cout << endl;
cout << endl;
cout.width( 10 );
cout << str << endl;
cout.width( 40 );
cout.setf( ios::left, ios::adjustfield );
cout.width( 40 );
cout << str << endl;
cout.precision( 6 );
cout << "Precision" << cout.precision( );
cout.setf( ios::showpoint );
cout.unsetf( ios::showpos );
Manual for C++ Programming Page 43 of
89
cout << endl << a;
cout.unsetf( ios::showpoint );
cout << endl << a;
cout.setf( ios::fixed, ios::floatfield );
cout << endl << b;
cout.setf( ios::scientific, ios::floatfield );
cout << endl << b;
b = 5.375;
cout.precision( 14 );
cout.setf( ios::fixed, ios::floatfield );
cout << endl << b;
cout.setf( ios::scientific, ios::floatfield );
cout << endl << b;
cout.unsetf( ios::showpoint );
cout.unsetf( ios::unitbuf );
cout.unsetf( ios::stdio );
}
Manual for C++ Programming Page 44 of
89
25. Write a program to implement I/O operations on characters. I/O operations
includes inputing a string, Calculating length of the string, Storing the
String in a file, fetching the stored characters from it, etc.
#include<iostream.h>
#include<fstream.h>
#include<string.h>
int main()
{
char string[80];
cout<<"Enter a String n";
cin>>string;
int len = strlen(string);
fstream file;
file.open("TEXT", ios::in | ios::out);
for(int i=0;i<len;i++)
file.put(string[i]);
file.seekg(0);
char ch;
while(file)
{
file.get(ch);
cout<<ch;
}
return 0;
}
Manual for C++ Programming Page 45 of
89
26. Write a program to copy the contents of one file to another.
#include <fstream.h>
void main( )
{
char cource[ 67 ],
target[ 67 ];
char ch;
cout << endl << "Enter source filename";
cin >> source;
cout << endl << "Enter target filename";
cin >> target;
ifstream infile ( source );
ofstream outfile ( target );
while( infile )
{
infile.get( ch );
outfile.put( ch );
}
}
Manual for C++ Programming Page 46 of
89
27. Write a program to perform read/write binary I/O operation on a file
(i.e. write the object of a structure/class to file).
#include <fstream.h>
void main( )
{
struct employee
{
char name[ 20 ];
int age;
float basic;
float gross;
} ;
employee e;
char ch = 'Y';
ofstream outfile;
outfile.open( "EMPLOYEE.DAT", ios::out | ios::binary );
while( ch == 'Y' )
{
cout << endl << "Enter a record";
cin >> e.name >> e.age >> e.basic >> e.gross;
outfile.write( ( char * )&e, sizeof( e ) );
cout << endl << "Add Another Y/N";
cin >> ch;
}
outfile.close( );
ifstream infile;
infile.open( "EMPLOYEE.DAT", ios::in | ios::binary );
while( infile.read( ( char * )&e, sizeof( e ) ) )
{
cout << endl << e.name << "t" << e.age << "t" << e.basic << "t"
<< e.gross;
}
}
Manual for C++ Programming Page 47 of
89
28. Write a program to maintain a elementary database of employees using
files.
#include <fstream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iomanip.h>
class group
{
private:
struct person
{
char flag;
char empcode[ 5 ];
char name[ 40 ];
int age;
float sal;
} p;
fstream file;
public:
group( );
void addrec( );
void listrec( );
void modirec( );
void delrec( );
void recallrec( );
void packrec( );
void exit( );
} ;
void main( )
{
char choice;
group g;
do
{
clrscr( );
gotoxy( 30, 10 );
cout << "1. Add records";
gotoxy( 30, 11 );
cout << "2. List records";
gotoxy( 30, 12 );
cout << "3. Modify records";
gotoxy( 30, 13 );
cout << "4. Delete records";
gotoxy( 30, 14 );
cout << "5. Recall records";
gotoxy( 30, 15 );
cout << "6. Pack records";
gotoxy( 30, 16 );
cout << "0. Exit";
gotoxy( 30, 18 );
cout << "Your Choice ? ";
cin >> choice;
Manual for C++ Programming Page 48 of
89
clrscr( );
switch( choice )
{
case '1':
g.addrec( );
break;
case '2':
g.listrec( );
break;
case '3':
g.modirec( );
break;
case '4':
g.delrec( );
break;
case '5':
g.recallrec( );
break;
case '6':
g.packrec( );
break;
case '0':
g.exit( );
break;
}
} while( choice != 0 );
}
void group::group( )
{
file.open( "emp.dat", ios::binary || ios::in || ios::out );
if( !file )
{
cout << endl << "Unable to open file";
exit( );
}
}
void group::addrec( )
{
char ch;
file.seekp( 0L, ios::end );
do
{
cout << endl << "Enter emp code, name, age & salary" << endl;
cin >> p.empcode >> p.name >> p.age >> p.sal;
p.flag = '';
file.write( ( char * )&p, sizeof( p ) );
cout << "Add another record? (Y/N)";
cin >> ch;
} while( ch == 'Y' || ch == 'Y' );
}
void group::listrec( )
{
Manual for C++ Programming Page 49 of
89
int j = 0,a;
file.seekg( 0L, ios::beg );
while( file.read( ( char * )&p, sizeof( p ) ) )
{
if( p.flag != '*' )
{
cout <<endl << "Record#" << j++ << setw( 6 )<< p.empcode
<<setw(20)<<p.name<<setw(4<<p.age<<setw(9)<< p.sal;
}
file.clear( );
cout << endl << "Press any key......";
getch( );
}
void group::modirec( )
{
char code[ 5 ];
int count = 0;
long int pos;
cout << "Enter employee code: ";
cin >> code;
file.seekg( 0L, ios::beg );
while( file.read( ( char * )&p, sizeof( p ) ) )
{
if( strcmp( p.empcode, code ) == 0 )
{
cout << endl << "Enter new record" << endl;
cin >> p.empcode >> p.name >> p.age;
p.flag = '';
pos = count * sizeof( p );
file.seekp( pos, ios::beg );
file.write( ( char * )&p, sizeof( p ) );
return;
}
count++;
}
cout << endl << "No employee in file with code = " << code;
cout << endl << "Press any key .....";
getch( );
file.clear( );
}
void group::delrec( )
{
char code[ 5 ];
long int pos;
int count = 0;
cout << "Enter employee code : ";
cin >> code;
file.seekg( 0L, ios::beg );
while( file.read( ( char * )&p, sizeof( p ) ) )
{
Manual for C++ Programming Page 50 of
89
if( strcmp( p.empcode, code ) == 0 )
{
p.flag = '*';
pos = count * sizeof( p );
file.seekp( pos, ios::beg );
file.write( ( char * )&p, sizeof( p ) );
return;
}
count++;
}
cout << endl << "No employee in file with code = " << code;
cout<<endl<<Press any key ....";
getch( );
file.clear( );
}
void group.recallrec()
{
char code[ 5 ];
long int pos;
int count = 0;
cout << "Enter employee code: ";
cin >> code;
file.seekg( 0L, ios::beg );
while( file.read( ( char * )&p, sizeof( p ) ) )
{
if( strcmp( p.empcode, code ) == 0 )
{
p.flag = '';
pos = count * sizeof( p );
file.seekp( pos, ios::beg );
file.write( ( char * )&p, sizeof( p ) );
return;
}
count++;
}
cout << endl << "No employee in file with code = " << code;
cout << endl << "Press any key ....";
file.clear( );
void group::packrec( )
{
ofstream outfile;
outfile.open( "TEMP", ios::out );
file.seekg( 0, ios::beg );
while( file.read( ( char * )&p, sizeof( p ) ) )
{
if( p.flag != '*' )
outfile.write((char *)&p,sizeof(p)));
}
outfile.close( ); file.close( );
remove( "EMP.dat" );
rename( "TEMP", "TEMP.dat" );
file.open( "EMP.dat", ios::binary | ios::in | ios::out | ios::nocreate );
}
void group::exit( )
{
file.close( );
}
Manual for C++ Programming Page 51 of
89
29. Write a Program for reading and writing data to and from the file using
command line arguments.
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
int number[9] = {11,22,33,44,55,66,77,88,99};
if(argc!=3)
{
cout<<"argc="<<argc<<"n";
cout<<"Error in argumentsn";
exit(1);
}
ofstream fout1, fout2;
fout1.open(argv[1]);
if(fout1.fail())
{
cout<<"Could not open the file:"
<<argv[1]<<"n";
exit(1);
}
fout2.open(argv[2]);
if(fout2.fail())
{
cout<<"Could not open the file:"
<<argv[2]<<"n";
exit(1);
}
for(int i=0; i<9; i++)
{
if(number[i] % 2 == 0)
fout2<<number[i]<<" ";
else
fout1<<number[i]<<" ";
}
fout1.close();
fout2.close();
ifstream fin;
char ch;
for(i=1; i<argc; i++)
{
fin.open(argv[i]);
cout<<"Contents of "<<argv[i]<<"n";
do
{
Manual for C++ Programming Page 52 of
89
fin.get(ch);
cout<<ch;
}while(fin);
cout<<"nn";
fin.close();
}
return 0;
}
Note: - project->settings->debug->program arguments (specify the arguments
to be passed)
Manual for C++ Programming Page 53 of
89
30. Write a program showing implementation of stack class having the
functionality of push, pop operations.
#include <iostream.h>
#define MAX 10
class stack
{
private:
int arr[ MAX ], top;
public:
stack( )
{
top = -1;
}
void push( int item )
{
if( top == MAX - 1 )
{
cout << endl << "Stack is full";
return;
}
top++;
arr[ top ] = item;
}
int pop( )
{
if( top == -1 )
{
cout << endl << "Stack is empty";
return NULL;
}
int data = arr[ top ];
top--;
return data;
}
} ;
void main( )
{
stack s;
s.push( 11 );
s.push( 12 );
s.push( 13 );
s.push( 14 );
s.push( 15 );
s.push( 16 );
s.push( 17 );
s.push( 18 );
s.push( 19 );
s.push( 20 );
s.push( 21 );
int i = s.pop( ); cout << endl << "Item popped=" << i;
i = s.pop( ); cout << endl << "Item popped=" << i;
i = s.pop( ); cout << endl << "Item popped=" << i;
i = s.pop( ); cout << endl << "Item popped=" << i;
}
Manual for C++ Programming Page 54 of
89
31. Write program to implement a queue class with requried operations/
functions.
#include <iostream.h>
#define MAX 10
class queue
{
private:
int arr[ MAX ];
int front,
rear;
public:
queue( )
{
front = -1;
rear = -1;
}
void addq( )
{
int item;
if( rear == MAX - 1 )
{
cout << endl << "Queue is full";
return;
}
rear++;
arr[ rear ] = item;
if( front == -1 )
front = 0;
}
int delq( )
{
int data;
if( front == -1 )
{
cout << endl << "Queue is empty";
return NULL;
}
data = arr[ front ];
if( front == rear )
front = rear = -1;
else
front++;
return data;
}
} ;
void main( )
{
Manual for C++ Programming Page 55 of
89
queue a;
a.addq( 11 );
a.addq( 12 );
a.addq( 13 );
a.addq( 14 );
a.addq( 15 );
a.addq( 16 );
a.addq( 17 );
a.addq( 18 );
a.addq( 19 );
a.addq( 20 );
a.addq( 21 );
int i = a.delq( );
cout << endl << "Item deleted=" << i;
i = a.delq( );
cout << endl << "Item deleted=" << i;
i = a.delq( );
cout << endl << "Item deleted=" << i;
}
Manual for C++ Programming Page 56 of
89
32. Write a program to implement circular queue class with required
operations/ functions.
#include <iostream.h>
#define MAX 10
class queue
{
private:
int arr[ MAX ];
int front,
rear;
public:
queue( )
{
front = -1;
rear = -1;
}
void addq( int item )
{
if( ( rear == MAX - 1 && front == 0 )
|| ( rear + 1 == front ) )
{
cout << endl << "Queue is full";
return;
}
if( rear == MAX - 1 )
rear = 0;
else
rear = rear + 1;
arr[ rear ] = item;
if( front == -1 )
front = 0;
}
int delq( )
{
int data;
if( front == -1 )
{
cout << endl << "Queue is empty";
return NULL;
}
else
{
data = arr[ front ];
if( front == rear )
{
front = -1;
rear = -1;
}
else
{
Manual for C++ Programming Page 57 of
89
if( front == MAX - 1 )
front = 0;
else
front = front + 1;
}
return data;
}
}
} ;
void main( )
{
queue a;
a.addq( 11 );
a.addq( 12 );
a.addq( 13 );
a.addq( 14 );
a.addq( 15 );
a.addq( 16 );
a.addq( 17 );
a.addq( 18 );
a.addq( 19 );
a.addq( 20 );
a.addq( 21 );
int i = a.delq( );
cout << endl << "Item deleted=" << i;
i = a.delq( );
cout << endl << "Item deleted=" << i;
i = a.delq( );
cout << endl << "Item deleted=" << i;
}
Manual for C++ Programming Page 58 of
89
33. Write a program implementing linked list as a class. Also Perform some
required operations like inserting, deleting nodes & display the contents of
entire linked list.
#include <iostream.h>
class linklist
{
struct node
{
int data;
node * link;
} * p;
public:
linklist( );
void append( int num );
void addatbeg( int num );
void addafter( int c, int num );
void del( int num );
void display( );
int count( );
~linklist( );
} ;
linklist::linklist( )
{
p = NULL;
}
void linklist::append( int num )
{
node * q,
* t;
if( p == NULL )
{
p = new node;
p->data = num;
p->link = NULL;
}
else
{
q = p;
while( q->link != NULL )
q = q->link;
t = new node;
t->data = num;
t->link = NULL;
q->link = t;
}
}
void linklist::addatbeg( int num )
{
node * q;
q = new node;
q->data = num;
q->link = p;
p = q;
Manual for C++ Programming Page 59 of
89
}
void linklist::addafter( int c, int num )
{
node * q,
* t;
int i;
for( i = 0, q = p; i < c; i++ )
{
q = q->link;
if( q = NULL )
{
cout << endl << "There are less than " << c << "element";
return;
}
}
t = new node;
t->data = num;
t->link = q->link;
q->link = t;
}
void linklist::del( int num )
{
node * q,
* r;
q = p;
if( q->data == num )
{
p = q->link;
delete q;
return;
}
r = q;
while( q != NULL )
{
if( q->data == num )
{
r->link = q->link;
delete q;
return;
}
r = q;
q = q->link;
}
cout << endl << "Element" << num << "not found";
}
void linklist::display( )
{
node * q;
cout << endl;
for( q = p; q->link != NULL; q = q->link )
{
cout << endl << q->data;
}
int linklist::count( )
{
Manual for C++ Programming Page 60 of
89
node * q;
int c = 0;
for( q = p; q != NULL; q = q->link )
c++;
return ( c );
}
linklist::~linklist( )
{
node * q;
if( p == NULL )
return;
while( p != NULL )
{
q = p->link;
delete p;
p = q;
}
}
void main( )
{
linklist ll;
cout << endl << "No. of elements in linked list= " << ll.count( );
ll.append( 11 );
ll.append( 22 );
ll.append( 33 );
ll.append( 44 );
ll.append( 55 );
ll.addatbeg( 100 );
ll.addatbeg( 200 );
ll.addatbeg( 300 );
ll.addafter( 3, 333 );
ll.addafter( 6, 444 );
ll.display( );
cout << endl << "No. of element in linked list =" << ll.count( );
ll.del( 300 );
ll.del( 66 );
ll.del( 0 );
ll.display( );
cout << endl << "No. of element in linked list =" << ll.count( );
}
Manual for C++ Programming Page 61 of
89
34. Write a program implementing stack & its operations using dynamic memory
allocation.
#include <iostream.h>
struct node
{
int data;
node * link;
} ;
class stack
{
private:
node * top;
public:
stack( )
{
top = NULL;
}
void push( int item )
{
node * temp;
temp = new node;
if( temp = NULL )
cout << endl << "Stack is full";
temp->data = item;
temp->link = top;
top = temp;
}
int pop( )
{
if( top == NULL )
{
cout << endl << "Stack is empty";
return NULL;
}
node * temp;
int item;
temp = top;
item = temp->data;
top = top->link;
delete temp;
return item;
}
~stack( )
{
if( top == NULL )
return;
node * temp;
while( top != NULL )
{
temp = top;
top = top->link;
delete temp;
Manual for C++ Programming Page 62 of
89
}
}
} ;
void main( )
{
stack s;
s.push( 11 );
s.push( 12 );
s.push( 13 );
s.push( 14 );
s.push( 15 );
s.push( 16 );
int i = s.pop( );
cout << endl << "Item popped=" << i;
i = s.pop( );
cout << endl << "Item popped=" << i;
i = s.pop( );
cout << endl << "Item popped=" << i;
}
Manual for C++ Programming Page 63 of
89
35. Write a program implementing Queue stack & its operations using dynamic
memory allocation.
#include <iostream.h>
struct node
{
int data;
node * link;
} ;
class queue
{
private:
node * front,
* rear;
public:
queue( )
{
front = rear = NULL;
}
void addq( int item )
{
node * temp;
temp = new node;
if( temp == NULL )
cout << endl << "Queue is full";
temp->data = item;
temp->link = NULL;
if( front == NULL )
{
rear = front = temp;
return;
}
rear->link = temp;
rear = rear->link;
}
int delq( )
{
if( front == NULL )
{
cout << endl << "queue is empty";
return NULL;
}
node * temp;
int item;
item = front->data;
temp = front;
front = front->link;
delete temp;
return item;
}
~queue( )
{
Manual for C++ Programming Page 64 of
89
if( front == NULL )
return;
node * temp;
while( front != NULL )
{
temp = front;
front = front->link;
delete temp;
}
}
} ;
void main( )
{
queue a;
a.addq( 11 );
a.addq( 12 );
a.addq( 13 );
a.addq( 14 );
a.addq( 15 );
a.addq( 16 );
a.addq( 17 );
int i = a.delq( );
cout << endl << "Item extracted=" << i;
i = a.delq( );
cout << endl << "Item extracted=" << i;
i = a.delq( );
cout << endl << "Item extracted=" << i;
}
Manual for C++ Programming Page 65 of
89
36. Write a program to implement Binary search tree using class and traverse
the tree using any traversal scheme. In addition to it the class must have
capability to copy the contents from one tree to another and compare the
contents of two binary trees.
#include <iostream.h>
#define TRUE 1
#define FALSE 0
class tree
{
private:
struct node
{
node * l;
int data;
node * r;
} * p;
public:
tree( );
void search( int n, int & found,
node * parent );
void insert( int n );
void traverse( );
int in( node * q );
void pre( node * q );
void post( node * q );
int operator ==( tree t );
int compare( node * pp, node * qq );
void operator =( tree t );
node * copy( node * q );
} ;
tree::tree( )
{
p = NULL;
}
void tree::search( int n, int & found, node *& parent )
{
node * q;
found = FALSE;
parent = TRUE;
if( p == NULL )
return;
q = p;
while( q != NULL )
{
if( q->data == n )
{
found = TRUE;
return;
}
if( q->data > n )
{
parent = q;
q = q->l;
}
else
Manual for C++ Programming Page 66 of
89
{
parent = q;
q = q->r;
}
}
}
void tree::insert( int n )
{
int found;
node * t,
* parent;
search( n, found, parent );
if( found == TRUE )
cout << endl << "Such a node already exist";
else
{
t = new node;
t->data = n;
t->l = NULL;
t->r = NULL;
if( parent == NULL )
p = t;
else
parent->data > n?parent->l:parent->r = t;
}
}
void tree::traverse( )
{
int choice;
cout << endl << "q.Inorder" << endl << "2. Preorder" << endl
<< "3. Postorder" << endl << "4. Your choice ";
cin >> choice;
switch( choice )
{
case 1:
in( p );
break;
case 2:
pre( p );
break;
case 3:
post( p );
break;
}
}
void tree::in( node * q )
{
if( q != NULL )
{
in( q->l );
cout << "t" << q->data;
in( q->r );
}
}
void tree::pre( node * q )
{
Manual for C++ Programming Page 67 of
89
if( q != NULL )
{
cout << "t" << q->data;
pre( q->l );
pre( q->r );
}
}
void tree::post( node * q )
{
if( q != NULL )
{
post( q->l );
post( q->r );
cout << "t" << q->data;
}
}
int tree::operator ==( tree t )
{
int flag;
flag = compare( p, t.p );
return ( flag );
}
int tree::compare( node * pp, node * qq )
{
static int flag;
if( ( pp == NULL ) && ( q != NULL ) )
{
if( ( pp != NULL ) && ( qq != NULL ) )
{
if( pp->data != qq->data )
flag = FALSE;
else
{
compare( pp->l, qq->l );
compare( qq->r, qq->r );
}
}
}
return ( flag );
}
void tree::operator =( tree t )
{
p = copy( t.p );
}
tree::node * tree::copy( node * q )
{
if( q != NULL )
{
t = new node;
t->data = q->data;
t->l = copy( q->l );
t->r = copy( q->r );
return ( t );
}
Manual for C++ Programming Page 68 of
89
else
return ( NULL );
}
void main( )
{
tree tt,
ss;
int i,
num;
for( i = 0; i <= 6; i++ )
{
cout << endl << "Enter the data for the node to be inserted";
cin >> num;
tt.insert( num );
}
tt.traverse( );
ss = tt;
ss.traverse( );
if( ss == tt )
cout << endl << "Trees are equal";
else
cout << endl << "Trees are not equal";
}
Manual for C++ Programming Page 69 of
89
37. Write a program to implement the exception handling with multiple catch
statements.
#include<iostream.h>
void test(int x)
{
try
{
if(x==1)
throw x;
else
if(x==0)
throw 'x';
else
if(x==-1)
throw 1.0;
cout<<"End of try-blackn";
}
catch(char c)
{
cout<<"Caught a Charactern";
}
catch(int c)
{
cout<<"Caught an Integern";
}
catch(double c)
{
cout<<"Caught a Doublen";
}
cout<<"End of try-catch systemn";
}
int main()
{
cout<<"Testing Multiple Catchesn";
cout<<"x==1n";
test(1);
cout<<"x==0n";
test(0);
cout<<"x==2n";
test(2);
return 0;
}
Manual for C++ Programming Page 70 of
89
38. Write a program to implement the exception handling with rethrowing in
exception.
#include<iostream.h>
void divide(double x, double y)
{
cout<<"Inside Functionn";
try
{
if(y==0.0)
throw y;
else
cout<<"Division ="<<x/y<<"n";
}
catch(double)
{
cout<<"Caught double inside functionn";
throw;
}
cout<<"End of Functionn";
}
int main()
{
cout<<"Inside Mainn";
try
{
divide(10.5,2.0);
divide(20.0,0.0);
}
catch(double)
{
cout<<"Caught double inside mainn";
}
cout<<"End of Mainn";
return 0;
}
Manual for C++ Programming Page 71 of
89
39. Write a program to implement the exception handling with the
functionality of testing the throw restrictions.
#include<iostream.h>
void test(int x) throw(int, double)
{
if(x==0)
throw 'x';
else
if(x == 1)
throw x;
else
if(x == -1)
throw 1.0;
cout<<"End of Function Blockn";
}
int main()
{
try
{
cout<<"Testting Throw Restrictionsn";
cout<<"x == 0n";
test(0);
cout<<"x == 1n";
test(1);
cout<<"x == -1n";
test(-1);
cout<<"x == 2n";
test(2);
}
catch(char c)
{
cout<<"Caught a Charactern";
}
catch(int m)
{
cout<<"Caught an Integern";
}
catch(double d)
{
cout<<"Caught a Doublen";
}
cout<<"End of Try-catch systemn";
return 0;
}
Manual for C++ Programming Page 72 of
89
40. Write a function template that will sort an array of implicit types like
int,float,char etc. it can also sort user-defined objects like strings &
date. The necessary classes contains overloading of operators.
#include <iostream.h>
#include <string.h>
class mystring
{
private:
enum
{
sz = 100 // < >
} ;
char str[ sz ];
public:
mystring( char * s = "" )
{
strcpy( str, s );
}
int operator <( mystring ss )
{
if( strcmp( str, ss.str ) <= 0 )
return 1;
else
return 0;
}
int operator <=( mystring ss )
{
if( strcmp( str, ss.str ) <= 0 )
return 1;
else
return 0;
}
int operator >( mystring ss )
{
if( strcmp( str, ss.str ) > 0 )
return 1;
else
return 0;
}
friend ostream & operator <<( ostream & o,mystring & dd );
} ;
ostream operator <<( ostream & o, mystring & ss )
{
o << ss.str;
return o;
}
class date
{
Manual for C++ Programming Page 73 of
89
private:
int day,
mth,
yr;
public:
date( int d = 0, int m = 0, int y = 0 )
{
day = d;
mth = m;
yr = y;
}
int operator <( date dt )
{
if( yr < dt.yr )
return 1;
if( yr == dt.yr && mth < dt.mth )
return 1;
if( yr == dt.yr && mth == dt.mth && day = dt.day )
return 1;
return 0;
}
class date
{
private:
int day, mth, yr;
public:
date( int d = 0, int m = 0, int y = 0 )
{
day = d;
mth = m;
yr = y;
}
int operator <( date dt )
{
if( yr < dt.yr )
return 1;
if( yr == dt.yr && mth < dt.mth )
return 1;
if( yr == dt.yr && mth == dt.mth
&& day < dt.day )
return 1;
return 0;
}
int operator <=( date dt )
{
if( yr <= dt.yr )
return 1;
if( yr == dt.yr && mth <= dt.mth )
return 1;
if( yr == dt.yr && mth == dt.mth
&& day <= dt.yr )
return 1;
return 0;
}
int operator >( date dt )
{
Manual for C++ Programming Page 74 of
89
if( yr > dt.yr )
return 1;
if( yr == dt.yr && mth > dt.mth )
return 1;
if( yr == dt.yr && mth == dt.mth
&& day > dt.day )
return 1;
return 0;
}
friend ostream & operator <<( ostream & o, date & dd );
} ;
ostream & operator <<( ostream & o, date & dd )
{
o << dd.day << "t" << dd.mth << "t" << dd.yr;
return 0;
}
template<class T> void quick( T * n, int low, int high )
{
int pos;
if( low < high )
{
pos = split( n, low, high );
quick( n, low, pos - 1 );
quick( n, pos + 1, high );
}
}
template<class T> int split( T * n, int low, int high )
{
int pos,
left,
right;
T item, t;
item = n[ low ];
left = low;
right = high;
while( left < right )
{
while( n[ right ] > item )
right = right - 1;
while( ( left < right )
&& ( n[ left ] <= item ) )
left = left + 1;
if( left < right )
{
t = n[ left ];
n[ left ] = n[ right ];
n[ right ] = t;
}
}
pos = right;
t = n[ low ];
Manual for C++ Programming Page 75 of
89
n[ low ] = n[ pos ];
n[ pos ] = t;
return pos;
}
void main( )
{
float num[]={5.4f,3.23f,2.15f,1.09f,34.66f,23.3452f};
int arr[]={-12,23,14,0,245,78,66,-9};
date dtarr[]={date(17,11,62),date(23,12,65),date(12,12,78)
,date(23,1,69)};
mystring strarr[]={mystring("Kamal"),mystring("Anuj"),
mystring("Sachin"),mystring("Anil")};
int i;
cout << endl << endl;
quick( num, 0, 5 );
for( i = 0; i <= 5; i++ )
cout << num[ i ] << endl;
cout << endl << endl;
quick( arr, 0, 7 );
for( i = 0; i <= 7; i++ )
cout << arr[ i ] << endl;
cout << endl << endl;
quick( dtarr, 0, 3 );
for( i = 0; i <= 3; i++ )
cout << dtarr[ i ] << endl;
cout << endl << endl;
quick( strarr, 0, 3 );
for( i = 0; i <= 3; i++ )
cout << strarr[ i ] << endl;
}
Manual for C++ Programming Page 76 of
89
41. Write a program implementing stack and it’s operations using template
class.
#include <iostream.h>
const int MAX = 10;
template<class T>class stack
{
private:
T stk[ MAX ];
int top;
public:
stack( )
{
top = -1;
}
void push( T data )
{
if( top == MAX - 1 )
cout << endl << "Stack is full";
else
{
top++;
stk[ top ] = data;
}
}
T pop( )
{
if( top == -1 )
{
cout << endl << "Stack is empty";
return NULL;
}
else
{
T data = stk[ top ];
top--;
return data;
}
}
} ;
class complex
{
private:
float real,
imag;
public:
complex( float r = 0.0, float i = 0.0 )
{
real = r;
imag = i;
}
friend ostream & operator <<( ostream & o,
complex & c );
Manual for C++ Programming Page 77 of
89
} ;
ostream & operator <<( ostream & o, complex & c )
{
o << c.real << "t" << c.imag;
return o;
}
void main( )
{
stack< int > s1;
s1.push( 10 );
s1.push( 20 );
s1.push( 30 );
cout << endl << s1.pop( );
cout << endl << s1.pop( );
cout << endl << s1.pop( );
stack< float > s2;
s2.push( 3.14 );
s2.push( 6.28 );
s2.push( 8.98 );
cout << endl << s2.pop( );
cout << endl << s2.pop( );
cout << endl << s2.pop( );
complex c1 ( 1.5, 2.5 ),
c2 ( 3.5, 4.5 ),
c3 ( -1.5, -0.6 );
stack< complex > s3;
s3.push( c1 );
s3.push( c2 );
s3.push( c3 );
cout << endl << s3.pop( );
cout << endl << s3.pop( );
cout << endl << s3.pop( );
}
Manual for C++ Programming Page 78 of
89
42. Write a program implementing linked list & some required operations on it
using class template.
#include <string.h>
#include <iostream.h>
class emp
{
private:
char name[ 20 ];
int age;
float sal;
public:
emp( char * n = "", int a = 0, float s = 0.0 )
{
strcpy( name, n );
age = a;
sal = s;
}
friend ostream & operator <<( ostream & s, emp & e );
} ;
ostream operator <<( ostream & s, emp & e )
{
cout << e.name << "t" << e.age << "t" << e.sal;
return s;
}
template<class T>class linklist
{
private:
struct node
{
T data;
node * link;
} * p;
public:
linklist( );
~linklist( );
void append( T );
void addatbeg( T );
void addafter( int, T );
void del( int );
void display( );
int count( );
} ;
template<class T> linklist< T >::linklist( )
{
p = NULL;
}
template<class T> linklist< T >::~linklist( )
{
node * t;
Manual for C++ Programming Page 79 of
89
while( p != NULL )
{
t = p;
p = p->link;
delete t;
}
}
template<class T> void linklist< T >::append( T num )
{
node * q,
* t;
if( p == NULL )
{
p = new node;
p->data = num;
p->link = NULL;
}
else
{
q = p;
while( q->link != NULL )
q = q->link;
t = new node;
t->data = num;
t->link = NULL;
q->link = t;
}
}
template<class T> void linklist< T >::addatbeg( T num )
{
node * q;
q = new node;
q->data = num;
q->link = p;
p = q;
}
template<class T> void linklist< T >::addafter( int c,
T num )
{
node * q,
* t;
int i;
for( i = q, q = p; i <= c; i++ )
{
q = q->link;
if( q == NULL )
{
cout << endl << "There are less than" << c << "element";
return;
}
}
t = new node;
t->data = num;
t->link = q->link;
Manual for C++ Programming Page 80 of
89
q->link = t;
}
template<class T> void linklist< T >::del( int n )
{
node * q,
* r;
int i = 1;
q = p;
if( n == 1 )
{
p = q->link;
delete q;
return;
}
r = q;
while( q != NULL )
{
if( i == n )
{
r->link = q->link;
delete q;
return;
}
r = q;
q = q->link;
i++;
}
cout << endl << "Element" << n << "not found";
}
template<class T> void linklist< T >::display( )
{
node * q;
cout << endl;
for( q = p; q != NULL; q = q->link )
cout << q->data << endl;
}
template<class T> int linklist< T >::count( )
{
node * q;
int c = 0;
for( q = p; q != NULL; q = q->link )
c++;
return ( c );
}
void main( )
{
linklist< int > l1;
cout << endl << "No. of elements in linked list = " << l1.count( );
l1.append( 11 );
l1.append( 22 );
l1.append( 33 );
l1.append( 44 );
l1.append( 55 );
l1.append( 66 );
Manual for C++ Programming Page 81 of
89
l1.addatbeg( 100 );
l1.addatbeg( 200 );
l1.addafter( 3, 333 );
l1.addafter( 4, 444 );
l1.display( );
cout << endl << "No. of elements in linked list=" << l1.count( );
l1.del( 200 );
l1.del( 66 );
l1.del( 0 );
l1.del( 333 );
l1.display( );
cout << endl << "no. of elements in linked list = " << l1.count( );
linklist< emp > l2;
cout << endl << "No. of elements in linked list = " << l2.count( );
emp e1 ( "Sanjay", 23, 1100.00 );
emp e2 ( "Rahul", 33, 3500.00 );
emp e3 ( "Rakesh", 24, 2400.00 );
emp e4 ( "Sanket", 25, 2500.00 );
emp e5 ( "Sandeep", 26, 2600.00 );
l2.append( e1 );
l2.append( e2 );
l2.append( e3 );
l2.append( e4 );
l2.append( e5 );
l2.display( );
l2.del( 3 );
l2.display( );
cout << endl << "No. of elements in linked list = " << l2.count( );
l2.addatbeg( e5 );
l2.display( );
l2.addafter( 3, e1 );
l2.display( );
cout << endl << "No. of elements in linked list = " << l2.count( );
}
Manual for C++ Programming Page 82 of
89
43. Write a program using mouse service routine (0x33 interrupt). The program
should track all mouse activities.
//mouse.cpp
#include <iostream.h>
class mouse
{
private:
union REGS i,
o;
public:
mosue( )
{
initmouse( );
showmouseptr( );
}
void initmouse( )
{
i.x.ax = 0;
int86( 0x33, &i, &o );
}
void showmouseptr( )
{
i.x.ax = 1;
int86( 0x33, *i, &o );
}
void hidemouseptr( )
{
i.x.ax = 2;
int86( 0x33, &i, &o );
}
void getmousepos( int & button, int & x, int & y )
{
i.x.ax = 3;
int86( 0x33, &i, &o );
button = o.x.bx;
x = o.x.cx;
y = o.x.dx;
}
void restrictmouseptr( int x1, int y1, int x2, int y2 )
{
i.x.ax = 7;
i.x.cx = x1;
i.x.dx = x2;
int86( 0x33, &i, &o );
i.x.ax = 8;
i.x.cx = y1;
i.x.dx = y2;
int86( 0x33, &i, &o );
}
} ;
//Virtual.cpp
Manual for C++ Programming Page 83 of
89
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include "mouse.cpp"
#include <fstream.h>
class shapes
{
public:
virtual void draw( )
{
}
virtual void save( ofstream & ft )
{
}
virtual void open( ifstream & fs )
{
}
} ;
class myline:public shapes
{
private:
int sx,
sy,
ex,
ey,
color;
public:
myline( )
{
}
myline( int x1, int y1, int x2, int y2,int clr )
{
sx = x1;
sy = y1;
ex = x2;
ey = y2;
color = clr;
}
void draw( )
{
setcolor( color );
moveto( sx, sy );
lineto( ex, ey );
}
void save( ofstream & ft )
{
ft << "R" << "n";
ft <<sx<<""<<sy<<""<<ex<<""<< ey << "" << color << "n";
}
void open( ifstream & fs )
Manual for C++ Programming Page 84 of
89
{
fs >> sx >> sy >> ex >> ey >> color;
}
} ;
class myrectangle:public shapes
{
private:
int sx,
sy,
ex,
ey,
color;
public:
myrectangle( )
{
}
myrectangle( int x1, int y1, int x2, int y2,int clr )
{
sx = x1;
sy = y1;
ex = x2;
ey = y2;
color = clr;
}
void draw( )
{
setcolor( color );
rectangle( sx, sy, ex, ey );
}
void save( ofstream & ft )
{
ft << "R" << "n";
ft <<sx<<""<<sy<<""<< ex << "" << ey << "" << color << endl;
}
void open( ifstream & fs )
{
fs >> sx >> sy >> ex >> ey >> color;
}
} ;
class mycircle:public shapes
{
private:
int sx,
radius,
color;
public:
mycircle( )
{
}
mycircle( int x1, int y1, int r, int clr )
{
Manual for C++ Programming Page 85 of
89
sx = x1;
sy = y1;
radius = r;
color = clr;
}
void draw( )
{
setcolor( color );
circle( sx, sy, radius );
}
void save( ofstream & ft )
{
ft << "C" << "n";
ft << sx << "" << sy << "" << radius << "" << color << endl;
}
void open( ifstream & fs )
{
fs >> sx >> sy >> radius >> color;
}
} ;
struct node
{
void * obj;
node * link;
} ;
class objarray
{
private:
node * head;
public:
objarray( )
{
head = NULL;
}
void add( void * o )
{
node * temp = new node;
temp->obj = o;
temp->link = NULL;
if( head == NULL )
head = temp;
else
{
node * q;
q = head;
while( q->link != NULL )
q = q->link;
q->link = temp;
}
}
void * getobj( int i )
Manual for C++ Programming Page 86 of
89
{
node * q;
q = head;
int n;
for( n = 1; n < i; n++ )
{
q = q->link;
}
return ( q->obj );
}
int getcount( )
{
int n = 0;
node * q;
q = head;
while( q != NULL )
{
q = q->link;
n++;
}
return n;
}
~objarray( )
{
node * q;
q = head;
while( q != NULL )
{
head = head->link;
delete q;
q = head;
}
}
} ;
void mainscreen( )
{
clearddevice( );
rectangle( 0, 0, 639, 479 );
line( 0, 30, 640, 30 );
char *names[]={"Clear","Open","Save","Line","Rect","Circ",
"Exit"};
int x, i;
for( x = 5, i = 0; x <= 7 * 90; x += 90, i++ )
{
setcolor( WHITE );
rectangle( x, 5, x + 70, 25 );
floodfill( x + 1, 6, WHITE );
settextstyle( 1, 0, 3 );
setcolor( BLACK );
outtextxy( x + 10, 0, names[ i ] );
}
}
void main( )
{
Manual for C++ Programming Page 87 of
89
ifstream fs;
ofstream ft;
int gd = DETECT, gm;
initgraph( &gd, &gm, "c:tcbgi" );
mainscreen( );
setviewport( 1, 31, 638, 478, 1 );
mouse m;
int button,
x,
y,
flag = 0;
int strptx,
strpty,
endptx,
endpty;
objarray arrl
while( 1 )
{
button = 0;
m.getmousepos( button, x, y );
if( ( button & q ) == 1 ) &&(flag==0))
{
for( t = 5, i = 0; t <= 7 * 90; t += 90, i++ )
{
if( x >= t && x <= t + 70 && y >= 5&& y <= 25 )
{
index = i;
flag = 1;
break;
}
}
}
int cirnum = random( 16 );
int sx = random( 638 );
int sy = random( 478 );
int ex = random( 638 );
int ey = random( 478 );
int r = random( 200 );
switch( index )
{
case 0:
m.getmousepos( button, x, y );
if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) )
{
clearviewport( );
flag = 0;
}
break;
case 1:
m.getmousepos( button, x, y );
if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) )
{
fs.open( "output.txt", ios::in );
shapres * ptr;
char a[ 2 ];
while( fs )
Manual for C++ Programming Page 88 of
89
{
fs >> a;
if( strcmp( a, "L" ) == 0 )
{
myline * l = new myline( );
l->open( fs );
arr.add( l );
}
if( strcmp( a, "R" ) == 0 )
{
myrectangle * r = new myrectangle( );
c->open( fs );
arr.add( c );
}
}
fs.close( );
int count = arr.getcount( );
for( int i = 1; i <= count; i++ )
{
ptr = ( shapres * )arr.getobj( i );
ptr->draw( );
}
flag = 0;
}
break;
case 2:
m.getmousepos( button, x, y );
if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) )
{
ft.open( "output.txt", ios::out );
int count = arr.getcount( );
shapres * ptr;
for( i = 1; i <= count; i++ )
{
ptr = ( shapres * )arr.getobj( i );
ptr->save( ft );
}
ft.close( );
flag = 0;
}
break;
case 3:
m.getmousepos( button, x, y );
if( ( ( button & 1 ) == 0 )&& ( flag == 1 ) )
{
setcolor( clrnum );
moveto( sx, sy );
lineto( ex, ey );
myline * l = new myline
( sx, sy,
ex, ey,
clrnum
);
{
if( l == NULL )
exit( 1 );
arr.add( l );
Manual for C++ Programming Page 89 of
89
flag = 0;
}
break;
case 4:
m.getmousepos( button, x, y );
if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) )
{
setcolor( clrnum );
rectangle( sx, sy, ex, ey );
myrectangle * r = new myrectangle( sx, sy,
ex, ey, clrnum );
if( r == NULL )
exit( 1 );
arr.add( r );
flag = 0;
}
break;
case 5:
m.getmousepos( button, x, y );
if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) )
{
setcolor( clrnum );
circle( sx, sy, r );
mycircle *c = new mycircle(sx,sy,r,clrnum );
if( c == NULL )
exit( 1 );
arr.add( c );
flag = 0;
}
break;
}
if( index == 6 )
break;
}
closegraph( );
restorecrtmode( );
}

More Related Content

DOCX
HSc Computer Science Practical Slip for Class 12
PDF
.NET Portfolio
DOCX
OOP Programs
PDF
Oopp Lab Work
DOCX
CS291(C Programming) assignment
PDF
SE-IT JAVA LAB SYLLABUS
PPTX
object oriented programming language in c++
PPT
Classes and objects object oriented programming
HSc Computer Science Practical Slip for Class 12
.NET Portfolio
OOP Programs
Oopp Lab Work
CS291(C Programming) assignment
SE-IT JAVA LAB SYLLABUS
object oriented programming language in c++
Classes and objects object oriented programming

Similar to C++ Lab Maual.pdf (20)

PDF
Object Oriented Programming using C++ PCIT102.pdf
PDF
PRELIM-Lesson-2.pdf
DOCX
I assignmnt(oops)
PDF
C Programming Lab manual 18CPL17
DOCX
Lab manual object oriented technology (it 303 rgpv) (usefulsearch.org) (usef...
PPT
Vedic Calculator
PDF
DAA-LAB-MANFSDSDFSDFSDSDSFDSDAA LAB MANUAL FOR BTECH STUDENTSUAL2020-1.pdf
PDF
c++ referesher 1.pdf
RTF
Cse cpl manual-2016
DOCX
BTE 320-498 Summer 2017 Take Home Exam (200 poi.docx
PDF
CBCS 2018 Scheme I sem Lab Manual for 18CPL17
PDF
Book management system
PDF
A Case studies of common csharp project report.pdf
PDF
Object oriented programming -QuestionBank
PDF
Java conceptual learning material
PDF
66781291 java-lab-manual
PDF
Lab exam question_paper
PPT
Java script
PPTX
PRINCE PRESENTATION(1).pptx
Object Oriented Programming using C++ PCIT102.pdf
PRELIM-Lesson-2.pdf
I assignmnt(oops)
C Programming Lab manual 18CPL17
Lab manual object oriented technology (it 303 rgpv) (usefulsearch.org) (usef...
Vedic Calculator
DAA-LAB-MANFSDSDFSDFSDSDSFDSDAA LAB MANUAL FOR BTECH STUDENTSUAL2020-1.pdf
c++ referesher 1.pdf
Cse cpl manual-2016
BTE 320-498 Summer 2017 Take Home Exam (200 poi.docx
CBCS 2018 Scheme I sem Lab Manual for 18CPL17
Book management system
A Case studies of common csharp project report.pdf
Object oriented programming -QuestionBank
Java conceptual learning material
66781291 java-lab-manual
Lab exam question_paper
Java script
PRINCE PRESENTATION(1).pptx
Ad

Recently uploaded (20)

PPTX
368455847-Relibility RJS-Relibility-PPT-1.pptx
PPTX
Lecture 3b C Library xnxjxjxjxkx_ ESP32.pptx
PPTX
Small Fleets, Big Change: Overcoming Obstacles in the Transition to MHD Elect...
PPTX
Cloud_Computing_ppt[1].pptx132EQ342RRRRR1
PPTX
Advance Module FI 160.pptx para pulsaar 160 y su sistema de encencido
PPTX
internal combustion engine renewable new
PDF
RPL-ASDC PPT PROGRAM NSDC GOVT SKILLS INDIA
PDF
Volvo ec17c specs Service Manual Download
PDF
Life Cycle Analysis of Electric and Internal Combustion Engine Vehicles
PPTX
Applications of SAP S4HANA in Mechanical by Sidhant Vohra (SET23A24040166).pptx
PDF
6. Chapter Twenty_Managing Mass Communications Advertising Sales Promotions E...
PDF
GMPL auto injector molding toollllllllllllllll
PPTX
description of motor equipments and its process.pptx
PPTX
Small Fleets, Big Change: Market Acceleration by Niki Okuk
PDF
Marketing project 2024 for marketing students
PDF
Journal Meraj.pdfuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
PPTX
Independence_Day_Patriotic theme (1).pptx
PDF
How Much does a Volvo EC290C NL EC290CNL Weight.pdf
DOC
EAU-960 COMBINED INJECTION AND IGNITION SYSTEM WITH ELECTRONIC REGULATION.doc
PPTX
Zeem: Transition Your Fleet, Seamlessly by Margaret Boelter
368455847-Relibility RJS-Relibility-PPT-1.pptx
Lecture 3b C Library xnxjxjxjxkx_ ESP32.pptx
Small Fleets, Big Change: Overcoming Obstacles in the Transition to MHD Elect...
Cloud_Computing_ppt[1].pptx132EQ342RRRRR1
Advance Module FI 160.pptx para pulsaar 160 y su sistema de encencido
internal combustion engine renewable new
RPL-ASDC PPT PROGRAM NSDC GOVT SKILLS INDIA
Volvo ec17c specs Service Manual Download
Life Cycle Analysis of Electric and Internal Combustion Engine Vehicles
Applications of SAP S4HANA in Mechanical by Sidhant Vohra (SET23A24040166).pptx
6. Chapter Twenty_Managing Mass Communications Advertising Sales Promotions E...
GMPL auto injector molding toollllllllllllllll
description of motor equipments and its process.pptx
Small Fleets, Big Change: Market Acceleration by Niki Okuk
Marketing project 2024 for marketing students
Journal Meraj.pdfuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
Independence_Day_Patriotic theme (1).pptx
How Much does a Volvo EC290C NL EC290CNL Weight.pdf
EAU-960 COMBINED INJECTION AND IGNITION SYSTEM WITH ELECTRONIC REGULATION.doc
Zeem: Transition Your Fleet, Seamlessly by Margaret Boelter
Ad

C++ Lab Maual.pdf

  • 1. Manual for C++ Programming Page 1 of 89 PRACTICAL MANUAL ON C ++ Mr. Naveen Choudhary Dr. Dharm Singh DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING COLLEGE OF TECHNOLOGY & ENGINEERING (Maharana Pratap University of Agriculture. and Technology, Udaipur)
  • 2. Manual for C++ Programming Page 2 of 89 PRACTICAL MANUAL ON C ++ Mr. Naveen Choudhary Associate Professor & Head Dr. Dharm Singh Assistant Professor 2008 DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING COLLEGE OF TECHNOLOGY & ENGINEERING (Maharana Pratap University of Agriculture. and Technology, Udaipur)
  • 3. Manual for C++ Programming Page 3 of 89 PREFACE The practical manual on “C ++” has been prepared for B.E. Computer Science & Engineering Students. The “C ++” is increasingly becoming the default choice of the IT industry especially industries involved in software development at system level. Therefore, for proper development of “C ++” skills among the students this practical manual has been prepared. The manual contains the exercise programs and their solution for easy & quick understanding of the students. The author has gathered material from Books, Journals and Web resources. We hope that this practical manual will be helpful for students of Computer Science & Engineering for understanding the subject from the point of view of applied aspects There is always scope for improvement in the manual. We would appreciate to receive valuable suggestions from readers and users for future use. Udaipur Mr. Naveen Choudhary Dr. Dharm Singh
  • 4. Manual for C++ Programming Page 4 of 89 TABLE OF CONTENTS S. No. Laboratory Exercises PAGE NO. 1. Write a Program to design a class having static member function named showcount() which has the property of displaying the number of objects created of the class. 8 2. Write a Program using class to process Shopping List for a Departmental Store. The list include details such as the Code No and Price of each item and perform the operations like Adding, Deleting Items to the list and Printing the Total value of a Order. 9 3. Write a Program which creates & uses array of object of a class.( for eg. implementing the list of Managers of a Company having details such as Name, Age, etc..). 11 4. Write a Program to find Maximum out of Two Numbers using friend function. Note: Here one number is a member of one class and the other number is member of some other class. 12 5. Write a Program to swap private data members of classes named as class_1, class_2 using friend function. 13 6. Write a Program to design a class complex to represent complex numbers. The complex class should use an external function (use it as a friend function) to add two complex numbers. The function should return an object of type complex representing the sum of two complex numbers. 14 7. Write a Program using copy constructor to copy data of an object to another object. 15 8. Write a Program to allocate memory dynamically for an object of a given class using class’s constructor. 16 9. Write a Program to design a class to represent a matrix. The class should have the functionality to insert and retrieve the elements of the matrix. 17 10. Write a program to design a class representing complex numbers and having the functionality of performing addition & multiplication of two complex numbers using operator overloading. 18 11. Write a Program to overload operators like *, <<, >> using friend function. The following overloaded operators should work for a class vector. 21 12. Write a program for developing a matrix class which can handle integer matrices of different dimensions. Also overload the operator for addition, multiplication & comparison of matrices. 22
  • 5. Manual for C++ Programming Page 5 of 89 13. Write a program to overload new/delete operators in a class. 25 14. Write a program in C++ to highlight the difference between overloaded assignment operator and copy constructor. 28 15. Write a Program illustrating how the constructors are implemented and the order in which they are called when the classes are inherited. Use three classes named alpha, beta, gamma such that alpha, beta are base class and gamma is derived class inheriting alpha & beta. 29 16. Write a Program to design a student class representing student roll no. and a test class (derived class of student) representing the scores of the student in various subjects and sports class representing the score in sports. The sports and test class should be inherited by a result class having the functionality to add the scores and display the final result for a student. 30 17. Write a program to maintain the records of person with details (Name and Age) and find the eldest among them. The program must use this pointer to return the result. 32 18. Write a Program to illustrate the use of pointers to objects which are related by inheritance. 33 19. Write a program illustrating the use of virtual functions in class. 34 20. Write a program to design a class representing the information regarding digital library (books, tape: book & tape should be separate classes having the base class as media). The class should have the functionality for adding new item, issuing, deposit etc. the program should use the runtime polymorphism. 35 21. Write a program to show conversion from string to int and vice-versa. 37 22. Write a program showing data conversion between objects of different classes. 38 23. Write a program showing data conversion between objects of different classes and conversion routine should reside in destination class. 40 24. Write a program implementing basic operation of class ios i.e. setf, unsetf, precision etc. 42 25. Write a program to implement I/O operations on characters. I/O operations includes inputting a string, Calculating length of the string, Storing the string in a file, fetching the stored characters from it, etc. 44
  • 6. Manual for C++ Programming Page 6 of 89 26. Write a program to copy the contents of one file to another. 45 27. Write a program to perform read/write binary I/O operation on a file (i.e. write the object of a structure/class to file). 46 28. Write a program to maintain a elementary database of employees using files. 47 29. Write a program for reading and writing data to and from the file using command line arguments. 51 30. Write a program showing implementation of stack class having the functionality of push, pop operations. 53 31. Write program to implement a queue class with required operations/ functions. 54 32. Write a program to implement circular queue class with required operations/ functions. 56 33. Write a program implementing linked list as a class. Also Perform some required operations like inserting, deleting nodes & display the contents of entire linked list. 58 34. Write a program implementing stack & its operations using dynamic memory allocation. 61 35. Write a program implementing Queue stack & its operations using dynamic memory allocation. 63 36. Write a program to implement Binary search tree using class and traverse the tree using any traversal scheme. In addition to it the class must have capability to copy the contents from one tree to another and compare the contents of two binary trees. 65 37. Write a program to implement the exception handling with multiple catch statements. 69 38. Write a program to implement the exception handling with re throwing in exception. 70
  • 7. Manual for C++ Programming Page 7 of 89 39. Write a program to implement the exception handling with the functionality of testing the throw restrictions. 71 40. Write a function template that will sort an array of implicit types like int, float, char etc. it can also sort user-defined objects like strings & date. The necessary classes contains overloading of operators. 72 41. Write a program implementing stack and it’s operations using template class. 76 42. Write a program implementing linked list & some required operations on it using class template 78 43. Write a program using mouse service routine (0x33 interrupt). The program should track all mouse activities. 82
  • 8. Manual for C++ Programming Page 8 of 89 1. Write a Program to design a class having static member function named showcount() which has the property of displaying the number of objects created of the class. #include<iostream.h> #include<conio.h> class test { int code; static int count; public: void setcode(void) { code = ++count; } void showcode(void) { cout<<"object number:"<<code<<"n"; } static void showcount(void) { cout<<"count:"<<count<<"n"; } }; int test :: count; int main() { test t1,t2; t1.setcode(); t2.setcode(); test :: showcount(); test t3; t3.setcode(); test :: showcount(); t1.showcode(); t2.showcode(); t3.showcode(); return 0; }
  • 9. Manual for C++ Programming Page 9 of 89 2. Write a Program using class to process Shopping List for a Departmental Store. The list include details such as the Code No and Price of each item and perform the operations like Adding, Deleting Items to the list and Printing the Total value of a Order. #include<iostream.h> const m=50; class ITEMS { int itemCode[m]; float itemPrice[m]; int count; public: void CNT(void){count=0;} void getitem(void); void displaySum(void); void remove(void); void displayItems(void); }; void ITEMS :: getitem(void) { cout<<"Enter item code"; cin>>itemCode[count]; cout<<"Enter Item cost"; cin>>itemPrice[count]; count++; } void ITEMS :: displaySum(void) { float sum=0; for(int i=0;i<count;i++) sum=sum+itemPrice[i]; cout<<"n Total Value:"<<sum<<"n"; } void ITEMS :: remove(void) { int a; cout<<"Enter Item Code"; cin>>a; for(int i=0;i<count;i++) if(itemCode[i] == a) itemPrice[i]=0; } void ITEMS :: displayItems(void) { cout<<"n Code Pricen"; for(int i=0;i<count;i++) { cout<<"n"<<itemCode[i]; cout<<" "<<itemPrice[i]; } cout<<"n"; } int main()
  • 10. Manual for C++ Programming Page 10 of 89 { ITEMS order; order.CNT(); int x; do { cout<<"n You can do the following;" <<"Enter appropriate numbern"; cout<<"n1 : Add an Item"; cout<<"n2 : Display Total Value"; cout<<"n3 : Delete an Item"; cout<<"n4 : Display all items"; cout<<"n5 : Quit"; cout<<"nn What is your option?"; cin>>x; switch(x) { case 1 : order.getitem(); break; case 2 : order.displaySum(); break; case 3 : order.remove(); break; case 4 : order.displayItems(); break; default : cout<<"Error in input"; } }while(x!=5); return 0; }
  • 11. Manual for C++ Programming Page 11 of 89 3. Write a Program which creates & uses array of object of a class.( for eg. implementing the list of Managers of a Company having details such as Name, Age, etc..). #include<iostream.h> #include<conio.h> class employee { char name [30]; float age; public: void getdata(void); void putdata(void); }; void employee :: getdata(void) { cout<<"Enter Name"; cin>>name; cout<<"Enter Age"; cin>>age; } void employee :: putdata(void) { cout<<"Name:"<<name<<"n"; cout<<"Age: "<<age<<"n"; } const int size=3; int main() { employee manager[size]; for(int i=0; i<size; i++) { cout<<"n Details of manager"<<i+1<<"n"; manager[i].getdata(); } cout<<"n"; for(i=0; i<size; i++) { cout<<"n Manager"<<i+1<<"n"; manager[i].putdata(); } return 0; }
  • 12. Manual for C++ Programming Page 12 of 89 4. Write a Program to find Maximum out of Two Numbers using friend function. Note: Here one number is a member of one class and the other number is member of some other class. #include<iostream.h> #include<conio.h> class ABC; class XYZ { int x; public: void setvalue(int i) { x=i; } friend void max(XYZ, ABC); }; class ABC { int a; public: void setvalue(int i) { a=i; } friend void max(XYZ, ABC); }; void max (XYZ m, ABC n) { if(m.x>=n.a) cout<<m.x; else cout<<n.a; } int main() { ABC abc; abc.setvalue(10); XYZ xyz; xyz.setvalue(20); max(xyz,abc); return 0; }
  • 13. Manual for C++ Programming Page 13 of 89 5. Write a Program to swap private data members of classes named as class_1, class_2 using friend function. #include<iostream.h> #include<conio.h> class class_2; class class_1 { int value1; public: void indata(int a) { value1=a; } void display(void) { cout<<value1<<"n"; } friend void exchange(class_1 &, class_2 &); }; class class_2 { int value2; public: void indata(int a) { value2=a; } void display(void) { cout<<value2<<"n"; } friend void exchange(class_1 &, class_2 &); }; void exchange(class_1 &x, class_2 &y) { int temp = x.value1; x.value1 = y.value2; y.value2 = temp; } int main() { class_1 C1; class_2 C2; C1.indata(100); C2.indata(200); cout<<"Values before exchange"<<"n"; C1.display(); C2.display(); exchange(C1, C2); cout<<"Values after exchange"<<"n"; C1.display(); C2.display(); return 0; }
  • 14. Manual for C++ Programming Page 14 of 89 6. Write a Program to design a class complex to represent complex numbers. The complex class shuold use an external function (use it as a friend function) to add two complex numbers.The function should return an object of type complex representing the sum of two complex numbers. #include<iostream.h> #include<conio.h> class complex { float x; float y; public: void input(float real, float img) { x=real; y=img; } friend complex sum(complex, complex); void show(complex); }; complex sum(complex c1, complex c2) { complex c3; c3.x = c1.x + c2.x; c3.y = c1.y + c2.y; return (c3); } void complex :: show(complex c) { cout<<c.x<<"+j"<<c.y<<"n"; } int main() { complex A,B,C; A.input(3.1, 5.65); B.input(2.75, 1.2); C=sum(A,B); cout<<"A="; A.show(A); cout<<"B="; B.show(B); cout<<"C="; C.show(C); return 0; }
  • 15. Manual for C++ Programming Page 15 of 89 7. Write a Program using copy constructor to copy data of an object to another object. #include<iostream.h> #include<conio.h> class code { int id; public: code(){} code(int a) { id = a; } code(code & x) { id = x.id; } void display(void) { cout<<id; } }; int main() { code A(100); code B(A); code C = A; code D; D = A; cout<<"n id of A:"; A.display(); cout<<"n id of B:"; B.display(); cout<<"n id of C:"; C.display(); cout<<"n id of D:"; D.display(); return 0; }
  • 16. Manual for C++ Programming Page 16 of 89 8. Write a Program to allocate memory dynamically for an objects of a given class using class’s constructor. #include<iostream.h> #include<string.h> #include<conio.h> class String { char *name; int length; public: String() { length = 0; name = new char[length +1]; } String (char *s) { length = strlen(s); name= new char[length + 1]; strcpy(name, s); } void display(void) { cout<<name<<"n"; } void join(String &a, String &b); }; void String :: join (String &a, String &b) { length = a.length + b.length; delete name; name = new char [length + 1]; strcpy(name,a.name); strcat(name, b.name); }; int main() { char *first = "Joseph"; String name1(first), name2("Louis "), name3("Lagrange"),s1,s2; s1.join(name1, name2); s2.join(s1, name3); name1.display(); name2.display(); name3.display(); s1.display(); s2.display(); return 0; }
  • 17. Manual for C++ Programming Page 17 of 89 9. Write a Program to design a class to represent a matrix. The class should have the functionality to insert and retrieve the elements of the matrix. #include<iostream.h> class matrix { int **p; int d1,d2; public: matrix(int x, int y); void get_element(int i, int j, int value) { p[i][j]=value; } int & put_element(int i, int j) { return p[i][j]; } }; matrix ::matrix(int x, int y) { d1 = x; d2 = y; p = new int *[d1]; for(int i = 0; i < d1; i++) p[i] = new int[d2]; } int main() { int m, n; cout<<"Enter size of matrix"; cin>>m>>n; matrix A(m,n); cout<<"Enter Matrix Element row by row:"; int i,j,value; for(i=0;i<m;i++) for(j=0;j<n;j++) { cin>>value; A.get_element(i,j,value); } cout<<"n"; cout<<A.put_element(1,2); return 0; }
  • 18. Manual for C++ Programming Page 18 of 89 10. Write a program to design a class representing complex numbers and having the functionality of performing addition & multiplication of two complex numbers using operator overloading. #include <iostream.h> class complex { private: float real, imag; public: complex( ) { } complex( float r, float i ) { real = r; imag = i; } void getdata( ) { float r, i; cout << endl << "Enter real and imaginary part "; cin >> r >> i; real = r; imag = i; } void setdata( ) { real = r; imag = i; } void displaydata( ) { cout << endl << "real = " << real; cout<<endl<<Imaginary = "<<imag; } complex operator +( complex c ) { complex t; t.real = real + c.real; t.imag = imag + c.imag; } complex operator *( complex c ) { complex t; t.real = real * c.real - imag * c.imag; t.imag = real * c.imag + c.real * imag; return t; } } ; void main( ) {
  • 19. Manual for C++ Programming Page 19 of 89 complex c1, c2 ( 1.2, -2.5 ), c3, c4; c1.setdata( 2.0, 2.0 ); c3 = c1 + c2; c3.displaydata( ); c4.getdata( ); complex c5 ( 2.5, 3.0 ), c6; c6 = c4 * c5; c6.displaydata( ); complex c7; c7 = c1 + c2 * c3; c7.displaydata( ); }
  • 20. Manual for C++ Programming Page 20 of 89 11. Write a Program to overload operators like *, <<, >> using friend function. The following overloaded operators should work for a class vector. #include<iostream.h> #include<conio.h> const size = 3; class vector { int v[size]; public: vector(); vector(int *x); friend vector operator *(int a, vector b); friend vector operator *(vector b, int a); friend istream & operator >>(istream &, vector &); friend ostream & operator <<(ostream &, vector &); }; vector ::vector() { for(int i=0;i<size;i++) v[i]=0; } vector :: vector(int *x) { for(int i=0; i<size; i++) v[i] = x[i]; } vector operator *(int a, vector b) { vector c; for(int i=0; i<size; i++) c.v[i] = a * b.v[i]; return c; } vector operator *(vector b, int a) { vector c; for(int i=0; i<size; i++) c.v[i] = b.v[i] * a; return c; } istream & operator >> (istream &din, vector &b) { for(int i=0; i<size; i++) din>>b.v[i]; return(din); } ostream & operator << (ostream &dout, vector &b) {
  • 21. Manual for C++ Programming Page 21 of 89 dout<<"("<<b.v [0]; for(int i=1; i<size; i++) dout<<","<<b.v[i]; dout<<")"; return(dout); } int x[size] = {2,4,6}; int main() { vector m; vector n = x; cout<<"Enter Elements of vector m"<<"n"; cin>>m; cout<<"n"; cout<<"m="<<m<<"n"; vector p,q; p = 2 * m; q = n * 2; cout<<"n"; cout<<"p="<<p<<"n"; cout<<"q="<<q<<"n"; return 0; }
  • 22. Manual for C++ Programming Page 22 of 89 12. Write a program for developing a matrix class which can handle integer matrices of different dimensions. Also overload the operator for addition, multiplication & comparison of matrices. #include <iostream.h> #include <iomanip.h> class matrix { int maxrow, maxcol; int * ptr; public: matrix( int r, int c ) { maxrow = r; maxcol = c; ptr = new int [r * c]; } void getmat( ) { int i,j, mat_off,temp; cout << endl << "enter elements matrix:" << endl; for( i = 0; i < maxrow; i++ ) { for( j = 0; j < maxcol; j++ ) { mat_off = i * maxcol + j; cin >> ptr[ mat_off ]; } } } void printmat( ) { int i, j, mat_off; for( i = 0; i < maxrow; i++ ) { cout << endl; for( j = 0; j < maxcol; j++ ) { mat_off = i * maxcol + j; cout << setw( 3 ) << ptr[ mat_off ]; } } } int delmat( ) { matrix q ( maxrow - 1, maxcol - 1 ); int sign = 1, sum = 0, i, j,k,count; int newsize,newpos,pos,order; order = maxrow; if( order == 1 ) { return ( ptr[ 0 ] ); } for( i = 0; i < order; i++, sign *= -1 ) { for( j = 1; j < order; j++ ) { for( k = 0, count = 0; k < order; k++ )
  • 23. Manual for C++ Programming Page 23 of 89 { if( k == i ) continue; pos = j * order + k; newpos = ( j - 1 ) * ( order - 1 ) + count; q.ptr[ newpos ] = ptr[ pos ]; count++; } } sum = sum + ptr[ i ] * sign * q.delmat( ); } return ( sum ); } matrix operator +( matrix b ) { matrix c ( maxrow, maxcol ); int i,j,mat_off; for( i = 0; i < maxrow; i++ ) { for( j = 0; j < maxcol; j++ ) { mat_off = i * maxcol + j; c.ptr[ mat_off ] = ptr[ mat_off ] + b.ptr[ mat_off ]; } } return ( c ); } matrix operator *( matrix b ) { matrix c ( b.maxcol, maxrow ); int i,j,k,mat_off1, mat_off2, mat_off3; for( i = 0; i < c.maxrow; i++ ) { for( j = 0; j < c.maxcol; j++ ) { mat_off3 - i * c.maxcol + j; c.ptr[ mat_off3 ] = 0; for( k = 0; k < b.maxrow; k++ ) { mat_off2 = k * b.maxcol + j; mat_off1 = i * maxcol + k; c.ptr[mat_off3]+=ptr[mat_off1]* b.ptr[mat_off2 ]; } } } return ( c ); } int operator ==( matrix b ) { int i,j, mat_off; if( maxrow != b.maxrow || maxcol != b.maxcol ) return ( 0 ); for( i = 0; i < maxrow; i++ ) { for( j = 0; j < maxcol; j++ ) { mat_off = i * maxcol + j; if( ptr[ mat_off ]
  • 24. Manual for C++ Programming Page 24 of 89 != b.ptr[ mat_off ] ) return ( 0 ); } } return ( 1 ); } } ; void main( ) { int rowa, cola, rowb, colb; cout << endl << "Enter dimensions of matrix A "; cin >> rowa >> cola; matrix a ( rowa, cola ); a.getmat( ); cout << endl << "Enter dimensions of matrix B"; cin >> rowb >> colb; matrix b ( rowb, colb ); b.getmat( ); matrix c ( rowa, cola ); c = a + b; cout << endl << "The sum of two matrics = "; c.printmat( ); matrix d ( rowa, colb ); d = a * b; cout << endl << "The product of two matrics = "; d.printmat( ); cout << endl << "Determinant of matrix a =" << a.delmat( ); if( a == b ) cout << endl << "a & b are equal"; else cout << endl << "a & b are not equal"; }
  • 25. Manual for C++ Programming Page 25 of 89 13. Write a program to overload new/delete operators in a class. #include <iostream.h> #include <stdlib.h> #include <string.h> #include <new.h> const int MAX = 5; const int FREE = 0; const int OCCUPIED = 1; void memwarning( ) { cout << endl << "Free store has now gone empty"; exit( 1 ); } class employee { private: char name[ 20 ]; int age; float sal; public: void *operator new(size_t bytes) void operator delete( void * q ); void setdata( char * n, int a, float s ); void showdata( ); ~employee( ); } ; struct pool { employee obj; int status; } ; int flag = 0; struct pool * p = NULL; void * employee::operator new( size_t sz ) { int i; if( flag == 0 ) { p = ( pool * )malloc( sz * MAX ); if( p == NULL ) memwarning( ); for( i = 0; i < MAX; i++ ) p[ i ].status = FREE; flag = 1; p[ 0 ].status = OCCUPIED; return &p[ 0 ].obj; } else { for( i = 0; i < MAX; i++ )
  • 26. Manual for C++ Programming Page 26 of 89 { if( p[ i ].status = FREE ) { p[ i ].status = OCCUPIED; return &p[ i ].obj; } } memwarning( ); } } void employee::operator delete( void * q ) { if( q == NULL ) return; for( int i = 0; i < MAX; i++) { if( q == &p[ i ].obj ) { p[ i ].status = FREE; strcpy( p[ i ].obj.name, "" ); p[ i ].obj.age = 0; p[ i ].obj.sal = 0.0; } } } void employee::setdata( char * n, int a, float s ) { strcpy( name, n ); age = a; sal = s; } void employee::showdata( ) { cout << endl << name << "t" << age << "t" << sal; } employee::~employee( ) { cout << endl << "reached destructor"; free( p ); } void main( ) { void memwarning( ); set_new_handler( memwarning ); employee * e1,*e2,*e3,*e4,*e5,*e6; e1 = new employee; e1->setdata( "ajay", 23, 4500.50 ); e2 = new employee; e2->setdata( "amol", 25, 5500.50 ); e3 = new employee; e3->setdata( "anil", 26, 3500.50 );
  • 27. Manual for C++ Programming Page 27 of 89 e4 = new employee; e4->setdata( "anuj", 30, 6500.50 ); e5 = new employee; e5->setdata( "atul", 23, 4200.50 ); e1->showdata( ); e2->showdata( ); e3->showdata( ); e4->showdata( ); e5->showdata( ); delete e4; delete e5; e4->showdata( ); e5->showdata( ); e4 = new employee; e5 = new employee; e6 = new employee; cout << endl << "Done!!"; }
  • 28. Manual for C++ Programming Page 28 of 89 14. Write a program in C++ to highlight the difference between overloaded assignment operator and copy constructor. #include <iostream.h> class circle { private: int radius; float x, y; public: circle( ) { } circle( int rr, float xx, float yy ) { radius = rr; x = xx; y = yy; } circle operator =( circle & c ) { cout << endl << "Assignment operator invoked"; radiius = c.radius; x = c.x; y = c.y; return circle( radius, x, y ); } circle( circle & c ) { cout << endl << "copy constructor invoked"; radius = c.radius; x = c.x; y = c.y; } void showdata( ) { cout << endl << "Radius = " << radius; cout << endl << "X-Coordinate=" << x; cout << endl << "Y-Coordinate=" << y; } } ; void main( ) { circle c1 ( 10, 2.5, 2.5 ); circle c2,c4; c4 = c2 = c1; circle c3 = c1; c1.showdata( ); c2.showdata( ); c3.showdata( ); c4.showdata( ); }
  • 29. Manual for C++ Programming Page 29 of 89 15. Write a Program illustrating how the constructors are implemented and the order in which they are called when the classes are inherited. Use three classes named alpha, beta, gamma such that alpha,beta are base class and gamma is derived class inheriting alpha & beta #include<iostream.h> #include<conio.h> class alpha { int x; public: alpha(int i) { x = i; cout<<"alpha initializedn"; } void show_x(void) { cout<<"x="<<x<<"n"; } }; class beta { float y; public: beta(float j) { y=j; cout<<"beta initializedn"; } void show_y(void) { cout<<"y= "<<y<<"n"; } }; class gamma : public beta, public alpha { int m,n; public: gamma(int a, float b, int c, int d): alpha(a), beta(b) { m = c; n = d; cout<<"gamma initializedn"; } void show_mn(void){ cout<<"m="<<m<<"n"; cout<<"n="<<n<<"n"; } }; void main() { gamma g(5, 10.75, 20, 30); g.show_x(); g.show_y(); g.show_mn(); }
  • 30. Manual for C++ Programming Page 30 of 89 16. Write a Program to design a stuent class representing student roll no. and a test class (derived class of student) representing the scores of the student in various subjects and sports class representing the score in sports. The sports and test class should be inherited by a result class having the functionality to add the scores and display the final result for a student. #include<iostream.h> class student { protected: int roll_number; public: void get_number(int a) { roll_number = a; } void put_number(void) { cout<<"Roll No:"<<roll_number<<"n"; } }; class test : public student { protected: float part1, part2; public: void get_marks(float x, float y) { part1 = x; part2 = y; } void put_marks(void) { cout<<"Marks obtained"<<"n" <<"part1 ="<<part1<<"n" <<"part2 ="<<part2<<"n"; } }; class sports { protected: float score; public: void get_score(float s) { score = s; } void put_score(void)
  • 31. Manual for C++ Programming Page 31 of 89 { cout<<"Sports wt:"<<score<<"nn"; } }; class result : public test, public sports { float total; public: void display(void); }; void result ::display(void) { total = part1 + part2 + score; put_number(); put_marks(); put_score(); cout<<"Total Score:"<<total<<"n"; } int main() { result student_1; student_1.get_number (1234); student_1.get_marks (27.5, 33.0); student_1.get_score (6.0); student_1.display (); return 0; }
  • 32. Manual for C++ Programming Page 32 of 89 17. Write a program to maintain the records of person with details (Name and Age) and find the eldest among them. The program must use this pointer to return the result. #include<iostream.h> #include<string.h> class person { char name[20]; float age; public: person(char *s, float a) { strcpy(name, s); age = a; } person & person :: greater(person & x) { if(x.age >= age) return x; else return *this; } void display(void) { cout<<"Name:"<<name<<"n" <<"Age: "<<age<<"n"; } }; int main() { person p1("John", 37.50), p2("Ahmed",29.0), p3("Hebber", 40.5); person p = p1.greater (p3); cout<<"Elder Person is:n"; p.display(); p = p1.greater (p2); cout<<"Elder Person is:n"; p.display(); return 0; }
  • 33. Manual for C++ Programming Page 33 of 89 18. Write a Program to illustrate the use of pointers to objects whch are related by inheritance. #include<iostream.h> class BC { public: int b; void show() { cout<<"b="<<b<<"n"; } }; class DC : public BC { public: int d; void show() { cout<<"b="<<b<<"n" <<"d="<<d<<"n"; } }; int main() { BC *bptr; BC base; bptr = &base; bptr->b = 100; cout<<"bptr points to base objectn"; bptr->show (); DC derived; bptr = &derived; bptr->b = 200; cout<<"bptr now points to derived objectn"; bptr->show (); DC *dptr; dptr = &derived; dptr->d = 300; cout<<"dptr is derived type pointern"; dptr->show (); cout<<"Using ((DC *)bptr)n"; ((DC *)bptr)->d = 400; ((DC *)bptr)->show (); return 0; }
  • 34. Manual for C++ Programming Page 34 of 89 19. Write a program illustrating the use of virtual functions in class. #include<iostream.h> class Base { public: void display() { cout<<"n Display Base"; } virtual void show() { cout<<"n Show Base:"; } }; class Derived : public Base { public: void display() { cout<<"n Display Derived"; } void show() { cout<<"n Show Derived"; } }; int main() { Base B; Derived D; Base *bptr; cout<<"n bptr points to Basen"; bptr = &B; bptr ->display (); bptr ->show (); cout<<"nn bptr points to derivedn"; bptr = &D; bptr ->display (); bptr ->show (); return 0; }
  • 35. Manual for C++ Programming Page 35 of 89 20. Write a program to design a class representing the information regarding digital library (books, tape: book & tape should be separate classes having the base class as media ). The class should have the functionality for adding new item, issuing, deposit etc. the program should use the runtime polymorphism. #include<iostream.h> #include<string.h> class media { protected: char title[50]; float price; public: media(char *s, float a) { strcpy(title, s); price = a; } virtual void display(){} }; class book : public media { int pages; public: book(char *s, float a, int p) : media(s,a) { pages = p; } void display(); }; class tape : public media { float time; public: tape(char * s, float a, float t):media(s,a) { time =t; } void display(); }; void book ::display() { cout<<"n Title:"<<title; cout<<"n Pages:"<<pages; cout<<"n Price:"<<price; } void tape ::display () { cout<<"n Title:"<<title; cout<<"n Play Time:"<<time<<"mins"; cout<<"n Price:"<<price; } int main()
  • 36. Manual for C++ Programming Page 36 of 89 { char * title = new char[30]; float price, time; int pages; cout<<"n Enter Book Details n"; cout<<"n Title:"; cin>>title; cout<<"n Price:"; cin>>price; cout<<"n Pages:"; cin>>pages; book book1(title, price, pages); cout<<"n Enter Tape Details"; cout<<"n Title:"; cin>>title; cout<<"n Price:"; cin>>price; cout<<"n Play Times(mins):"; cin>>time; tape tape1(title, price, time); media* list[2]; list[0] = &book1; list[1] = &tape1; cout<<"n Media Details"; cout<<"n..............Book....."; list[0]->display (); cout<<"n..............Tape....."; list[1]->display (); return 0; }
  • 37. Manual for C++ Programming Page 37 of 89 21. write a program to show conversion from string to int and vice-versa. #include <iostream.h> #include <stdlib.h> #include <string.h> class string { private: char str[ 20 ]; public: string( ) { str[ 0 ] = '0'; } string( char * s ) { strcpy( str, s ); } string( int a ) { itoa( a, str, 10 ); } operator int( ) { int i = 0, l, ss = 0, k = 1; l = strlen( str ) - 1; while( l >= 0 ) { ss = ss + ( str[ l ] - 48 ) * k; l--; k *= 10; } return ( ss ); } void displaydata( ) { cout << str; } } ; void main( ) { string s1 = 123; cout << endl << "s1="; s1.displaydata( ); s1 = 150; cout << endl << "s1="; s1.displaydata( ); string s2 ( "123" ); int i = int( s2 ); cout << endl << "i=" << i; string s3 ( "456" ); i = s3; cout << endl << "i=" << i; }
  • 38. Manual for C++ Programming Page 38 of 89 22. Write a program showing data conversion between objects of different classes. #include <iostream.h> #include <stdlib.h> #include <string.h> class date { private: char dt[ 9 ]; public: date( ) { dt[ 0 ] = '0'; } date( char * s ) { strcpy( dt, s ); } void displaydata( ) { cout << dt; } } ; class dmy { private: int day, mth, yr; public: dmy( ) { day = mth = yr = 0; } dmy( int d, int m, int y ) { day = d; mth = m; yr = y; } ; operator date( ) { char temp[ 3 ], str[ 9 ]; itoa( day, str, 10 ); strcat( str, "/" ); itoa( mth, temp, 10 );
  • 39. Manual for C++ Programming Page 39 of 89 strcat( str, temp ); strcat( str, "/" ); itoa( yr, temp, 10 ); strcat( str, temp ); return ( date( str ) ); } void displaydata( ) { cout << day << "t" << mth << "t" << yr; } } ; void main( ) { date d1; dmy d2 ( 17, 11, 94 ); d1 = d2; cout<,endl<<"d1="; d1.displaydata( ); cout << endl << "d2="; d2.displaydata( ); }
  • 40. Manual for C++ Programming Page 40 of 89 23. Write a program showing data conversion between objects of different classes and conversion routine should reside in destination class. #include <iostream.h> #include <string.h> #include <stdlib.h> class dmy { int day, mth, yr; public: dmy( ) { day = mth, yr = 0; } dmy( int d, int m, int y ) { day = d; mth = m; yr = y; } int getday( ) { return ( day ); } int getmth( ) { return ( mth ); } int getyr( ) { return ( yr ); } void displaydata( ) { cout << day << "t" << mth << "t" << yr; } } ; class date { private: char dt[ 9 ]; public: date( ) { dt[ 0 ] = '0'; } date( char * s ) { strcpy( dt, s );
  • 41. Manual for C++ Programming Page 41 of 89 } void displaydata( ) { cout << dt; } date( dmy t ) { int d = t.getday( ); int m = t.getmth( ); int y = t.getyr( ); char temp[ 3 ]; itoa( d, dt, 10 ); strcat( dt, "t" ); itoa( m, temp, 10 ); strcat( dt, temp ); strcat( dt, "/" ); itoa( y, temp, 10 ); strcat( dt, temp ); } } ; void main( ) { date d1; dmy d2 ( 17, 11, 94 ); d1 = d2; cout << endl << "d1="; d1.displaydata( ); cout << endl << "d2="; d2.displaydata( ); }
  • 42. Manual for C++ Programming Page 42 of 89 24. Write a program implementing basic operation of class ios i.e. setf,unsetf,precision etc. #include <iostream.h> #include <conio.h> void main( ) { int i = 52; float a = 425.0; float b = 123.500328; char str[ ] = "Dream. Then make it happend!"; clrscr( ); cout.setf( ios::unitbuf ); cout.setf( ios::stdio ); cout.setf( ios::showpos ); cout << i << endl; cout.setf( ios::showbase ); cout.setf( ios::uppercase ); cout.setf( ios::hex, ios::basefield ); cout << i << endl; cout.setf( ios::oct, ios::basefield ); cout << i << endl; cout.fill( '0' ); cout << "Fill character " << cout.fill( ) << endl; cout.setf( ios::dec, ios::basefield ); cout.width( 10 ); cout << i << endl; cout << setf( ios::left, ios::adjustfield ); cout.width( 10 ); cout << i << endl; cout.setf( ios::internal, ios::adjustfield ); cout.width( 10 ); cout << endl; cout << endl; cout.width( 10 ); cout << str << endl; cout.width( 40 ); cout.setf( ios::left, ios::adjustfield ); cout.width( 40 ); cout << str << endl; cout.precision( 6 ); cout << "Precision" << cout.precision( ); cout.setf( ios::showpoint ); cout.unsetf( ios::showpos );
  • 43. Manual for C++ Programming Page 43 of 89 cout << endl << a; cout.unsetf( ios::showpoint ); cout << endl << a; cout.setf( ios::fixed, ios::floatfield ); cout << endl << b; cout.setf( ios::scientific, ios::floatfield ); cout << endl << b; b = 5.375; cout.precision( 14 ); cout.setf( ios::fixed, ios::floatfield ); cout << endl << b; cout.setf( ios::scientific, ios::floatfield ); cout << endl << b; cout.unsetf( ios::showpoint ); cout.unsetf( ios::unitbuf ); cout.unsetf( ios::stdio ); }
  • 44. Manual for C++ Programming Page 44 of 89 25. Write a program to implement I/O operations on characters. I/O operations includes inputing a string, Calculating length of the string, Storing the String in a file, fetching the stored characters from it, etc. #include<iostream.h> #include<fstream.h> #include<string.h> int main() { char string[80]; cout<<"Enter a String n"; cin>>string; int len = strlen(string); fstream file; file.open("TEXT", ios::in | ios::out); for(int i=0;i<len;i++) file.put(string[i]); file.seekg(0); char ch; while(file) { file.get(ch); cout<<ch; } return 0; }
  • 45. Manual for C++ Programming Page 45 of 89 26. Write a program to copy the contents of one file to another. #include <fstream.h> void main( ) { char cource[ 67 ], target[ 67 ]; char ch; cout << endl << "Enter source filename"; cin >> source; cout << endl << "Enter target filename"; cin >> target; ifstream infile ( source ); ofstream outfile ( target ); while( infile ) { infile.get( ch ); outfile.put( ch ); } }
  • 46. Manual for C++ Programming Page 46 of 89 27. Write a program to perform read/write binary I/O operation on a file (i.e. write the object of a structure/class to file). #include <fstream.h> void main( ) { struct employee { char name[ 20 ]; int age; float basic; float gross; } ; employee e; char ch = 'Y'; ofstream outfile; outfile.open( "EMPLOYEE.DAT", ios::out | ios::binary ); while( ch == 'Y' ) { cout << endl << "Enter a record"; cin >> e.name >> e.age >> e.basic >> e.gross; outfile.write( ( char * )&e, sizeof( e ) ); cout << endl << "Add Another Y/N"; cin >> ch; } outfile.close( ); ifstream infile; infile.open( "EMPLOYEE.DAT", ios::in | ios::binary ); while( infile.read( ( char * )&e, sizeof( e ) ) ) { cout << endl << e.name << "t" << e.age << "t" << e.basic << "t" << e.gross; } }
  • 47. Manual for C++ Programming Page 47 of 89 28. Write a program to maintain a elementary database of employees using files. #include <fstream.h> #include <conio.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <iomanip.h> class group { private: struct person { char flag; char empcode[ 5 ]; char name[ 40 ]; int age; float sal; } p; fstream file; public: group( ); void addrec( ); void listrec( ); void modirec( ); void delrec( ); void recallrec( ); void packrec( ); void exit( ); } ; void main( ) { char choice; group g; do { clrscr( ); gotoxy( 30, 10 ); cout << "1. Add records"; gotoxy( 30, 11 ); cout << "2. List records"; gotoxy( 30, 12 ); cout << "3. Modify records"; gotoxy( 30, 13 ); cout << "4. Delete records"; gotoxy( 30, 14 ); cout << "5. Recall records"; gotoxy( 30, 15 ); cout << "6. Pack records"; gotoxy( 30, 16 ); cout << "0. Exit"; gotoxy( 30, 18 ); cout << "Your Choice ? "; cin >> choice;
  • 48. Manual for C++ Programming Page 48 of 89 clrscr( ); switch( choice ) { case '1': g.addrec( ); break; case '2': g.listrec( ); break; case '3': g.modirec( ); break; case '4': g.delrec( ); break; case '5': g.recallrec( ); break; case '6': g.packrec( ); break; case '0': g.exit( ); break; } } while( choice != 0 ); } void group::group( ) { file.open( "emp.dat", ios::binary || ios::in || ios::out ); if( !file ) { cout << endl << "Unable to open file"; exit( ); } } void group::addrec( ) { char ch; file.seekp( 0L, ios::end ); do { cout << endl << "Enter emp code, name, age & salary" << endl; cin >> p.empcode >> p.name >> p.age >> p.sal; p.flag = ''; file.write( ( char * )&p, sizeof( p ) ); cout << "Add another record? (Y/N)"; cin >> ch; } while( ch == 'Y' || ch == 'Y' ); } void group::listrec( ) {
  • 49. Manual for C++ Programming Page 49 of 89 int j = 0,a; file.seekg( 0L, ios::beg ); while( file.read( ( char * )&p, sizeof( p ) ) ) { if( p.flag != '*' ) { cout <<endl << "Record#" << j++ << setw( 6 )<< p.empcode <<setw(20)<<p.name<<setw(4<<p.age<<setw(9)<< p.sal; } file.clear( ); cout << endl << "Press any key......"; getch( ); } void group::modirec( ) { char code[ 5 ]; int count = 0; long int pos; cout << "Enter employee code: "; cin >> code; file.seekg( 0L, ios::beg ); while( file.read( ( char * )&p, sizeof( p ) ) ) { if( strcmp( p.empcode, code ) == 0 ) { cout << endl << "Enter new record" << endl; cin >> p.empcode >> p.name >> p.age; p.flag = ''; pos = count * sizeof( p ); file.seekp( pos, ios::beg ); file.write( ( char * )&p, sizeof( p ) ); return; } count++; } cout << endl << "No employee in file with code = " << code; cout << endl << "Press any key ....."; getch( ); file.clear( ); } void group::delrec( ) { char code[ 5 ]; long int pos; int count = 0; cout << "Enter employee code : "; cin >> code; file.seekg( 0L, ios::beg ); while( file.read( ( char * )&p, sizeof( p ) ) ) {
  • 50. Manual for C++ Programming Page 50 of 89 if( strcmp( p.empcode, code ) == 0 ) { p.flag = '*'; pos = count * sizeof( p ); file.seekp( pos, ios::beg ); file.write( ( char * )&p, sizeof( p ) ); return; } count++; } cout << endl << "No employee in file with code = " << code; cout<<endl<<Press any key ...."; getch( ); file.clear( ); } void group.recallrec() { char code[ 5 ]; long int pos; int count = 0; cout << "Enter employee code: "; cin >> code; file.seekg( 0L, ios::beg ); while( file.read( ( char * )&p, sizeof( p ) ) ) { if( strcmp( p.empcode, code ) == 0 ) { p.flag = ''; pos = count * sizeof( p ); file.seekp( pos, ios::beg ); file.write( ( char * )&p, sizeof( p ) ); return; } count++; } cout << endl << "No employee in file with code = " << code; cout << endl << "Press any key ...."; file.clear( ); void group::packrec( ) { ofstream outfile; outfile.open( "TEMP", ios::out ); file.seekg( 0, ios::beg ); while( file.read( ( char * )&p, sizeof( p ) ) ) { if( p.flag != '*' ) outfile.write((char *)&p,sizeof(p))); } outfile.close( ); file.close( ); remove( "EMP.dat" ); rename( "TEMP", "TEMP.dat" ); file.open( "EMP.dat", ios::binary | ios::in | ios::out | ios::nocreate ); } void group::exit( ) { file.close( ); }
  • 51. Manual for C++ Programming Page 51 of 89 29. Write a Program for reading and writing data to and from the file using command line arguments. #include<iostream.h> #include<fstream.h> #include<stdlib.h> int main(int argc, char *argv[]) { int number[9] = {11,22,33,44,55,66,77,88,99}; if(argc!=3) { cout<<"argc="<<argc<<"n"; cout<<"Error in argumentsn"; exit(1); } ofstream fout1, fout2; fout1.open(argv[1]); if(fout1.fail()) { cout<<"Could not open the file:" <<argv[1]<<"n"; exit(1); } fout2.open(argv[2]); if(fout2.fail()) { cout<<"Could not open the file:" <<argv[2]<<"n"; exit(1); } for(int i=0; i<9; i++) { if(number[i] % 2 == 0) fout2<<number[i]<<" "; else fout1<<number[i]<<" "; } fout1.close(); fout2.close(); ifstream fin; char ch; for(i=1; i<argc; i++) { fin.open(argv[i]); cout<<"Contents of "<<argv[i]<<"n"; do {
  • 52. Manual for C++ Programming Page 52 of 89 fin.get(ch); cout<<ch; }while(fin); cout<<"nn"; fin.close(); } return 0; } Note: - project->settings->debug->program arguments (specify the arguments to be passed)
  • 53. Manual for C++ Programming Page 53 of 89 30. Write a program showing implementation of stack class having the functionality of push, pop operations. #include <iostream.h> #define MAX 10 class stack { private: int arr[ MAX ], top; public: stack( ) { top = -1; } void push( int item ) { if( top == MAX - 1 ) { cout << endl << "Stack is full"; return; } top++; arr[ top ] = item; } int pop( ) { if( top == -1 ) { cout << endl << "Stack is empty"; return NULL; } int data = arr[ top ]; top--; return data; } } ; void main( ) { stack s; s.push( 11 ); s.push( 12 ); s.push( 13 ); s.push( 14 ); s.push( 15 ); s.push( 16 ); s.push( 17 ); s.push( 18 ); s.push( 19 ); s.push( 20 ); s.push( 21 ); int i = s.pop( ); cout << endl << "Item popped=" << i; i = s.pop( ); cout << endl << "Item popped=" << i; i = s.pop( ); cout << endl << "Item popped=" << i; i = s.pop( ); cout << endl << "Item popped=" << i; }
  • 54. Manual for C++ Programming Page 54 of 89 31. Write program to implement a queue class with requried operations/ functions. #include <iostream.h> #define MAX 10 class queue { private: int arr[ MAX ]; int front, rear; public: queue( ) { front = -1; rear = -1; } void addq( ) { int item; if( rear == MAX - 1 ) { cout << endl << "Queue is full"; return; } rear++; arr[ rear ] = item; if( front == -1 ) front = 0; } int delq( ) { int data; if( front == -1 ) { cout << endl << "Queue is empty"; return NULL; } data = arr[ front ]; if( front == rear ) front = rear = -1; else front++; return data; } } ; void main( ) {
  • 55. Manual for C++ Programming Page 55 of 89 queue a; a.addq( 11 ); a.addq( 12 ); a.addq( 13 ); a.addq( 14 ); a.addq( 15 ); a.addq( 16 ); a.addq( 17 ); a.addq( 18 ); a.addq( 19 ); a.addq( 20 ); a.addq( 21 ); int i = a.delq( ); cout << endl << "Item deleted=" << i; i = a.delq( ); cout << endl << "Item deleted=" << i; i = a.delq( ); cout << endl << "Item deleted=" << i; }
  • 56. Manual for C++ Programming Page 56 of 89 32. Write a program to implement circular queue class with required operations/ functions. #include <iostream.h> #define MAX 10 class queue { private: int arr[ MAX ]; int front, rear; public: queue( ) { front = -1; rear = -1; } void addq( int item ) { if( ( rear == MAX - 1 && front == 0 ) || ( rear + 1 == front ) ) { cout << endl << "Queue is full"; return; } if( rear == MAX - 1 ) rear = 0; else rear = rear + 1; arr[ rear ] = item; if( front == -1 ) front = 0; } int delq( ) { int data; if( front == -1 ) { cout << endl << "Queue is empty"; return NULL; } else { data = arr[ front ]; if( front == rear ) { front = -1; rear = -1; } else {
  • 57. Manual for C++ Programming Page 57 of 89 if( front == MAX - 1 ) front = 0; else front = front + 1; } return data; } } } ; void main( ) { queue a; a.addq( 11 ); a.addq( 12 ); a.addq( 13 ); a.addq( 14 ); a.addq( 15 ); a.addq( 16 ); a.addq( 17 ); a.addq( 18 ); a.addq( 19 ); a.addq( 20 ); a.addq( 21 ); int i = a.delq( ); cout << endl << "Item deleted=" << i; i = a.delq( ); cout << endl << "Item deleted=" << i; i = a.delq( ); cout << endl << "Item deleted=" << i; }
  • 58. Manual for C++ Programming Page 58 of 89 33. Write a program implementing linked list as a class. Also Perform some required operations like inserting, deleting nodes & display the contents of entire linked list. #include <iostream.h> class linklist { struct node { int data; node * link; } * p; public: linklist( ); void append( int num ); void addatbeg( int num ); void addafter( int c, int num ); void del( int num ); void display( ); int count( ); ~linklist( ); } ; linklist::linklist( ) { p = NULL; } void linklist::append( int num ) { node * q, * t; if( p == NULL ) { p = new node; p->data = num; p->link = NULL; } else { q = p; while( q->link != NULL ) q = q->link; t = new node; t->data = num; t->link = NULL; q->link = t; } } void linklist::addatbeg( int num ) { node * q; q = new node; q->data = num; q->link = p; p = q;
  • 59. Manual for C++ Programming Page 59 of 89 } void linklist::addafter( int c, int num ) { node * q, * t; int i; for( i = 0, q = p; i < c; i++ ) { q = q->link; if( q = NULL ) { cout << endl << "There are less than " << c << "element"; return; } } t = new node; t->data = num; t->link = q->link; q->link = t; } void linklist::del( int num ) { node * q, * r; q = p; if( q->data == num ) { p = q->link; delete q; return; } r = q; while( q != NULL ) { if( q->data == num ) { r->link = q->link; delete q; return; } r = q; q = q->link; } cout << endl << "Element" << num << "not found"; } void linklist::display( ) { node * q; cout << endl; for( q = p; q->link != NULL; q = q->link ) { cout << endl << q->data; } int linklist::count( ) {
  • 60. Manual for C++ Programming Page 60 of 89 node * q; int c = 0; for( q = p; q != NULL; q = q->link ) c++; return ( c ); } linklist::~linklist( ) { node * q; if( p == NULL ) return; while( p != NULL ) { q = p->link; delete p; p = q; } } void main( ) { linklist ll; cout << endl << "No. of elements in linked list= " << ll.count( ); ll.append( 11 ); ll.append( 22 ); ll.append( 33 ); ll.append( 44 ); ll.append( 55 ); ll.addatbeg( 100 ); ll.addatbeg( 200 ); ll.addatbeg( 300 ); ll.addafter( 3, 333 ); ll.addafter( 6, 444 ); ll.display( ); cout << endl << "No. of element in linked list =" << ll.count( ); ll.del( 300 ); ll.del( 66 ); ll.del( 0 ); ll.display( ); cout << endl << "No. of element in linked list =" << ll.count( ); }
  • 61. Manual for C++ Programming Page 61 of 89 34. Write a program implementing stack & its operations using dynamic memory allocation. #include <iostream.h> struct node { int data; node * link; } ; class stack { private: node * top; public: stack( ) { top = NULL; } void push( int item ) { node * temp; temp = new node; if( temp = NULL ) cout << endl << "Stack is full"; temp->data = item; temp->link = top; top = temp; } int pop( ) { if( top == NULL ) { cout << endl << "Stack is empty"; return NULL; } node * temp; int item; temp = top; item = temp->data; top = top->link; delete temp; return item; } ~stack( ) { if( top == NULL ) return; node * temp; while( top != NULL ) { temp = top; top = top->link; delete temp;
  • 62. Manual for C++ Programming Page 62 of 89 } } } ; void main( ) { stack s; s.push( 11 ); s.push( 12 ); s.push( 13 ); s.push( 14 ); s.push( 15 ); s.push( 16 ); int i = s.pop( ); cout << endl << "Item popped=" << i; i = s.pop( ); cout << endl << "Item popped=" << i; i = s.pop( ); cout << endl << "Item popped=" << i; }
  • 63. Manual for C++ Programming Page 63 of 89 35. Write a program implementing Queue stack & its operations using dynamic memory allocation. #include <iostream.h> struct node { int data; node * link; } ; class queue { private: node * front, * rear; public: queue( ) { front = rear = NULL; } void addq( int item ) { node * temp; temp = new node; if( temp == NULL ) cout << endl << "Queue is full"; temp->data = item; temp->link = NULL; if( front == NULL ) { rear = front = temp; return; } rear->link = temp; rear = rear->link; } int delq( ) { if( front == NULL ) { cout << endl << "queue is empty"; return NULL; } node * temp; int item; item = front->data; temp = front; front = front->link; delete temp; return item; } ~queue( ) {
  • 64. Manual for C++ Programming Page 64 of 89 if( front == NULL ) return; node * temp; while( front != NULL ) { temp = front; front = front->link; delete temp; } } } ; void main( ) { queue a; a.addq( 11 ); a.addq( 12 ); a.addq( 13 ); a.addq( 14 ); a.addq( 15 ); a.addq( 16 ); a.addq( 17 ); int i = a.delq( ); cout << endl << "Item extracted=" << i; i = a.delq( ); cout << endl << "Item extracted=" << i; i = a.delq( ); cout << endl << "Item extracted=" << i; }
  • 65. Manual for C++ Programming Page 65 of 89 36. Write a program to implement Binary search tree using class and traverse the tree using any traversal scheme. In addition to it the class must have capability to copy the contents from one tree to another and compare the contents of two binary trees. #include <iostream.h> #define TRUE 1 #define FALSE 0 class tree { private: struct node { node * l; int data; node * r; } * p; public: tree( ); void search( int n, int & found, node * parent ); void insert( int n ); void traverse( ); int in( node * q ); void pre( node * q ); void post( node * q ); int operator ==( tree t ); int compare( node * pp, node * qq ); void operator =( tree t ); node * copy( node * q ); } ; tree::tree( ) { p = NULL; } void tree::search( int n, int & found, node *& parent ) { node * q; found = FALSE; parent = TRUE; if( p == NULL ) return; q = p; while( q != NULL ) { if( q->data == n ) { found = TRUE; return; } if( q->data > n ) { parent = q; q = q->l; } else
  • 66. Manual for C++ Programming Page 66 of 89 { parent = q; q = q->r; } } } void tree::insert( int n ) { int found; node * t, * parent; search( n, found, parent ); if( found == TRUE ) cout << endl << "Such a node already exist"; else { t = new node; t->data = n; t->l = NULL; t->r = NULL; if( parent == NULL ) p = t; else parent->data > n?parent->l:parent->r = t; } } void tree::traverse( ) { int choice; cout << endl << "q.Inorder" << endl << "2. Preorder" << endl << "3. Postorder" << endl << "4. Your choice "; cin >> choice; switch( choice ) { case 1: in( p ); break; case 2: pre( p ); break; case 3: post( p ); break; } } void tree::in( node * q ) { if( q != NULL ) { in( q->l ); cout << "t" << q->data; in( q->r ); } } void tree::pre( node * q ) {
  • 67. Manual for C++ Programming Page 67 of 89 if( q != NULL ) { cout << "t" << q->data; pre( q->l ); pre( q->r ); } } void tree::post( node * q ) { if( q != NULL ) { post( q->l ); post( q->r ); cout << "t" << q->data; } } int tree::operator ==( tree t ) { int flag; flag = compare( p, t.p ); return ( flag ); } int tree::compare( node * pp, node * qq ) { static int flag; if( ( pp == NULL ) && ( q != NULL ) ) { if( ( pp != NULL ) && ( qq != NULL ) ) { if( pp->data != qq->data ) flag = FALSE; else { compare( pp->l, qq->l ); compare( qq->r, qq->r ); } } } return ( flag ); } void tree::operator =( tree t ) { p = copy( t.p ); } tree::node * tree::copy( node * q ) { if( q != NULL ) { t = new node; t->data = q->data; t->l = copy( q->l ); t->r = copy( q->r ); return ( t ); }
  • 68. Manual for C++ Programming Page 68 of 89 else return ( NULL ); } void main( ) { tree tt, ss; int i, num; for( i = 0; i <= 6; i++ ) { cout << endl << "Enter the data for the node to be inserted"; cin >> num; tt.insert( num ); } tt.traverse( ); ss = tt; ss.traverse( ); if( ss == tt ) cout << endl << "Trees are equal"; else cout << endl << "Trees are not equal"; }
  • 69. Manual for C++ Programming Page 69 of 89 37. Write a program to implement the exception handling with multiple catch statements. #include<iostream.h> void test(int x) { try { if(x==1) throw x; else if(x==0) throw 'x'; else if(x==-1) throw 1.0; cout<<"End of try-blackn"; } catch(char c) { cout<<"Caught a Charactern"; } catch(int c) { cout<<"Caught an Integern"; } catch(double c) { cout<<"Caught a Doublen"; } cout<<"End of try-catch systemn"; } int main() { cout<<"Testing Multiple Catchesn"; cout<<"x==1n"; test(1); cout<<"x==0n"; test(0); cout<<"x==2n"; test(2); return 0; }
  • 70. Manual for C++ Programming Page 70 of 89 38. Write a program to implement the exception handling with rethrowing in exception. #include<iostream.h> void divide(double x, double y) { cout<<"Inside Functionn"; try { if(y==0.0) throw y; else cout<<"Division ="<<x/y<<"n"; } catch(double) { cout<<"Caught double inside functionn"; throw; } cout<<"End of Functionn"; } int main() { cout<<"Inside Mainn"; try { divide(10.5,2.0); divide(20.0,0.0); } catch(double) { cout<<"Caught double inside mainn"; } cout<<"End of Mainn"; return 0; }
  • 71. Manual for C++ Programming Page 71 of 89 39. Write a program to implement the exception handling with the functionality of testing the throw restrictions. #include<iostream.h> void test(int x) throw(int, double) { if(x==0) throw 'x'; else if(x == 1) throw x; else if(x == -1) throw 1.0; cout<<"End of Function Blockn"; } int main() { try { cout<<"Testting Throw Restrictionsn"; cout<<"x == 0n"; test(0); cout<<"x == 1n"; test(1); cout<<"x == -1n"; test(-1); cout<<"x == 2n"; test(2); } catch(char c) { cout<<"Caught a Charactern"; } catch(int m) { cout<<"Caught an Integern"; } catch(double d) { cout<<"Caught a Doublen"; } cout<<"End of Try-catch systemn"; return 0; }
  • 72. Manual for C++ Programming Page 72 of 89 40. Write a function template that will sort an array of implicit types like int,float,char etc. it can also sort user-defined objects like strings & date. The necessary classes contains overloading of operators. #include <iostream.h> #include <string.h> class mystring { private: enum { sz = 100 // < > } ; char str[ sz ]; public: mystring( char * s = "" ) { strcpy( str, s ); } int operator <( mystring ss ) { if( strcmp( str, ss.str ) <= 0 ) return 1; else return 0; } int operator <=( mystring ss ) { if( strcmp( str, ss.str ) <= 0 ) return 1; else return 0; } int operator >( mystring ss ) { if( strcmp( str, ss.str ) > 0 ) return 1; else return 0; } friend ostream & operator <<( ostream & o,mystring & dd ); } ; ostream operator <<( ostream & o, mystring & ss ) { o << ss.str; return o; } class date {
  • 73. Manual for C++ Programming Page 73 of 89 private: int day, mth, yr; public: date( int d = 0, int m = 0, int y = 0 ) { day = d; mth = m; yr = y; } int operator <( date dt ) { if( yr < dt.yr ) return 1; if( yr == dt.yr && mth < dt.mth ) return 1; if( yr == dt.yr && mth == dt.mth && day = dt.day ) return 1; return 0; } class date { private: int day, mth, yr; public: date( int d = 0, int m = 0, int y = 0 ) { day = d; mth = m; yr = y; } int operator <( date dt ) { if( yr < dt.yr ) return 1; if( yr == dt.yr && mth < dt.mth ) return 1; if( yr == dt.yr && mth == dt.mth && day < dt.day ) return 1; return 0; } int operator <=( date dt ) { if( yr <= dt.yr ) return 1; if( yr == dt.yr && mth <= dt.mth ) return 1; if( yr == dt.yr && mth == dt.mth && day <= dt.yr ) return 1; return 0; } int operator >( date dt ) {
  • 74. Manual for C++ Programming Page 74 of 89 if( yr > dt.yr ) return 1; if( yr == dt.yr && mth > dt.mth ) return 1; if( yr == dt.yr && mth == dt.mth && day > dt.day ) return 1; return 0; } friend ostream & operator <<( ostream & o, date & dd ); } ; ostream & operator <<( ostream & o, date & dd ) { o << dd.day << "t" << dd.mth << "t" << dd.yr; return 0; } template<class T> void quick( T * n, int low, int high ) { int pos; if( low < high ) { pos = split( n, low, high ); quick( n, low, pos - 1 ); quick( n, pos + 1, high ); } } template<class T> int split( T * n, int low, int high ) { int pos, left, right; T item, t; item = n[ low ]; left = low; right = high; while( left < right ) { while( n[ right ] > item ) right = right - 1; while( ( left < right ) && ( n[ left ] <= item ) ) left = left + 1; if( left < right ) { t = n[ left ]; n[ left ] = n[ right ]; n[ right ] = t; } } pos = right; t = n[ low ];
  • 75. Manual for C++ Programming Page 75 of 89 n[ low ] = n[ pos ]; n[ pos ] = t; return pos; } void main( ) { float num[]={5.4f,3.23f,2.15f,1.09f,34.66f,23.3452f}; int arr[]={-12,23,14,0,245,78,66,-9}; date dtarr[]={date(17,11,62),date(23,12,65),date(12,12,78) ,date(23,1,69)}; mystring strarr[]={mystring("Kamal"),mystring("Anuj"), mystring("Sachin"),mystring("Anil")}; int i; cout << endl << endl; quick( num, 0, 5 ); for( i = 0; i <= 5; i++ ) cout << num[ i ] << endl; cout << endl << endl; quick( arr, 0, 7 ); for( i = 0; i <= 7; i++ ) cout << arr[ i ] << endl; cout << endl << endl; quick( dtarr, 0, 3 ); for( i = 0; i <= 3; i++ ) cout << dtarr[ i ] << endl; cout << endl << endl; quick( strarr, 0, 3 ); for( i = 0; i <= 3; i++ ) cout << strarr[ i ] << endl; }
  • 76. Manual for C++ Programming Page 76 of 89 41. Write a program implementing stack and it’s operations using template class. #include <iostream.h> const int MAX = 10; template<class T>class stack { private: T stk[ MAX ]; int top; public: stack( ) { top = -1; } void push( T data ) { if( top == MAX - 1 ) cout << endl << "Stack is full"; else { top++; stk[ top ] = data; } } T pop( ) { if( top == -1 ) { cout << endl << "Stack is empty"; return NULL; } else { T data = stk[ top ]; top--; return data; } } } ; class complex { private: float real, imag; public: complex( float r = 0.0, float i = 0.0 ) { real = r; imag = i; } friend ostream & operator <<( ostream & o, complex & c );
  • 77. Manual for C++ Programming Page 77 of 89 } ; ostream & operator <<( ostream & o, complex & c ) { o << c.real << "t" << c.imag; return o; } void main( ) { stack< int > s1; s1.push( 10 ); s1.push( 20 ); s1.push( 30 ); cout << endl << s1.pop( ); cout << endl << s1.pop( ); cout << endl << s1.pop( ); stack< float > s2; s2.push( 3.14 ); s2.push( 6.28 ); s2.push( 8.98 ); cout << endl << s2.pop( ); cout << endl << s2.pop( ); cout << endl << s2.pop( ); complex c1 ( 1.5, 2.5 ), c2 ( 3.5, 4.5 ), c3 ( -1.5, -0.6 ); stack< complex > s3; s3.push( c1 ); s3.push( c2 ); s3.push( c3 ); cout << endl << s3.pop( ); cout << endl << s3.pop( ); cout << endl << s3.pop( ); }
  • 78. Manual for C++ Programming Page 78 of 89 42. Write a program implementing linked list & some required operations on it using class template. #include <string.h> #include <iostream.h> class emp { private: char name[ 20 ]; int age; float sal; public: emp( char * n = "", int a = 0, float s = 0.0 ) { strcpy( name, n ); age = a; sal = s; } friend ostream & operator <<( ostream & s, emp & e ); } ; ostream operator <<( ostream & s, emp & e ) { cout << e.name << "t" << e.age << "t" << e.sal; return s; } template<class T>class linklist { private: struct node { T data; node * link; } * p; public: linklist( ); ~linklist( ); void append( T ); void addatbeg( T ); void addafter( int, T ); void del( int ); void display( ); int count( ); } ; template<class T> linklist< T >::linklist( ) { p = NULL; } template<class T> linklist< T >::~linklist( ) { node * t;
  • 79. Manual for C++ Programming Page 79 of 89 while( p != NULL ) { t = p; p = p->link; delete t; } } template<class T> void linklist< T >::append( T num ) { node * q, * t; if( p == NULL ) { p = new node; p->data = num; p->link = NULL; } else { q = p; while( q->link != NULL ) q = q->link; t = new node; t->data = num; t->link = NULL; q->link = t; } } template<class T> void linklist< T >::addatbeg( T num ) { node * q; q = new node; q->data = num; q->link = p; p = q; } template<class T> void linklist< T >::addafter( int c, T num ) { node * q, * t; int i; for( i = q, q = p; i <= c; i++ ) { q = q->link; if( q == NULL ) { cout << endl << "There are less than" << c << "element"; return; } } t = new node; t->data = num; t->link = q->link;
  • 80. Manual for C++ Programming Page 80 of 89 q->link = t; } template<class T> void linklist< T >::del( int n ) { node * q, * r; int i = 1; q = p; if( n == 1 ) { p = q->link; delete q; return; } r = q; while( q != NULL ) { if( i == n ) { r->link = q->link; delete q; return; } r = q; q = q->link; i++; } cout << endl << "Element" << n << "not found"; } template<class T> void linklist< T >::display( ) { node * q; cout << endl; for( q = p; q != NULL; q = q->link ) cout << q->data << endl; } template<class T> int linklist< T >::count( ) { node * q; int c = 0; for( q = p; q != NULL; q = q->link ) c++; return ( c ); } void main( ) { linklist< int > l1; cout << endl << "No. of elements in linked list = " << l1.count( ); l1.append( 11 ); l1.append( 22 ); l1.append( 33 ); l1.append( 44 ); l1.append( 55 ); l1.append( 66 );
  • 81. Manual for C++ Programming Page 81 of 89 l1.addatbeg( 100 ); l1.addatbeg( 200 ); l1.addafter( 3, 333 ); l1.addafter( 4, 444 ); l1.display( ); cout << endl << "No. of elements in linked list=" << l1.count( ); l1.del( 200 ); l1.del( 66 ); l1.del( 0 ); l1.del( 333 ); l1.display( ); cout << endl << "no. of elements in linked list = " << l1.count( ); linklist< emp > l2; cout << endl << "No. of elements in linked list = " << l2.count( ); emp e1 ( "Sanjay", 23, 1100.00 ); emp e2 ( "Rahul", 33, 3500.00 ); emp e3 ( "Rakesh", 24, 2400.00 ); emp e4 ( "Sanket", 25, 2500.00 ); emp e5 ( "Sandeep", 26, 2600.00 ); l2.append( e1 ); l2.append( e2 ); l2.append( e3 ); l2.append( e4 ); l2.append( e5 ); l2.display( ); l2.del( 3 ); l2.display( ); cout << endl << "No. of elements in linked list = " << l2.count( ); l2.addatbeg( e5 ); l2.display( ); l2.addafter( 3, e1 ); l2.display( ); cout << endl << "No. of elements in linked list = " << l2.count( ); }
  • 82. Manual for C++ Programming Page 82 of 89 43. Write a program using mouse service routine (0x33 interrupt). The program should track all mouse activities. //mouse.cpp #include <iostream.h> class mouse { private: union REGS i, o; public: mosue( ) { initmouse( ); showmouseptr( ); } void initmouse( ) { i.x.ax = 0; int86( 0x33, &i, &o ); } void showmouseptr( ) { i.x.ax = 1; int86( 0x33, *i, &o ); } void hidemouseptr( ) { i.x.ax = 2; int86( 0x33, &i, &o ); } void getmousepos( int & button, int & x, int & y ) { i.x.ax = 3; int86( 0x33, &i, &o ); button = o.x.bx; x = o.x.cx; y = o.x.dx; } void restrictmouseptr( int x1, int y1, int x2, int y2 ) { i.x.ax = 7; i.x.cx = x1; i.x.dx = x2; int86( 0x33, &i, &o ); i.x.ax = 8; i.x.cx = y1; i.x.dx = y2; int86( 0x33, &i, &o ); } } ; //Virtual.cpp
  • 83. Manual for C++ Programming Page 83 of 89 #include <iostream.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <graphics.h> #include <conio.h> #include <dos.h> #include "mouse.cpp" #include <fstream.h> class shapes { public: virtual void draw( ) { } virtual void save( ofstream & ft ) { } virtual void open( ifstream & fs ) { } } ; class myline:public shapes { private: int sx, sy, ex, ey, color; public: myline( ) { } myline( int x1, int y1, int x2, int y2,int clr ) { sx = x1; sy = y1; ex = x2; ey = y2; color = clr; } void draw( ) { setcolor( color ); moveto( sx, sy ); lineto( ex, ey ); } void save( ofstream & ft ) { ft << "R" << "n"; ft <<sx<<""<<sy<<""<<ex<<""<< ey << "" << color << "n"; } void open( ifstream & fs )
  • 84. Manual for C++ Programming Page 84 of 89 { fs >> sx >> sy >> ex >> ey >> color; } } ; class myrectangle:public shapes { private: int sx, sy, ex, ey, color; public: myrectangle( ) { } myrectangle( int x1, int y1, int x2, int y2,int clr ) { sx = x1; sy = y1; ex = x2; ey = y2; color = clr; } void draw( ) { setcolor( color ); rectangle( sx, sy, ex, ey ); } void save( ofstream & ft ) { ft << "R" << "n"; ft <<sx<<""<<sy<<""<< ex << "" << ey << "" << color << endl; } void open( ifstream & fs ) { fs >> sx >> sy >> ex >> ey >> color; } } ; class mycircle:public shapes { private: int sx, radius, color; public: mycircle( ) { } mycircle( int x1, int y1, int r, int clr ) {
  • 85. Manual for C++ Programming Page 85 of 89 sx = x1; sy = y1; radius = r; color = clr; } void draw( ) { setcolor( color ); circle( sx, sy, radius ); } void save( ofstream & ft ) { ft << "C" << "n"; ft << sx << "" << sy << "" << radius << "" << color << endl; } void open( ifstream & fs ) { fs >> sx >> sy >> radius >> color; } } ; struct node { void * obj; node * link; } ; class objarray { private: node * head; public: objarray( ) { head = NULL; } void add( void * o ) { node * temp = new node; temp->obj = o; temp->link = NULL; if( head == NULL ) head = temp; else { node * q; q = head; while( q->link != NULL ) q = q->link; q->link = temp; } } void * getobj( int i )
  • 86. Manual for C++ Programming Page 86 of 89 { node * q; q = head; int n; for( n = 1; n < i; n++ ) { q = q->link; } return ( q->obj ); } int getcount( ) { int n = 0; node * q; q = head; while( q != NULL ) { q = q->link; n++; } return n; } ~objarray( ) { node * q; q = head; while( q != NULL ) { head = head->link; delete q; q = head; } } } ; void mainscreen( ) { clearddevice( ); rectangle( 0, 0, 639, 479 ); line( 0, 30, 640, 30 ); char *names[]={"Clear","Open","Save","Line","Rect","Circ", "Exit"}; int x, i; for( x = 5, i = 0; x <= 7 * 90; x += 90, i++ ) { setcolor( WHITE ); rectangle( x, 5, x + 70, 25 ); floodfill( x + 1, 6, WHITE ); settextstyle( 1, 0, 3 ); setcolor( BLACK ); outtextxy( x + 10, 0, names[ i ] ); } } void main( ) {
  • 87. Manual for C++ Programming Page 87 of 89 ifstream fs; ofstream ft; int gd = DETECT, gm; initgraph( &gd, &gm, "c:tcbgi" ); mainscreen( ); setviewport( 1, 31, 638, 478, 1 ); mouse m; int button, x, y, flag = 0; int strptx, strpty, endptx, endpty; objarray arrl while( 1 ) { button = 0; m.getmousepos( button, x, y ); if( ( button & q ) == 1 ) &&(flag==0)) { for( t = 5, i = 0; t <= 7 * 90; t += 90, i++ ) { if( x >= t && x <= t + 70 && y >= 5&& y <= 25 ) { index = i; flag = 1; break; } } } int cirnum = random( 16 ); int sx = random( 638 ); int sy = random( 478 ); int ex = random( 638 ); int ey = random( 478 ); int r = random( 200 ); switch( index ) { case 0: m.getmousepos( button, x, y ); if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) ) { clearviewport( ); flag = 0; } break; case 1: m.getmousepos( button, x, y ); if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) ) { fs.open( "output.txt", ios::in ); shapres * ptr; char a[ 2 ]; while( fs )
  • 88. Manual for C++ Programming Page 88 of 89 { fs >> a; if( strcmp( a, "L" ) == 0 ) { myline * l = new myline( ); l->open( fs ); arr.add( l ); } if( strcmp( a, "R" ) == 0 ) { myrectangle * r = new myrectangle( ); c->open( fs ); arr.add( c ); } } fs.close( ); int count = arr.getcount( ); for( int i = 1; i <= count; i++ ) { ptr = ( shapres * )arr.getobj( i ); ptr->draw( ); } flag = 0; } break; case 2: m.getmousepos( button, x, y ); if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) ) { ft.open( "output.txt", ios::out ); int count = arr.getcount( ); shapres * ptr; for( i = 1; i <= count; i++ ) { ptr = ( shapres * )arr.getobj( i ); ptr->save( ft ); } ft.close( ); flag = 0; } break; case 3: m.getmousepos( button, x, y ); if( ( ( button & 1 ) == 0 )&& ( flag == 1 ) ) { setcolor( clrnum ); moveto( sx, sy ); lineto( ex, ey ); myline * l = new myline ( sx, sy, ex, ey, clrnum ); { if( l == NULL ) exit( 1 ); arr.add( l );
  • 89. Manual for C++ Programming Page 89 of 89 flag = 0; } break; case 4: m.getmousepos( button, x, y ); if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) ) { setcolor( clrnum ); rectangle( sx, sy, ex, ey ); myrectangle * r = new myrectangle( sx, sy, ex, ey, clrnum ); if( r == NULL ) exit( 1 ); arr.add( r ); flag = 0; } break; case 5: m.getmousepos( button, x, y ); if( ( ( button & 1 ) == 0 ) && ( flag == 1 ) ) { setcolor( clrnum ); circle( sx, sy, r ); mycircle *c = new mycircle(sx,sy,r,clrnum ); if( c == NULL ) exit( 1 ); arr.add( c ); flag = 0; } break; } if( index == 6 ) break; } closegraph( ); restorecrtmode( ); }