c++ programs

74
C++ Programms cs567 Abstract Class Example #include <iostream> using namespace std; // Base class class Shape { public: // pure virtual function providing interface framework. virtual int getArea() = 0; void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // Derived classes class Rectangle: public Shape { public: int getArea() { return (width * height); } }; class Triangle: public Shape { public: int getArea() { return (width * height)/2;

Upload: mukund-g

Post on 15-Aug-2015

83 views

Category:

Engineering


7 download

TRANSCRIPT

Page 1: C++ programs

C++ Programms

cs567

Abstract Class Example

#include <iostream>

using namespace std;

// Base class

class Shape

{

public:

// pure virtual function providing interface framework.

virtual int getArea() = 0;

void setWidth(int w)

{

width = w;

}

void setHeight(int h)

{

height = h;

}

protected:

int width;

int height;

};

// Derived classes

class Rectangle: public Shape

{

public:

int getArea()

{

return (width * height);

}

};

class Triangle: public Shape

{

public:

int getArea()

{

return (width * height)/2;

Page 2: C++ programs

C++ Programms

cs567

}

};

int main(void)

{

Rectangle Rect;

Triangle Tri;

Rect.setWidth(5);

Rect.setHeight(7);

// Print the area of the object.

cout << "Total Rectangle area: " << Rect.getArea() << endl;

Tri.setWidth(5);

Tri.setHeight(7);

// Print the area of the object.

cout << "Total Triangle area: " << Tri.getArea() << endl;

return 0;

}

Accessing Characters In Strings

#include <iostream>

#include <string>

#include <cctype>

using namespace std;

int main()

{

string text;

cout << "Counts words. Enter a text and terminate with a period and

return:\n";

getline( cin, text, '.'); // Reads a text up to the first '.'

int i, // Index

numberOfWhiteSpace = 0, // Number of white spaces

numberOfWords = 0; // Number of words

bool fSpace = true; // Flag for white space

for( i = 0; i < text.length(); ++i)

{

if( isspace( text[i]) ) // white space?

{

Page 3: C++ programs

C++ Programms

cs567

++numberOfWhiteSpace;

fSpace = true;

}

else if( fSpace) // At the beginning of a word?

{

++numberOfWords;

fSpace = false;

}

}

cout << "\nYour text contains (without periods)"

<< "\ncharacters: " << text.length()

<< "\nwords: " << numberOfWords

<< "\nwhite spaces: " << numberOfWhiteSpace

<< endl;

return 0;

}

Armstrong Number

# include <iostream.h>

# include <conio.h>

# include <math.h>

void main ()

{

clrscr();

int a,b=0,sum=0;

long int n;

cout<<"Enter the NO. : ";

cin>>n;

for(;n>0;)

//counts the digits

{

a=n%10;

n=n/10;

b++;

}

for(;n>0;)

Page 4: C++ programs

C++ Programms

cs567

{

a=n%10;

sum=sum+pow(a,b);

n=n/10;

}

if(sum==n)

{

cout<<"IT IS AN ARMSTRONG NUMBER...";

getch();

}

else

{

cout<<"IT IS NOT AN ARMSTRONG NUMBER...";

getch();

}

}

Accessing Data in a File

#include <algorithm>

#include <cstdlib>

#include <fstream>

#include <functional>

#include <iostream>

#include <iterator>

#include <vector>

using namespace std;

template <class T>

void print(T & c)

{

for( typename T::iterator i = c.begin(); i != c.end(); i++ )

{

std::cout << *i << endl;

}

}

int main()

{

Page 5: C++ programs

C++ Programms

cs567

vector <int> output_data( 10 );

generate( output_data.begin(), output_data.end(), rand );

transform( output_data.begin(), output_data.end(),output_data.begin(),

bind2nd( modulus<int>(), 10 ) );

ofstream out( "data.txt" );

if( !out )

{

cout << "Couldn't open output file\n";

return 0;

}

copy( output_data.begin(), output_data.end(),ostream_iterator<int>( out,

"\n" ) );

out.close();

ifstream in( "data.txt" );

if( !in )

{

cout << "Couldn't open input file\n";

return 0;

}

vector<int> input_data( (istream_iterator<int>( in )),istream_iterator<int>()

);

in.close();

print( output_data );

print( input_data );

}

Accessing Static members without an object

#include <iostream>

using namespace std;

class Cat

{

public:

Cat(int age):itsAge(age){count++; }

virtual ~Cat() { count--; }

virtual int GetAge() { return itsAge; }

virtual void SetAge(int age) { itsAge = age; }

Page 6: C++ programs

C++ Programms

cs567

static int count;

private:

int itsAge;

};

int Cat::count = 0;

void TelepathicFunction();

int main()

{

const int MaxCats = 5; int i;

Cat *CatHouse[MaxCats];

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

{

CatHouse[i] = new Cat(i);

TelepathicFunction();

}

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

{

delete CatHouse[i];

TelepathicFunction();

}

return 0;

}

void TelepathicFunction()

{

cout << "There are ";

cout << Cat::count << " cats alive!\n";

}

A Generic bubble sort

#include <iostream>

using namespace std;

template <class X>

void bubble(X *data, int size)

{

register int a, b;

X t;

Page 7: C++ programs

C++ Programms

cs567

for(a=1; a < size; a++)

for(b=size-1; b >= a; b--)

if(data[b-1] > data[b])

{

t = data[b-1];

data[b-1] = data[b];

data[b] = t;

}

}

int main()

{

int i[] = {3, 2, 5, 6, 1, 8, 9, 3, 6, 9};

double d[] = {1.2, 5.5, 2.2, 3.3};

int j;

bubble(i, 10); // sort ints

bubble(d, 4); // sort doubles

for(j=0; j<10; j++)

cout << i[j] << ' ';

cout << endl;

for(j=0; j<4; j++)

cout << d[j] << ' ';

cout << endl;

return 0;

}

Area Overloded

#include<iostream.h>

#include<conio.h>

#define phi 3.14

int area(int,int);

float area(int);

void main()

{

int a,b,c,cho;

clrscr();

cout<<"\t What do you want to do?\n";

Page 8: C++ programs

C++ Programms

cs567

cout<<"1. area of rectangle"<<endl;

cout<<"2. area of circle"<<endl;

cout<<"Choice:";

cin>>cho;

switch(cho)

{

case 1:

cout<<"Enter lengt and breath (with white space):";

cin>>a>>b;

cout<<"Area of RECTANGLE:"<<area(a,b);

break;

case 2:

cout<<"Enter radius:";

cin>>c;

cout<<"Area of CIRCLE:"<<area(c);

break;

}

getch();

}

int area(int x,int y)

{

return (x*y);

}

float area(int s)

{

return (phi*s*s);

}

A Simple Example of Inheritance

#include <iostream>

using namespace std;

class BaseClass

{

int i;

public:

void setInt(int n);

Page 9: C++ programs

C++ Programms

cs567

int getInt();

};

class DerivedClass : public BaseClass

{

int j;

public:

void setJ(int n);

int mul();

};

void BaseClass::setInt(int n)

{

i = n;

}

int BaseClass::getInt()

{

return i;

}

void DerivedClass::setJ(int n)

{

j = n;

}

int DerivedClass::mul()

