Friday 19 February 2016

Scenery using graphics in C++

    #include <graphics.h>
   #include <stdlib.h>
   #include <stdio.h>
   #include<conio.h>
   int main(void)
   {
      int gdriver = DETECT, gmode;
      initgraph(&gdriver, &gmode, "C:\\TC\\bgi");
      circle(150, 150, 20);
      circle(141,146,5);
      circle(160,146,5);
      arc(150,156,215,340,6);
      line(150,170,150,240);
      line(150,240,110,300) ;
      line(150,240,190,300);
      line(150,180,100,180);
      line(150,180,200,180);
     line(300,170,2000,170);
    line(300,170,400,100);
    line(400,100,500,170);
    line(500,170,800,50);
    arc(500,200,45,135,70);
   getch();
   closegraph();
   return 0;
}

Friday 12 February 2016

Conversion of NFA to DFA

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

string statear[40];

int find(string nift)
{
for(int i=0;i<40;i++)
{

      if(nift==statear[i])
   {  return 0;
  }
  }
  return 1;
}

int main()
{ int jk=2;
string stra[30];
string no0,no1;
statear[0]="a";
statear[1]="b";
statear[2]="c";
for(int e=0;e<6;e++)
{ cout<<"enter the state when ";

if(e%2==0)
  cout<<"0";
else
  cout<<"1";
  cout<<"is entered to";
  if(e==0||e==1)
  cout<<"a:  ";
  if(e==2||e==3)
  cout<<"b:  ";
  if(e==4||e==5)
  cout<<"c:  ";
  cin>>stra[e];
}
  cout<<"The NFA is"<<endl;
cout<<"    0   1"<<endl;
cout<<"a"<<"   "<<stra[0]<<"   "<<stra[1]<<endl;
cout<<"b"<<"   "<<stra[2]<<"   "<<stra[3]<<endl;
cout<<"c"<<"   "<<stra[4]<<"   "<<stra[5]<<endl;
cout<<"The equivalent DFA is"<<endl;
  cout<<    "           0            1"<<endl;
for(int pl=0;pl<3;pl++)
  {
if(pl==0)
{
  cout<<"a         ";
  cout<<stra[0]<<"       "<<stra[1]<<endl;

}
if(pl==1)
{
cout<<"b        ";
cout<<stra[2]<<"       "<<stra[3]<<endl;
}
if(pl==2)
{
  cout<<"c        ";

cout<<stra[4]<<"      "<<stra[5]<<endl;}
for(int bk=0;bk<13;bk++)

{

int l=find(stra[bk]);
if(l==1&&stra[bk]!="0")
{
jk++;

no0="";
no1="";

for(int j=0;j<3;j++)
{
statear[jk]=stra[bk];
char decide=stra[bk][j];
switch (decide)
{case 'a':

           if(stra[0]!="0") {
   no0.append(stra[0]);
 
 
 
      }
          if(stra[1]!="0")  no1.append(stra[1]);
            break;
            case 'b':
if(stra[2]!="0")   no0.append(stra[2]);
           if(stra[3]!="0") no1.append(stra[3]);
            break;
            case 'c':
if(stra[4]!="0")no0.append(stra[4]);
         if(stra[5]!="0")   no1.append(stra[5]);
            break;
}
}

string mr="0";
if(no0.length()==0)
no0="0";
if(no0.length()>=4)
no0="abc";
if(no1.length()==0)
no1="0";
if(no1.length()>=4)
no1="abc";
cout<<statear[jk]<<"      "<<no0<<"       "<<no1<<endl;
}

}
}

}




Friday 22 January 2016

DDA algorithm

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include<iostream.h>
int main(void)
{   int gdriver = DETECT, gmode;
   initgraph(&gdriver, &gmode, "C:\\TC\\bgi");

  float x1,y1,x2,y2,dx,dy,length,xinr,yinr,x,y;
cout<<"enter the x coordinate of the first point";
cin>>x1;
cout<<"enter the y coordinate of the first point ";
cin>>y1;
cout<<"enter the x coordinate of the second point ";
cin>>x2;
cout<<"enter the y coordinate of the second point ";
cin>>y2;
     dx=x2-x1;
     dy=y2-y1;
     if(abs(dy)>abs(dx))
     length=abs(dy);
     else
     length=abs(dx);
       xinr=dx/length;
       yinr=dy/length;
       x=x1;
       y=y1;
for(int i=0 ;i<length;i++)
{   putpixel ( x,y,2);
x+=xinr;
y+=yinr;

}




   getch();
   closegraph();
   return 0;
}