{

return j * getInt();

}

int main()

{

DerivedClass ob;

ob.setInt(10); // load i in BaseClass

ob.setJ(4); // load j in DerivedClass

cout << ob.mul(); // displays 40

return 0;

}

Page 10: C++ programs

C++ Programms

cs567

A simple stack example: push, empty, pop and top

#include <iostream>

#include <stack>

using namespace std;

int main()

{

stack<char> stackObject;

stackObject.push('A');

stackObject.push('B');

stackObject.push('C');

stackObject.push('D');

while(!stackObject.empty())

{

cout << "Popping: ";

cout << stackObject.top() << endl;

stackObject.pop();

}

return 0;

}

A Static member variable example.

#include <iostream>

using namespace std;

class myclass

{

static int i;

public:

void setInt(int n)

{

i = n;

}

int getInt()

{

return i;

}

};

Page 11: C++ programs

C++ Programms

cs567

int myclass::i; // Definition of myclass::i. i is still private to myclass.

int main()

{

myclass object1, object2;

object1.setInt(10);

cout << "object1.i: " << object1.getInt() << '\n'; // displays 10

cout << "object2.i: " << object2.getInt() << '\n'; // also displays 10

return 0;

}

Binary Search

#include < iostream.h >

template < class T >

int binarySearch(T a[], int n, T & x)

{

int left = 0; // left end of segment

int right = n - 1; // right end of segment

while (left <= right)

{

int middle = (left + right)/2; // middle of segment

if (x == a[middle])

return middle;

if (x > a[middle])

left = middle + 1;

else

right = middle - 1;

}

return -1; // x not found

}

int main()

{

int a[10],n,t;

cout<<"Enter the size:";

cin>>n;

cout<<"enter the elements in sorted order:";

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

Page 12: C++ programs

C++ Programms

cs567

cin >>a[i];

cout<<"enter the element to search:";

cin>>t;

int f=binarySearch(a,n,t);

if(f==-1)

cout<<"element not found";

else

cout<<"element found at index:"<

}

Complex Number

#include<iostream.h>

#include<conio.h>

class complex

{

private:

float real,img;

public:

void assign(float x,float y)

{

real=x;

img=y;

}

void print()

{

if(img>=0)

cout<< real<<"+"<< img<<"i";

else

cout<< real<< img<<"i";

getch();

}

};

void add( float a,float b,float c, float d)

{

float e,f;complex g;

e=a+c;

Page 13: C++ programs

C++ Programms

cs567

f=b+d;

g.assign(e,f);

g.print();

}

void sub( float a,float b,float c, float d)

{

float e,f;complex g;

e=a-c;

f=b-d;

g.assign(e,f);

g.print();

}

void mul( float a,float b,float c, float d)

{

float e,f; complex g;

e=a*c-b*d;

f=b*c+a*d;

g.assign(e,f);

g.print();

}

void main()

{

float a,b,c,d;

complex x,y,z;

clrscr();

cout<<" for complex 1:";

cout<<"real part:";

cin>>a;

cout<<"imaginary part:";

cin>>b;

cout<<" for complex 2:";

cout<<"real part:";

cin>>c;

cout<<"imaginary part:";

cin>>d;

x.assign(a,b);

y.assign(c,d);

Page 14: C++ programs

C++ Programms

cs567

cout<<"***original data:***\n";

cout<<"Complex 1:\n";x.print();

cout<<"\n Complex 2:\n";y.print();

cout<<"\n***\n";

cout<<"\n Addition:\n";add(a,b,c,d);

cout<<"\n Subtraction:\n";sub(a,b,c,d);

cout<<"\n Multipication:\n";mul(a,b,c,d);

}

Constructor and Destructor

#include <iostream>

using namespace std;

#define SIZE 10

class stack

{

int stck[SIZE];

int topOfStack;

public:

stack(); // constructor

~stack(); // destructor

void push(int i);

int pop();

};

// constructor

stack::stack()

{

topOfStack = 0;

cout << "Stack Initialized\n";

}

// destructor

stack::~stack()

{

cout << "Stack Destroyed\n";

}

void stack::push(int i)

{

Page 15: C++ programs

C++ Programms

cs567

if( topOfStack == SIZE )

{

cout << "Stack is full.\n";

return;

}

stck[ topOfStack ] = i;

topOfStack++;

}

int stack::pop()

{

if( topOfStack == 0 )

{

cout << "Stack underflow.\n";

return 0;

}

topOfStack--;

return stck[ topOfStack ];

}

int main()

{

stack a, b;

a.push(1);

b.push(2);

a.push(3);

b.push(4);

cout << a.pop() << " ";

cout << a.pop() << " ";

cout << b.pop() << " ";

cout << b.pop() << endl;

return 0;

}

Convert Temperatures from Celsius to Fahrenheit and vice versa.

#include <iostream.h>

#include <conio.h>

void main()

Page 16: C++ programs

C++ Programms

cs567

{

clrscr();

int choice;

float ctemp,ftemp;

cout << "1.Celsius to Fahrenheit" << endl;

cout << "2.Fahrenheit to Celsius" << endl;

cout << "Choose between 1 & 2 : " << endl;

cin>>choice;

if (choice==1)

{

cout << "Enter the temperature in Celsius : " << endl;

cin>>ctemp;

ftemp=(1.8*ctemp)+32;

cout << "Temperature in Fahrenheit = " << ftemp << endl;

}

else

{

cout << "Enter the temperature in Fahrenheit : " << endl;

cin>>ftemp;

ctemp=(ftemp-32)/1.8;

cout << "Temperature in Celsius = " << ctemp << endl;

}

getch();

}

Copy One File to another File

#include < iostream.h >

#include < conio.h >

#include < iomanip.h >

#include < stdlib.h >

#include < ctype.h >

#include < fstream.h >

void main( )

{

ofstream outfile;

ifstream infile;

Page 17: C++ programs

C++ Programms

cs567

char fname1[10],fname2[20];

char ch,uch;

clrscr( );

cout<<"Enter a file name to be copied ";

cin>> fname1;

cout<<"Enter new file name";

cin>>fname2;

infile.open(fname1);

if( infile.fail( ) )

{

cerr<< " No such a file Exit";

getch();

exit(1);

}

outfile.open( fname2);

if(outfile.fail( ))

{

cerr<<"Unable to create a file";

getch();

exit(1);

}

while( !infile.eof( ) )

{

ch = (char) infile.get( );

uch = toupper(ch);

outfile.put(uch);

}

infile.close( );

outfile.close( );

getch( );

}

Data Abstraction

#include <iostream>

using namespace std;

class Adder

Page 18: C++ programs

C++ Programms

cs567

{

public:

// constructor

Adder(int i = 0)

{

total = i;

}

// interface to outside world

void addNum(int number)

{

total += number;

}

// interface to outside world

int getTotal()

{

return total;

};

private:

// hidden data from outside world

int total;

};

int main( )

{

Adder a;

a.addNum(10);

a.addNum(20);

a.addNum(30);

cout << "Total " << a.getTotal() <<endl;

return 0;

}

Data Encapsulation

#include <iostream>

using namespace std;

class Adder