Bresenham algorithm

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include<iostream.h>
int main(void)
{   int gdriver = DETECT, gmode;
   initgraph(&gdriver, &gmode, "C:\\TC\\bgi");

  float x1,y1,x2,y2,dx,dy,length,xinr,yinr,x,y,e;
cout<<"enter the x coordinate of the first point";
cin>>x1;
cout<<"enter the y coordinate of the first point ";
cin>>y1;
cout<<"enter the x coordinate of the second point ";
cin>>x2;
cout<<"enter the y coordinate of the second point ";
cin>>y2;
     dx=x2-x1;
     dy=y2-y1;
       if(abs(dy)>abs(dx))
     length=abs(dy);
     else
     length=abs(dx);
e=2*dy-dx;
      x=x1;
      y=y1;
      for(int i=0;i<length;i++)
      { while(e>0)
      {
y+=1;
e-= 2*dx;

      }
x+=1;
e=e+2*dy;
    putpixel(x,y,3);
      }

   getch();
   closegraph();
   return 0;
}

Monday 26 October 2015

Binary tree

#include <iostream>

using namespace std;

struct  node
{
   node* leftchild;
   node* rightchild;
   int data;
};

int count;

node* insert(node*ptr,int x)

     if(ptr==NULL)
       {
          node* temp= new node;
          temp->leftchild=NULL;
          temp->rightchild=NULL;
          temp->data=x;
          ptr=temp;
          count++;
       }
      else if(count%2==0)
          ptr->leftchild=insert(ptr->leftchild,x);

      else
          ptr->rightchild=insert(ptr->rightchild,x);

return ptr;

}

void preorder(node* root)
{
    if(root!=NULL)
{
    cout<<root->data<<endl;
    preorder(root->leftchild);
    preorder(root->rightchild);

}
}

void inorder(node *root)
{
    if (root!= NULL)
    {
        inorder(root->leftchild);
        cout<<root->data<<endl;
        inorder(root->rightchild);
    }
}

void postorder( node *root)
{
    if (root != NULL)
    {
        postorder(root->leftchild);

        postorder(root->rightchild);
        cout<<root->data<<endl;
    }
}

int main()
{
    count=0;int x;
    node* root=NULL;

    char ch='y';
    while(ch!='n')
    {
        cout<<"Enter the element:";
        cin>>x;
        root=insert(root,x);
        cout<<"Do you want to enter more elements? y/n";
        cin>>ch;
    }

cout<<"Preorder traversal:";
preorder(root);
cout<<"Inorder traversal:";
inorder(root);
cout<<"Postorder traversal";
postorder(root);
}

Binary search tree

#include <iostream>

using namespace std;
struct node
{
    int data;
     node* left;
     node* right;
};

void preorder(struct node *root)
{
    if (root != NULL)
    {   cout<<root->data<<endl;
        preorder(root->left);

        preorder(root->right);
    }
}
void inorder(struct node *root)
{
    if (root != NULL)
    {
        inorder(root->left);
        cout<<root->data<<endl;
        inorder(root->right);
    }
}

void postorder(struct node *root)
{
    if (root != NULL)
    {
        postorder(root->left);

        postorder(root->right);
        cout<<root->data<<endl;
    }
}

node* insert(node* ptr, int x)
{

    if (ptr == NULL)
       {
            node* temp =  new node;

            temp->data = x;
            temp->left = temp->right = NULL;
            ptr=temp;

       }

    else  if (x < ptr->data)
        ptr->left  = insert(ptr->left,x);
    else if (x> ptr->data)
        ptr->right = insert(ptr->right,x);

    return ptr;
}
int main()
{int x;

    struct node *root = NULL;
    char ch='y';
    while(ch!='n')
    {
        cout<<"Enter the element:";
        cin>>x;
        root= insert(root,x);
        cout<<"Do you want to insert more elements y/n:";
        cin>>ch;

    }

cout<<"Preorder traversal:";
preorder(root);
cout<<"Inorder traversal:";
inorder(root);
cout<<"Postorder traversal";
postorder(root);

    return 0;
}

Sunday 11 October 2015

Simple calculator using switch case

#include <iostream>

using namespace std;

int main()
{long first,second;
char ch;
cout<<"ENTER FIRST INTEGER:";
cin>>first;
cout<<"ENTER SECOND INTEGER";
cin>>second;
cout<<"ENTER THE OPERAND";
cin>>ch;
switch(ch)
{
     case '+' : cout<<"THE SUM IS:"<<first +second;
                break;
     case '-' : cout<<"THE DIFFERENCE IS:"<<first -second;
                break;
     case '/' : cout<<"THE QUOTIENT IS:"<<first/second;
                cout<<"THE REMAINDER IS:"<<first%second;
                break;
     case '*' : cout<<"THE PRODUCT IS:"<<first*second;
                break;

}

}