{

Page 19: C++ programs

C++ Programms

cs567

public:

// constructor

Adder(int i = 0)

{

total = i;

}

// interface to outside world

void addNum(int number)

{

total += number;

}

// interface to outside world

int getTotal()

{

return total;

};

private:

// hidden data from outside world

int total;

};

int main( )

{

Adder a;

a.addNum(10);

a.addNum(20);

a.addNum(30);

cout << "Total " << a.getTotal() <<endl;

return 0;

}

Page 20: C++ programs

C++ Programms

cs567

Enum example

#include <iostream.h>

int main()

{

enum Days{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};

Days TheDay;

int j;

cout<<"Please enter the day of the week (0 to 6)";

cin>>j;

TheDay = Days(j);

if(TheDay == Sunday || TheDay == Saturday)

cout<<"Hurray it is the weekend"< else

cout<<"Curses still at work"< return 0;

}

Euclid's algorithm

#include <iostream.h>

// Fundamental idea of Euclid's algorithm (one of the oldest known

algorithms)

// gcd(a,0) = a

// gcd(a,b) = gcd(b,a%b)

int gcd (int a, int b)

{

int temp;

while (b != 0)

{

temp = a % b;

a = b;

b = temp;

Page 21: C++ programs

C++ Programms

cs567

}

return(a);

}

int main ()

{

int x, y;

cout << "Enter two natural numbers: ";

cin >> x >> y;

cout << "gcd(" << x << ", " << y << ") = " << gcd(x,y) << endl;

return(0);

}

Exception Handling

#include <iostream>

using namespace std;

int main()

{

unsigned int TypeOfLoan = 0;

const char *LoanType[] =

{ "Personal",

"Car",

"Furniture",

"Musical Instrument",

"Boat"

};

try

{

cout << "Enter the type of loan\n";

for(int i = 0; i < 4; i++)

cout << i + 1 << ") " << LoanType[i] << endl;

cout << "Your choice: ";

cin >> TypeOfLoan;

if( TypeOfLoan < 1 || TypeOfLoan > 5 )

throw "Number out of range\n";

cout << "\nType of Loan: " << LoanType[TypeOfLoan] << endl;

}

Page 22: C++ programs

C++ Programms

cs567

catch(const char* Msg)

{

cout << "Error: " << Msg << endl;

}

catch(...)

{

cout << "\nSomething went wrong\n\n";

}

return 0;

}

Exponentiation using multiplication

#include <iostream.h>

int exp (int b, int e)

{

int result;

result = 1;

while (e != 0)

{

result = result * b;

e = e - 1;

}

return(result);

}

int main ()

{

int b, e;

cout << "Enter base and exponent: ";

cin >> b >> e;

cout << b << " to the " << e << " = " << exp(b,e) << endl;

return(0);

}

Factorial

#include <iostream>

#include <iomanip>

Page 23: C++ programs

C++ Programms

cs567

using namespace std;

#define LENGTH 20

long double iterativeFunction(unsigned int n); // Iterative solution

long double recursiveFunction(unsigned int n); // Recursive solution

int main()

{

unsigned int n;

cout << fixed << setprecision(0);

cout << setw(10) << "n" << setw(30) << "Factorial of n"

<< " (Iterative solution)\n" << endl;

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

cout << setw(10) << n << setw(30) << iterativeFunction(n)

<< endl;

cout << "Go on with ";

cin.get();

cout << setw(10) << "n" << setw(30) << "Factorial of n"

<< " (Recursive solution)\n" << endl;

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

cout << setw(10) << n << setw(30) << recursiveFunction(n)

<< endl;

cout << endl;

return 0;

}

long double iterativeFunction(unsigned int n) // Iterative solution.

{

long double result = 1.0;

for( unsigned int i = 2; i <= n; ++i)

result *= i;

return result;

}

long double recursiveFunction(unsigned int n) // Recursive solution.

{

if( n <= 1)

return 1.0;

else

return recursiveFunction(n-1) * n;

}

Page 24: C++ programs

C++ Programms

cs567

Factorial

#include <iostream.h>

// sequence is 0, 1, 1, 2, 3, 5, 8, 13, ...

int fib (int i)

{

int pred, result, temp;

pred = 1;

result = 0;

while (i > 0)

{

temp = pred + result;

result = pred;

pred = temp;

i = i-1;

}

return(result);

}

int main ()

{

int n;

cout << "Enter a natural number: ";

cin >> n;

while (n < 0)

{

cout << "Please re-enter: ";

cin >> n;

}

cout << "fib(" << n << ") = " << fib(n) << endl;

return(0);

}

Fibonacci Series

#include<iostream.h>

#include<conio.h>

main()

Page 25: C++ programs

C++ Programms

cs567

{

const unsigned long limit=4294967295;

unsigned long next=0;

unsigned long last=1;

long sum;

clrscr();

cout<<"\n\nThis program will print the Fibonacci series :\n\n ";

while(next<limit/2)

{

cout<<last <<" ";

sum=next+last;

next=last;

last=sum;

}

getch();

}

File Operations

#include< iostream.h >

#include< conio.h >

#include< fstream.h >

class student

{

private:

int rno;

char name[10];

float fees;

public:

void getdata()

{

cout<<"roll number";

cin>>rno;

cout<< endl;

cout<<"enter name:";

cin >> name;

cout<< endl <<"enter fees:";

Page 26: C++ programs

C++ Programms

cs567

cin>>fees;

}

void dispdata()

{

cout<<"Roll number"<< rno << endl;

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

cout<<"Fees"<< fees;

}

};

void main()

{

student s1;

clrscr();

ofstream stdfile("c:\\std.txt");

//fstream stdfile;

//stdfile.open("c:\\std.txt",ios::out|ios::in); //open file for output

char wish;

//writing to the file

do

{

s1.getdata();

stdfile.write((char*)& s1,sizeof(student));

cout << "continue ? y/n";

cin >> wish;

}

while(wish=='y'||wish=='Y');

stdfile.close(); //close the file

getch();

}

Page 27: C++ programs

C++ Programms

cs567

Find out Number is Even or Odd

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

int x;

cout << "Enter an integer : ";

cin>>x;

if(x%2==0)

cout << "The number " << x << " is even.";

else

cout << "The number " << x << " is odd.";

getch();

}

Floyd warshall algorithm

#include<piostream.h>

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

class path

{

int n;

int p[10][10];

int a[10][10];

int c[10][10];

public:

void get();

void pm();

Page 28: C++ programs

C++ Programms

cs567

void ap();

void disp();

};

void path::get()

{

int i,j,k;

clrscr();

cout<<"Enter the no. of nodes in the graph :";

cin>>n;

cout<<"Enter the adjacency matrix :";

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

{

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

{

cin>>a[i][j];

p[i][j]=0;

}

}

cout<<"Enter The cost matrix is :";

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

{

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

{

cin>>c[i][j];

}

}

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

{

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

{

p[i][j]=a[i][j];

}

}

}

void path::disp()

{

// cout<<"The output matrix for the given graph is :";

Page 29: C++ programs

C++ Programms

cs567

for(int i=1;i<=n;i++)

{

for(int j=1;j<=n;j++)

{

cout<<p[i][j]<< " ";

}

cout<<endl;

}

}

void path::pm()

{

int i,j,k;

for(k=1;k<=n;k++)

{

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

{

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

{

p[i][j]=p[i][j] || p[i][k] && p[k][j];

}

}

}

}

void path::ap()

{

int i,j,k;

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

{

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

{

p[i][j]=c[i][j];

}

}

for(k=1;k<=n;k++)

{

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

{

Page 30: C++ programs

C++ Programms

cs567

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

{

if(p[i][j]<p[i][k]+p[k][j])

{

p[i][j]=p[i][j];

}

else

{

p[i][j]=p[i][k]+p[k][j];

}

}

}

}

}

void main()

{

path p;

p.get();

p.pm();

cout<<"path matrix is :";

p.disp();

getch();

p.ap();

cout<<"all pair shortest path matrix is :";

p.disp();

getch();

}

Function overloading

# include<iostream.h>

# include<conio.h>

int area(int side)

{

return side*side;

}

int area(int l , int b)

Page 31: C++ programs

C++ Programms

cs567

{

return l*b;

}

void main()

{

clrscr();

int (*p1)(int);

int (*p2)(int,int);

p1=area;

p2=area;

cout<<"Address of area(int)="<<(unsigned int)p1<

cout<<"Address of area(int,int)="<<(unsigned int)p2<

cout<<"Invoking area(int) via p1 "<<p1(20)<

cout<<"Invoking area(int,int) via p2 "<

getch();

}

Heap Sort

#include < iostream.h >

const int MAX = 10 ;

class array

{

private :

int arr[MAX] ;

int count ;

public :

array( ) ;

void add ( int num ) ;

void makeheap(int ) ;

void heapsort( ) ;

void display( ) ;

} ;

array :: array( )

{

count = 0 ;

for ( int i = 0 ; i < MAX ; i++ )

Page 32: C++ programs

C++ Programms

cs567

arr[MAX] = 0 ;

}

void array :: add ( int num )

{

if ( count < MAX )

{

arr[count] = num ;

count++ ;

}

else

cout << "\nArray is full" << endl ;

}

void array :: makeheap(int c)

{

for ( int i = 1 ; i < c ; i++ )

{

int val = arr[i] ;

int s = i ;

int f = ( s - 1 ) / 2 ;

while ( s > 0 && arr[f] < val )

{

arr[s] = arr[f] ;

s = f ;

f = ( s - 1 ) / 2 ;

}

arr[s] = val ;

}

}

void array :: heapsort( )

{

for ( int i = count - 1 ; i > 0 ; i-- )

{

int ivalue = arr[i] ;

arr[i] = arr[0] ;

arr[0]=ivalue;

makeheap(i);

}

Page 33: C++ programs

C++ Programms

cs567

}

void array :: display( )

{

for ( int i = 0 ; i < count ; i++ )

cout << arr[i] << "\t" ;

cout << endl ;

}

void main( )

{

array a ;

a.add ( 11 ) ;

a.add ( 2 ) ;

a.add ( 9 ) ;

a.add ( 13 ) ;

a.add ( 57 ) ;

a.add ( 25 ) ;

a.add ( 17 ) ;

a.add ( 1 ) ;

a.add ( 90 ) ;

a.add ( 3 ) ;

a.makeheap(10) ;

cout << "\nHeap Sort.\n" ;

cout << "\nBefore Sorting:\n" ;

a.display( ) ;

a.heapsort( ) ;

cout << "\nAfter Sorting:\n" ;

a.display( ) ;

}

Inline Functions

#include <iostream>

using namespace std;

inline double Sum(const double * Numbers, const int Count)

{

double s = 0;

for(int i = 0; i < Count; i++)

Page 34: C++ programs

C++ Programms

cs567

s += Numbers[i];

return s;

}

int main()

{

double Nbr[] = { 15.66, 18, 25, 128.62, 12.06, 22.18 };

double Total = Sum(Nbr, 6);

cout << "Sum = " << Total << endl;

return 0;

}

If you first declare a function that would be defined somewhere else, when

implementing the function, you can type or omit the inline keyword:

#include <iostream>

using namespace std;

inline double Sum(const double * Numbers, const int Count);

int main()

{

double Nbr[] = { 15.66, 18, 25, 128.62, 12.06, 22.18 };

double Total = Sum(Nbr, 6);

cout << "Sum = " << Total << endl;

return 0;

}

inline double Sum(const double * Numbers, const int Count)

{

double s = 0;

for(int i = 0; i < Count; i++)

s += Numbers[i];

return s;

}

Insertion Sort

#include < iostream.h >

const int MAX = 10 ;

class array

{

private :

Page 35: C++ programs

C++ Programms

cs567

int arr[MAX] ;

int count ;

public :

array( ) ;

void add ( int item ) ;

void sort( ) ;

void display( ) ;

} ;

array :: array( )

{

count = 0 ;

for ( int i = 0 ; i < MAX ; i++ )

arr[i] = 0 ;

}

void array :: add ( int item )

{

if ( count < MAX )

{

arr[count] = item ;

count++ ;

}

else

cout << "\nArray is full" << endl ;

}

void array :: sort( )

{

int temp ;

for ( int i = 1 ; i <= count - 1 ; i++ )

{

for ( int j = 0 ; j < i ; j++ )

{

if ( arr[j] > arr[i] )

{

temp = arr[j] ;

arr[j] = arr[i] ;

for ( int k = i ; k > j ; k-- )

arr[k] = arr[k - 1] ;

Page 36: C++ programs

C++ Programms

cs567

arr[k + 1] = temp ;

}

}

}

}

void array :: display( )

{

for ( int i = 0 ; i < count ; i++ )

cout << arr[i] << "\t" ;

cout << endl ;

}

void main( )

{

array a ;

a.add ( 25 ) ;

a.add ( 17 ) ;

a.add ( 31 ) ;

a.add ( 13 ) ;

a.add ( 2 ) ;

cout << "\nInsertion sort.\n" ;

cout << "\nArray before sorting:" << endl ;

a.display( ) ;

a.sort( ) ;

cout << "\nArray after insertion sorting:" << endl ;

a.display( ) ;

}

Linear Search

#include < iostream.h >

#include < constream.h >

void read(int a[10],int n)

{

cout<<"reading\n";

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

cin>>a[i];

}

Page 37: C++ programs

C++ Programms

cs567

void display(int a[10],int n)

{

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

cout << a[i]<<"\t";

}

void linearsearch ( int a[10],int n )

{

int k,flag=0;

read(a,n);

display(a,n);

cout<<"\nenter an element to be search\n";

cin>>k;

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

{

if(a[i]==k)

flag=1;

break;

}

if(flag==1)

cout << "\nsearching is successful,element is found at position " << i +1

<< endl;

else

cout<<"searching not successful\n";

}

void main()

{

int a[10], n;

clrscr();

cout <<"enter n value..\n";

cin>>n;

linearsearch(a,n);

getch();

}

Page 38: C++ programs

C++ Programms

cs567

Matrix Multiplication

void main()

{

int row1=0,

col1=1,

row2=0,

col2=0,

**matrix1,

**matrix2,

**result;

clrscr();

printf(" Enter number of row for first matrix ");

scanf("%d",&row1);

while (col1!=row2)

{

printf(" Enter number of column for first matrix ");

scanf("%d",&col1);

printf(" Enter number of row for second matrix ");

scanf("%d",&row2);

if (col1!=row2)

{

clrscr();

printf("Column number of first matrix must be same as the row number

of second matrix");

}

}

printf(" Enter number of column for second matrix ");

scanf("%d",&col2);

matrix1=init(matrix1,row1,col1);

matrix2=init(matrix2,row2,col2);

/* setting values in matrix */

printf("First matrix \n");

set(matrix1,row1,col1);

printf("Second matrix \n");

set(matrix2,row2,col2);

/* printint matrix */

Page 39: C++ programs

C++ Programms

cs567

clrscr();

printf(" [ First matrix ]\n");

get(matrix1,row1,col1);

printf(" [ Second matrix ]\n");

get(matrix2,row2,col2);

printf(" [ Multiplication Result ]\n");

result=mul(matrix1,matrix2,row1,col2,col1);

get(result,row1,col2);

printf("\n\t Thanks from debmalya jash");

getch();

free(matrix1);

free(matrix2);

fress(result);

} /* end main */

/* to initialize matrix */

int** init(int** arr,int row,int col)

{

int i=0,

j=0;

arr=(int**)malloc(sizeof(int)*row*col);

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

{

for(j=0;j<col;j++)

{

*((arr+i)+j)=(int*)malloc(sizeof(int));

*(*(arr+i)+j)=0;

}

}

return arr;

}

/* to set value in matrix */

int** set(int** arr,int row,int col)

{

int i=0,

j=0,

val=0;

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

Page 40: C++ programs

C++ Programms

cs567

{

for(j=0;j<col;j++)

{

printf("Enter value for row %d col %d :",(i+1),(j+1));

scanf("%d",&val);

*(*(arr+i)+j)=val;

}

}

return arr;

}

/* print values of the passed matrix */

void get(int** arr,int row,int col)

{

int i=0,

j=0;

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

{

for(j=0;j<col;j++)

{

printf("%d\t",*(*(arr+i)+j));

}

printf("\n");

}

}

/* mutiply two matrices and return the resultant matrix */

int** mul(int** arr1,int** arr2,int row,int col,int col1)

{

int **result,

i=0,

j=0,

k=0;

result=init(result,row,col);

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

{

for(j=0;j<col;j++)

{

for(k=0;k<col1;k++)

Page 41: C++ programs

C++ Programms

cs567

{

printf("%dX%d(%d)",*(*(arr1+i)+k),*(*(arr2+k)+j),(*(*(arr1+i)+k))*(*(*(arr2

+k)+j)));

*(*(result+i)+j)+=(*(*(arr1+i)+k))*(*(*(arr2+k)+j));

if (k!=(col1-1))

printf("+");

}

printf("\t");

}

printf("\n");

}

return result;

}

Merge Sort

#include <iostream.h>

int a[50];

void merge(int,int,int);

void merge_sort(int low,int high)

{

int mid;

if(low<high)

{

mid=(low+high)/2;

merge_sort(low,mid);

merge_sort(mid+1,high);

merge(low,mid,high);

}

}

void merge(int low,int mid,int high)

{

int h,i,j,b[50],k;

h=low;

i=low;

j=mid+1;

while((h<=mid)&&(j<=high))

Page 42: C++ programs

C++ Programms

cs567

{

if(a[h]<=a[j])

{

b[i]=a[h];

h++;

}

else

{

b[i]=a[j];

j++;

}

i++;

}

if(h>mid)

{

for(k=j;k<=high;k++)

{

b[i]=a[k];

i++;

}

}

else

{

for(k=h;k<=mid;k++)

{

b[i]=a[k];

i++;

}

}

for(k=low;k<=high;k++)

a[k]=b[k];

}

void main()

{

int num,i;

cout<<"MERGE SORT PROGRAM"<<endl;

cout<<"Please Enter THE NUMBER OF ELEMENTS you want to sort [THEN

Page 43: C++ programs

C++ Programms

cs567

PRESS ENTER]:"<<endl;

cin>>num;

cout<<endl;

cout<<"Now, Please Enter the ( "<< num <<" ) numbers (ELEMENTS)

[THEN

PRESS ENTER]:"<<endl;

for(i=1;i<=num;i++)

{

cin>>a[i] ;

}

merge_sort(1,num);

cout<<endl;

cout<<"So, the sorted list (using MERGE SORT) will be :"<<endl;

cout<<endl<<endl;

for(i=1;i<<=num;i++)

cout<<a[i]<<" ";

cout<<endl<<endl<<endl<<endl;

}

Multiple Inheritance

#include <iostream>

using namespace std;

class base1

{

protected:

int x;

public:

void showx() { cout << x << "\n"; }

};

class base2

{

protected:

int y;

public:

void showy() { cout << y << "\n"; }

};

Page 44: C++ programs

C++ Programms

cs567

// Inherit multiple base classes.

class derived: public base1, public base2

{

public:

void set(int i, int j) { x = i; y = j; }

};

int main()

{

derived ob;

ob.set(10, 20); // provided by derived

ob.showx(); // from base1

ob.showy(); // from base2

return 0;

}

Multiply a number by a power

#include <iostream>

using namespace std;

int main()

{

int number,power,count,i;

cout << "Enter Number: "; cin >> number;

cout << "Enter the power: "; cin >> power;

count = 1;

for (i=1; i <=power; i++)

count = count*number;

cout << count << endl;

return 0;

}

Namespace can be nested within another

#include <iostream>

using namespace std;

namespace MyNameSpace1

{

int i;

Page 45: C++ programs

C++ Programms

cs567

namespace MyNameSpace2

{ // a nested namespace

int j;

}

}

int main()

{

MyNameSpace1::i = 19;

MyNameSpace1::MyNameSpace2::j = 10;

cout << MyNameSpace1::i << " "<< MyNameSpace1::MyNameSpace2::j <<

"\n";

using namespace MyNameSpace1;

cout << i * MyNameSpace2::j;

return 0;

}

Number of Bytes in a Text file

#include<fstream.h<

#include<process.h<

#include<stdio.h<

#include<iostream.h<

#include<process.h<

#include<conio.h<

main()

{

clrscr();

int c=0;

char ch,file[30];

cout<<"Enter the name of the file:";

gets(file);

fstream f1;

f1.open(file,ios::in);

if(f1.bad())

{

cout<<"File can not be opened.";

exit(0);

Page 46: C++ programs

C++ Programms

cs567

}

if(f1.good())

{

cout<<"The current contents of the file are:";

while(f1)

{

f1.get(ch);

c++;

cout<<ch;

}

}

cout<<"Total no. of Bytes are "<<c;

f1.close();

cout<<"Press Enter key to continue...";

getch();

return(0);

}

Octal - Hexadecimal - Decimal conversion

#include <iostream.h>

#include <iomanip.h>

int main()

{

cout<<"The decimal value of 15 is "<<15<<endl;

cout<<"The octal value of 15 is "<<setiosflags(ios::oct)<<15<<endl;

cout<<"The hex value of 15 is "<<setiosflags(ios::hex)<<15<<endl;

return 0;

}

Page 47: C++ programs

C++ Programms

cs567

Operator Overload

#include <cstdlib>

#include <new>

using namespace std;

class MyClass

{

int x, y;

public:

MyClass()

{

x = y = 0;

}

MyClass(int lg, int lt)

{

x = lg;

y = lt;

}

void show()

{

cout << x << " ";

cout << y << endl;

}

void *operator new(size_t size);

void operator delete(void *p);

void *operator new[](size_t size);

void operator delete[](void *p);

};

// overloaded new operator

void *MyClass::operator new(size_t size)

{

void *p;

cout << "In overloaded new.\n";

p = malloc(size);

if(!p)

{

Page 48: C++ programs

C++ Programms

cs567

bad_alloc ba;

throw ba;

}

return p;

}

// delete operator overloaded

void MyClass::operator delete(void *p)

{

cout << "In overloaded delete.\n";

free(p);

}

// new operator overloaded for arrays.

void *MyClass::operator new[](size_t size)

{

void *p;

cout << "Using overload new[].\n";

p = malloc(size);

if( !p )

{

bad_alloc ba;

throw ba;

}

return p;

}

// delete operator overloaded for arrays.

void MyClass::operator delete[](void *p)

{

cout << "Freeing array using overloaded delete[]\n";

free(p);

}

int main()

{

MyClass *objectPointer1, *objectPointer2;

int i;

try

{

objectPointer1 = new MyClass (10, 20);

Page 49: C++ programs

C++ Programms

cs567

}

catch (bad_alloc xa)

{

cout << "Allocation error for objectPointer1.\n";

return 1;;

}

try

{

objectPointer2 = new MyClass [10]; // allocate an array

}

catch (bad_alloc xa)

{

cout << "Allocation error for objectPointer2.\n";

return 1;

}

objectPointer1->show();

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

objectPointer2[i].show();

delete objectPointer1; // free an object

delete [] objectPointer2; // free an array

return 0;

}

Overloads assignment operator (=)

#include <iostream>

using namespace std;

class alpha

{

private:

int data;

public:

alpha(){ }

alpha(int d){ data = d; }

void display(){ cout << data; }

alpha operator = (alpha& a)

{

Page 50: C++ programs

C++ Programms

cs567

data = a.data;

cout << "\nAssignment operator invoked";

return alpha(data);

}

};

int main()

{

alpha a1(37);

alpha a2;

a2 = a1;

cout << "\na2=";

a2.display();

alpha a3 = a2;

cout << "\na3=";

a3.display();

cout << endl;

return 0;

}

First 10 lines of Pascal's Triangle

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

long triangle(int x,int y);

int main()

{

clrscr();

const lines=10;

for (int i=0;i<lines;i++)

for (int j=1;j<lines-i;j++)

cout << setw(2) << " ";

for (int j=0;j<=i;j++)

cout << setw(4) << triangle(i,j);

cout << endl;

getch();

}

Page 51: C++ programs

C++ Programms

cs567

long triangle(int x,int y)

{

if(x<0||y<0||y>x)

return 0;

long c=1;

for (int i=1;i<=y;i++,x--)

c=c*x/i;

return c;

}

Example of Pass-by-Reference

#include <iostream.h>

#include <stdlib.h>

int exp (int,int);

void readnums (int&, int&);

void main ()

{

int b, e;

readnums(b,e);

cout << b << " to the " << e << " = " << exp(b,e) << endl;

}

void readnums (int& b, int& e)

{

int correctInput;

cout << "Enter the base and the exponent: ";

cin >> b >> e;

if (!cin)

{

cout << "Disaster! Terminating program." << endl;

exit(-1);

}

correctInput = (b >= 0) && (e >= 0);

while (!correctInput)

{

cout << "Something wrong! Try again ..." << endl;

cout << "Re-enter base and exponent: ";

Page 52: C++ programs

C++ Programms

cs567

cin >> b >> e;

if (!cin)

{

cout << "Disaster! Terminating program." << endl;

exit(-1);

}

correctInput = (b >= 0) && (e >= 0);

}

}

int exp (int b, int e)

{

int result;

result = 1;

while (e != 0)

{

result = result * b;

e = e - 1;

}

return(result);

}

Polymorphism

#include <iostream>

using namespace std;

class Shape

{

protected:

int width, height;

public:

Shape( int a=0, int b=0)

{

width = a;

height = b;

}

int area()

{

Page 53: C++ programs

C++ Programms

cs567

cout << "Parent class area :" <<endl;

return 0;

}

};

class Rectangle: public Shape

{

public:

Rectangle( int a=0, int b=0)

{

Shape(a, b);

}

int area ()

{

cout << "Rectangle class area :" <<endl;

return (width * height);

}

};

class Triangle: public Shape

{

public:

Triangle( int a=0, int b=0)

{

Shape(a, b);

}

int area ()

{

cout << "Rectangle class area :"<<endl;

return (width * height / 2);

}

};

// Main function for the program

int main( )

{

Shape *shape;

Rectangle rec(10,7);

Triangle tri(10,5);

// store the address of Rectangle

Page 54: C++ programs

C++ Programms

cs567

shape = &rec;

// call rectangle area.

shape->area();

// store the address of Triangle

shape = &tri;

// call triangle area.

shape->area();

return 0;

}

Quick Sort

#include<process.h>

#include<iostream.h>

#include<conio.h>

#include<stdlib.h>

int Partition(int low,int high,int arr[]);

void Quick_sort(int low,int high,int arr[]);

void main()

{

int *a,n,low,high,i;

clrscr();

cout<<"Quick Sort Algorithm";<< endl

cout<<"Enter number of elements:";

cin>>n;

a=new int[n];

/* cout<<"enter the elements:";

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

cin>>a;*/

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

a[i]=rand()%100;

clrscr();

cout<<"Initial Order of elements";

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

cout<< a[i] <<" ";

cout <<"";

high=n-1;

Page 55: C++ programs

C++ Programms

cs567

low=0;

Quick_sort(low,high,a);

cout <<"Final Array After Sorting:";

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

cout << a[i] <<" ";

getch();

}

/*Function for partitioning the array*/

int Partition(int low,int high,int arr[])

{

int i,high_vac,low_vac,pivot/*,itr*/;

pivot=arr[low];

while(high>low)

{

high_vac=arr[high];

while(pivot< high_vac)

{

if(high < =low) break;

high--;

high_vac=arr[high];

}

arr[low]=high_vac;

low_vac=arr[low];

while(pivot > low_vac)

{

if(high < =low) break;

low++;

low_vac=arr[low];

}

arr[high]=low_vac;

}

arr[low]=pivot;

return low;

}

void Quick_sort(int low,int high,int arr[])

{

Page 56: C++ programs

C++ Programms

cs567

int Piv_index,i;

if(low < high)

{

Piv_index=Partition(low,high,arr);

Quick_sort(low,Piv_index-1,arr);

Quick_sort(Piv_index+1,high,arr);

}

}

Find the Roots of a Quadratic Equation

#include <iostream.h>

#include <conio.h>

#include <math.h>

int main()

{

clrscr();

float a,b,c,d,root1,root2;

cout << "Enter the 3 coefficients a, b, c : " << endl;

cin>>a>>b>>c;

if(!a)

{

if(!b)

cout << "Both a and b cannot be 0 in ax^2 + bx + c = 0" << "\n";

else

{

d=-c/b;

cout << "The solution of the linear equation is : " << d << endl;

}

}

else

{

d=b*b-4*a*c;

Page 57: C++ programs

C++ Programms

cs567

if(d>0)

root1=(-b+sqrt(d))/(2*a);

root2=(-b-sqrt(d))/(2*a);

cout << "The first root = " << root1 << endl;

cout << "The second root = " << root2 << endl;

}

getch();

return 0;

}

Selection Sort

#include < iostream.h >

const int MAX = 10 ;

class array

{

private :

int arr[MAX] ;

int count ;

public :

array( ) ;

void add ( int item ) ;

void sort( ) ;

void display( ) ;

} ;

array :: array( )

{

count = 0 ;

for ( int i = 0 ; i < MAX ; i++ )

arr[i] = 0 ;

}

void array :: add ( int item )

{

if ( count < MAX )

{

arr[count] = item ;

count++ ;

Page 58: C++ programs

C++ Programms

cs567

}

else

cout << "\nArray is full" << endl ;

}

void array :: sort( )

{

int temp ;

for ( int i = 0 ; i <= count - 2 ; i++ )

{

for ( int j = i + 1 ; j <= count - 1 ; j++ )

{

if ( arr[i] > arr[j] )

{

temp = arr[i] ;

arr[i] = arr[j] ;

arr[j] = temp ;

}

}

}

}

void array :: display( )

{

for ( int i = 0 ; i < count ; i++ )

cout << arr[i] << " " ;

cout << endl ;

}

void main( )

{

array a ;

a.add ( 25 ) ;

a.add ( 17 ) ;

a.add ( 31 ) ;

a.add ( 13 ) ;

a.add ( 2 ) ;

cout << "\nSelection sort.\n" ;

cout << "\nArray before sorting:" << endl ;

a.display( ) ;

Page 59: C++ programs

C++ Programms

cs567

a.sort( ) ;

cout << "\nArray after selection sorting:" << endl ;

a.display( ) ;

}

Shell Sort

#include< iostream.h >

#include< constream.h >

void read(int a[10],int n)

{

cout << "reading\n";

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

cin >> a[i];

}

void display(int a[10],int n)

{

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

cout << a[i] <<"\t";

}

void shellsort(int a[10],int n)

{

int gap=n/2;

do

{

int swap;

do

{

swap=0;

for(int i=0;i < n-gap;i++)

if(a[i] > a[i+gap])

{

int t=a[i];

a[i]=a[i+gap];

a[i+gap]=t;

swap=1;

}

Page 60: C++ programs

C++ Programms

cs567

}

while(swap);

}

while(gap=gap/2);

}

void main()

{

int a[10];

int n;

clrscr();

cout<<"enter n\n";

cin>>n;

read(a,n);

cout<<"before sorting\n";

display(a,n);

shellsort(a,n);

cout<<"\nafter sorting\n";

display(a,n);

getch();

}

Sort a heap

#include <iostream>

using std::cout;

using std::endl;

#include <algorithm>

#include <vector>

#include <iterator>

int main()

{

int a[ 10 ] = { 3, 100, 52, 77, 22, 31, 1, 98, 13, 40 };

std::vector< int > v( a, a + 10 ); // copy of a

std::vector< int > v2;

std::ostream_iterator< int > output( cout, " " );

std::copy( v.begin(), v.end(), output );

std::make_heap( v.begin(), v.end() );

Page 61: C++ programs

C++ Programms

cs567

std::sort_heap( v.begin(), v.end() );

cout << "\n\n";

std::copy( v.begin(), v.end(), output );

cout << endl;

return 0;

}

Sort all characters inside the string

#include <string>

#include <iostream>

#include <algorithm>

using namespace std;

int main()

{

const string hello("Hello, how are you?");

string s(hello.begin(),hello.end());

// iterate through all of the characters

string::iterator pos;

for (pos = s.begin(); pos != s.end(); ++pos)

{

cout << *pos;

}

cout << endl;

sort (s.begin(), s.end());

cout << "ordered: " << s << endl;

}

String Operation

#include<stdio.h>

#include<conio.h>

#include<string.h>

int STRLEN(char*);

int STRCPY(char*,char*);

int STRCMP(char*,char*);

int STRCAT(char*,char*,char*);

int STRREV(char*);

Page 62: C++ programs

C++ Programms

cs567

void main()

{

int c;

char str[20],str1[10],str2[10],str3[20];

clrscr();

re:

printf("

Enter choice=>");

printf("

1:string len.

2:string copy

3:string cmp.

4:string cat.

5:string rev.");

printf("6:for exit=>");

scanf("%d",&c);

switch(c)

{

case 1:

printf("Enter the string=>");

scanf("%s",&str1);

printf("string length=>%d

",STRLEN(str1));

break;

case 2:

printf("

Enter the string=>");

scanf("%s",str1);

STRCPY(str2,str1);

printf("copied string=>");

puts(str2);

break;

case 3:

printf("Enter two string=>");

scanf("%s",&str1);

scanf("%s",&str2);

if(STRCMP(str2,str1))

Page 63: C++ programs

C++ Programms

cs567

printf("string is equal");

else

printf("String is not equal");

break;

case 4:

printf("Enter two string=>");

scanf("%s",str1);

scanf("%s",str2);

STRCAT(str3,str2,str1);

puts(str3);

break;

case 5:

printf("Enter the string=>");

scanf("%s",str1);

STRREV(str1);

printf("Reverse stringis=>");

puts(str1);

break;

default:

goto end;

}

goto re;

end:

getch();

}

int STRLEN(char *s)

{

int i=0;

while(*s!=NULL)

{

i++;

s++;

}

return i;

}

int STRCPY(char *s2,char *s1)

{

Page 64: C++ programs

C++ Programms

cs567

while(*s1!=NULL)

{

*s2=*s1;

s2++;

s1++;

}

*s2=NULL;

return 1;

}

int STRCMP(char *s2,char *s1)

{

int i=0,len1,len2;

len1=strlen(s1);

len2=strlen(s2);

if(len1==len2)

{

while(*s2==*s1 && *s2 != NULL && *s1!=NULL)

{

i++;

s1++;

s2++;

}

if(i==len1)

return 1;

else

return 0;

}

else

{

return 0;

}

}

int STRREV(char *s)

{

int len;

char *s1;

char *ptr;

Page 65: C++ programs

C++ Programms

cs567

len=strlen(s);

s1=(char *)malloc(sizeof(char));

strcpy(s1,s);

ptr=s1+len-1;

while(*s!=NULL)

{

*s=*ptr;

ptr--;

s++;

s1++;

}

*s=NULL;

return 1;

}

int STRCAT(char *s3,char *s2,char *s1)

{

while(*s1!=NULL)

{

*s3=*s1;

s3++;

s1++;

}

s3++;

while(*s2!=NULL)

{

*s3=*s2;

s3++;

s2++;

}

*s3=NULL;

return 1;

}

Structure

#include <iostream>

using namespace std;

Page 66: C++ programs

C++ Programms

cs567

int main()

{

// Defining a structure

struct PersonalData

{

char *FirstName;

char *LastName;

char *Birthday; // in the format of 12/30/1978

int PhoneNum;

}; // don't forget the ending ";"

// Declaring a variable of type PersonalData

PersonalData PersonOne;

// Populate PersonOne with data

PersonOne.FirstName = "John";

PersonOne.LastName = "Doe";

PersonOne.Birthday = "12/30/1978";

PersonOne.PhoneNum = 5855555;

// Print the data out

cout << "PersonOne's First name is: " << PersonOne.FirstName << endl;

cout << "PersonOne's Last name is: " << PersonOne.LastName<< endl;

cout << "PersonOne's Birthday is: " << PersonOne.Birthday<< endl;

cout << "PersonOne's Phone number is: " << PersonOne.PhoneNum<<

endl;

return 0;

}

Tower Of Hanoi Alogithm Using Recursion.

#include<iostream.h>

#include<stdio.h>

#include<conio.h>

class tower

{

int *t1,*t2,*t3;

int x,y,z;

public:

void disp_tower();

Page 67: C++ programs

C++ Programms

cs567

void move_disk(int tx,int ty);

void toh(int n,int a,int b,int c);

tower(int no);

~tower();

};

tower :: tower(int no)

{

t1 = new int[no+1];

t2 = new int[no+1];

t3 = new int[no+1];

x = no;

y = z = 0;

for(int i=0,j=no ; i

{

t1[i] = j;

t2[i] = t2[i] = 0;

}

t1[no] = t2[no] = t3[no] = 0;

}

tower :: ~tower()

{

delete []t1;

delete []t2;

delete []t3;

}

void tower :: disp_tower()

{

clrscr();

cout<<"

X :: ";

for(int i=0;i

{

cout<<" "<

}

cout<<"

Y :: ";

for(i=0;i

Page 68: C++ programs

C++ Programms

cs567

{

cout<<" "<

}

cout<<"

Z :: ";

for(i=0;i

{

cout<<" "<

}

getch();

}

void tower :: toh(int n,int tx,int ty,int tz) //x to y using z

{

if(n>=1)

{

toh(n-1,tx,tz,ty);

move_disk(tx,ty); //x to y

disp_tower();

toh(n-1,tz,ty,tx);

}

}

void tower :: move_disk(int tx,int ty)

{

switch(tx)

{

case 1:

{

if(ty==2)

t2[y++] = t1[--x];

else

t3[z++] = t1[--x];

}break;

case 2:

{

if(ty==1)

t1[x++] = t2[--y];

else

Page 69: C++ programs

C++ Programms

cs567

t3[z++] = t2[--y];

}break;

case 3:

{

if(ty==1)

t1[x++] = t3[--z];

else

t2[y++] = t3[--z];

}break;

}//end of switch

}

Use of Pointers

#include <iostream>

using namespace std;

int main()

{

// declare an integer and a float variable

int IntNum;

float FloatNum;

// declare integer and float pointers

int *pIntNum;

float *pFloatNum;

// initialize the integer and float variables

IntNum = 10;

FloatNum = 12.34;

// store addresses in pointers

pIntNum = & IntNum;

pFloatNum = & FloatNum;

// print out the original values

cout << "Before increment: " << endl;

cout << "\t IntNum is: " << IntNum << endl;

cout << "\t FloatNum is: " << FloatNum << endl;

// note that we need to dereference a pointer in order

// to extract the value it contains.

cout << "\t pIntNum contains: " << *pIntNum << endl;

Page 70: C++ programs

C++ Programms

cs567

cout << "\t pFloatNum contains: " << *pFloatNum << endl;

// increment values of the integer and float variables

(*pIntNum)++; // dereference and then increment

(*pFloatNum)++;

// print out the values after increment

cout << "After increment: " << endl;

cout < < "\t IntNum is: " << IntNum << endl;

cout < < "\t FloatNum is: " << FloatNum << endl;

cout < < "\t pIntNum contains: " << *pIntNum << endl;

cout < < "\t pFloatNum contains: " << *pFloatNum << endl;

return 0;

}

Virtual Function

#include <iostream>

using namespace std;

class BaseClass

{

public:

int i;

BaseClass(int x)

{

i = x;

}

virtual void myFunction()

{

cout << "Using BaseClass version of myFunction(): ";

cout << i << '\n';

}

};

class DerivedClass1 : public BaseClass

{

public:

DerivedClass1(int x) : BaseClass(x) {}

void myFunction()

{

Page 71: C++ programs

C++ Programms

cs567

cout << "Using DerivedClass1's version of myFunction(): ";

cout << i*i << '\n';

}

};

class DerivedClass2 : public BaseClass

{

public:

DerivedClass2(int x) : BaseClass(x) {}

void myFunction()

{

cout << "Using DerivedClass2's version of myFunction(): ";

cout << i+i << '\n';

}

};

int main()

{

BaseClass *p;

BaseClass ob(10);

DerivedClass1 derivedObject1(10);

DerivedClass2 derivedObject2(10);

p = &ob;

p->myFunction(); // use BaseClass's myFunction()

p = &derivedObject1;

p->myFunction(); // use DerivedClass1's myFunction()

p = &derivedObject2;

p->myFunction(); // use DerivedClass2's myFunction()

return 0;

}

Word Frequency

#include <stdio.h>

#define SIZE 80

#define LEN 80

int strword(char[],char[][]);

int strword_p(char*,char**);

void main()

Page 72: C++ programs

C++ Programms

cs567

{

char* s;

char** w;

char ch;

do

{

clrscr();

gotoxy(10,1);

printf("Enter a string :");

gets(s);

gotoxy(10,2);

printf("\nNumber of words :%d",strword_p(s,w));

gotoxy(10,24);

printf(" Continue(y/n)?");

ch=getch();

} while (ch=='y' || ch=='Y');

}

int strword_p(char *s,char **w)

{

int is_space=0,

i=0,

word_counter=0,

j=0,

is_printed=0,

frequency=0;

while (*(s+i)!='\0')

{

if (*(s+i)==' ' ||

*(s+i)==',' ||

*(s+i)=='.' ||

*(s+i)==':')

{

if (is_space==0)

{

*(*(w+word_counter)+j)='\0';

word_counter++;

is_space=1;

Page 73: C++ programs

C++ Programms

cs567

j=0;

}

}

else

{

*(*(w+word_counter)+j)=*(s+i);

j++;

is_space=0;

}

i++;

}

if (is_space==0)

{

*(*(w+word_counter)+j)='\0';

word_counter++;

}

for(j=0;j

{

frequency=0;

is_printed=0;

for(i=0;i

{

if (strcmp(w[i],w[j])==0)

{

frequency++;

if (j

is_printed=1;

}

}

if (!is_printed)

printf("\n Word %d : %s ,frequency->%d",j+1,w[j],frequency);

}

printf("\n");

return word_counter;

}

Page 74: C++ programs

C++ Programms

cs567

Write text to a file

#include <iostream.h>

#include <fstream.h>

const char *FILENAME = "myfile.txt";

int main()

{

//create output object associated w/ file

ofstream fout(FILENAME);

cout << "Enter your text: ";

char str[100];

cin >> str;

//write the text to the file

fout << "here is your text\n";

fout << str << endl;

//close file

fout.close();

ifstream fin(FILENAME);

char ch;

while (fin.get(ch))

cout << ch;

fin.close();

return 0;

}