Blogger news

Followers

Friday, July 25, 2014
/*C program that creates a child process to read commands from the standard input and execute them.You can assume that no arguments will be passed to the commands to be executed*/

#include<stdio.h>
#include<unistd.h>
int main()
{
    char i[10];
    int n;
    //int status;
    while(1)
    {
        printf("Enter your command\n");
        get(i);
        n=fork()
       
        if(n==0)
        {   /*it's for executes in new process execl("/bin/sh/","sh","-c",i,null)
              and add library unisd.h*/

            

             execl("/bin/sh/","sh","-c",i,null);
            exit(0);
        }
        else if(n>0)
        {    /*sometime wait() is not working then you change wait function to
            this following part:
                while(waitpid(n,status,0)<0)
                {
                    break;
                }
            */

            wait();
       
        }
        else
        {
            printf("error\n");
        }
    }
    return(0);
}
Monday, July 21, 2014
#include<stdio.h>
#include<conio.h>

void main()
{
            int m,n,p,q,i,j,k,mat1[10][10],mat2[10][10],result[10][10];
            clrscr();  //to clear the screen
            printf(“enter the number of rows and columns for marix1 respectively \n”);
            scanf(“%d%d”,&m,&n);
            printf(“enter the number of rows and columns for marix2 respectively \n”);
            scanf(“%d%d”,&p,&q);
           
            if(n==p)  //if multiplication of mat1*mat2 then it’s mat1 number of columns must equal to mat2 number of rows
            {          
printf(“enter the elements value of matrix1 \n”);
                                    for(i=0;i<m;i++)
                                                for(j=0;j<n;j++)
                                                            scanf(“%d”,&mat1[i][j]);
                       
                        printf(“enter the elements value of matrix2 \n”);
                                    for(i=0;i<p;i++)
                                                for(j=0;j<q;j++)
                                                            scanf(“%d”,&mat1[i][j]);
                        for(k=0;k<n;k++)
                                    for(i=0;i<m;i++)
                                                for(j=0;j<q;j++)
                                                            result[i][j]=mat1[i][k]*mat2[k][j];

                        printf(“resultant matrix is ….\n”);
                        for(i=0;i<m;i++)
                        {
                                    for(j=0;j<q;j++)
                                    {
                                                printf(“%d\t”,result[i][j]);
                                    }
                                    printf(“\n”);
                        }
            }
            else
            {
                        printf(“math error! \n”);
            }
getch();
}
#include<stdio.h>
#include<conio.h>

void main()
{
            /*col,row variables are used to store number of columns and rows respectively,
            mat is a two dimensional array is used to store the matrix, i,j is used as an indexing the elements from matrix*/
            int col,row,mat[100][100],i,j;
                        clrscr();   //clear the screen
           
printf(“enter the number of rows \n”);
            scanf(“%d”,&row);
           
            printf(“enter the number of coloumns \n”);
            scanf(“%d”,&col);
           
            printf(“number of rows:%d ,number of columns:%d”,row,col);

            printf(“enter the value of matrix \n”);
           
            for(i=0;i<row;i++)  //outer loop represents to the row
                        for(j=0;j<col;j++) // inner loop represents to the column
                                    scanf(“%d”,&mat[i][j]);

            printf(“your matrix is ….\n”);
           
            //following code is used to print each elements of matrix in row wise
            for(i=0;i<row;i++)
            {
                        for(j=0;j<col;j++)
                        {
                                    Printf(“%d\t”,mat[i][j]);
                        }
                        printf(“\n”);
            }
            getch();
}
//refer libraries
#include<stdio.h>
#include<conio.h>

 void main()   //main function definition
{
 char c[10];// string variable declaration
clrscr();//to clear the screen it explained in conio.h
                printf(“enter your string \n”);
                scanf(“%s”,c);
                printf(“you are entered string is :%s”,c);
                getch();//this function makes to wait a character from standard input or keyboard this function described in conio.h
}
               

Design,develop and execute a program in c++ to create a class called DATE with methods to accept two valid dates in the form dd/mm/yy and to implement the following operation by overloading the operators + and – After every operation the results are to be displayed by overloading the operator<<
i.no_of_days=d1-d2;where d1 and d2 are DATE objects,d1>=d2 and no_of_days is an integer.
ii.d2=d1+no_of_days;where d1 is a DATE object and no_of_days is an integer.
#include<iostream.h>
#include<conio.h>

class date
{
  int dd;
  int mm;
  int yy;
  int a[13];
  public:
     date()
     {
       a[1]=31;a[2]=28;a[3]=31;a[4]=30;a[5]=31;a[6]=30;a[7]=31;a[8]=31;a[9]=30;
       a[10]=31;a[11]=30;a[12]=31;dd=0;mm=0;yy=0;
     }
     date operator+(int n);
     int operator-(date d2);
     friend ostream& operator<<(ostream &print,date d1);
     void read();
     int isleap(date d1);
  };


     date date::operator+(int n)
     {
       int i;
       for(i=1;i<=n;i++)
       { dd++;
                 if(isleap(*this))
                 {
                  a[2]=29;
                 }
                 if(dd>a[mm])
                 {
                  dd=1;
                  ++mm;
                 }
                 if(mm>12)
                 {
                  mm=1;
                  ++yy;
                 }

       }
       return (*this);
     }

     int date::operator-(date d2)
     { int count=0;
       while(!((mm==d2.mm)&&(dd==d2.dd)&&(yy==d2.yy)))
       { count++;
                 d2.dd++;
                 if(isleap(d2))
                 {
                  d2.a[2]=29;
                 }
                 if(d2.dd>d2.a[d2.mm])
                 {
                   d2.dd=1;
                   d2.mm++;
                 }
                 if(d2.mm>12)
                 {
                  d2.mm=1;
                  d2.yy++;
                 }
       }
       return count;
     }

     void date::read()
     {
      cout<<"enter the date"<<endl;
      cout<<"dd="<<endl;
      cin>>dd;
      cout<<"mm="<<endl;
      cin>>mm;
      cout<<"yy="<<endl;
      cin>>yy;
     }

     int date::isleap(date d1)
     {
      if((d1.yy%4==0)&&(d1.yy%100!=0))
      {
                return 1;
      }
      else
       return 0;
     }

     ostream& operator<<(ostream &print,date d1)
     {
       print<<d1.dd<<"/"<<d1.mm<<"/"<<d1.yy<<endl;
       return print;
      }

      void main()
      {
       int no_of_days=0;
       date d1,d2,d3;
       clrscr();
       d1.read();
      
       cout<<"date1="<<d1;
      
       cout<<"temp="<<endl;
       cin>>no_of_days;
       d3=d1+no_of_days;
       cout<<"date3="<<d3;
       d2.read();
       cout<<"date2="<<d2;
       no_of_days=d1-d2;
       cout<<"no_of_days="<<no_of_days<<endl;
       getch();
      }
//program end


/* Sort a given set of elements using the quicksort method and determine the time required to sort the elements. Repeat the experiment for different values of n,
the number of elements in the list to be sorted and plot a graph of the time taken versus n.The elements can be read
From a file or can be generated using the random number generator*/


#include<stdio.h>
#include<time.h>
int a[10000000];
void swap1(int a[],int i,int j)
{
            int temp;
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
}
int partition(int a[],int m,int p)
{
            int i,j,pi;
            pi=a[m];
            i=m;j=p;
            while(i<=j)
            {
                        while(a[i]<=pi)
                                    i++;
                        while(a[j]>pi)
                                    j--;
                        if(i<j)
                                    swap1(a,i,j);
            }
            a[m]=a[j];
            a[j]=pi;
            return j;
}

void quicksort(int a[],int m,int p)
{
            int j;
            if(m<p)
            {
                        j=partition(a,m,p);
                        quicksort(a,m,(j-1));
                        quicksort(a,(j+1),p);
            }
}
void main()
{
            int n,i,m,p;
            double start,end,dur,maxm;
            printf("\n\nEnter the number of elements\n\n");
            scanf("%d",&n);
            for(i=0;i<n;i++)
            {
                        a[i]=rand()%100;
            }
            for(i=0;i<n;i++)
                        printf("\n\nRandom numbers are%d\t",a[i]);
            start=clock();
            for(k=0;k<maxm;k++)
            quicksort(a,m,p);
            end=clock();
            dur=(end-start)/CLOCKS_PER_SEC;
            printf("\n\nTime taken is:%lf\t\n\n",dur);
            printf("\n\nSorted array is:");
            for(i=0;i<n;i++)
                        printf("%d\t",a[i]);
            printf("\n\n");
}

/*Computer the Transitive closure of a given directed graph using warshall’s algorithm*/

#include<stdio.h>
void warshall(int);
long int ad[10][10];
void main()
{
            int i, j,n;
            printf("\n****Warshalls Algorithm****\n");
            printf("Enter the number of nodes\n\n");
            scanf("%d",&n);
            printf("\nEnter the graphs in the form of adjacency matrix\n\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                    scanf("%ld",&ad[i][j]);
            printf("\n\nThe adjacency matrix is:\n\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%ld\t",ad[i][j]);
                        printf("\n");
            }
            warshall(n);
            printf("\nThe transitive closure of given directed graph is\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%ld\t",ad[i][j]);
                        printf("\n");
            }
}
void warshall(int n)
{
            int i,j,k;
            for(k=1;k<=n;k++)
                        for(i=1;i<=n;i++)
                                    for(j=1;j<=n;j++)
                                                ad[i][j]=ad[i][j]||ad[i][k]&&ad[k][j];
           
}

                                   


/*Obtain the Topological ordering of vertices in a given digraph*/


#include<stdio.h>
int ad[10][10];
void main()
{
            int i,j,n,f=1,in=1,k,v[50000],count=0,flag;
            printf("\n\nEnter the number of nodes\n\n");
            scanf("%d",&n);
            printf("\n\nEnter the graph in the form of adjacency matrix\n\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                    scanf("%d",&ad[i][j]);
            printf("\nThe adjacency matrix is:\n\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%d\t",ad[i][j]);
                        printf("\n");
            }
            while(f)
            {
                        count++;
                        for(j=1;j<=n;j++)
                        {
                                    flag=0;
                                    for(i=1;i<=n;i++)
                                    {
                                                if(ad[i][j]==1||v[i]==j)
                                                {
                                                            flag=1;
                                                            break;
                                                }
                                    }
                                    if(flag==0)
                                    {
                                                v[in++]=j;
                                                for(k=1;k<=n;k++)
                                                            ad[j][k]=0;
                                    }
                        }
                        if(count==n)
                                    f=0;
            }
            if(in<n)
                        printf("\nThere is no topological order\n\n");
            else
            {
                        printf("\nThere is a topological order and it is::\t");
                        for(i=1;i<=n;i++)
                                    printf("%d\t",v[i]);
            }
            printf("\n\n");
}
                                   
           


/*Implement any scheme to find the optimal solution for the Traveling Salesperson problem*/



#include<stdio.h>
int tspda(int,int,int,int);
int n,c[1000][1000],start,n,temp[1000],mincost,ccost,tour[1000],mintour[1000],i,j,k;
void main()
{
            printf("\nEnter the number of nodes\n");
            scanf("%d",&n);
            printf("\nEnter the cost matrix\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                                scanf("%d",&c[i][j]);
            printf("\nEntered cost matrix is:\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%d\t",c[i][j]);
                        printf("\n");
            }
            printf("\nThe approximate tour is:\n");
            tspda();
}
int tspda(int c[10][10],int tour[10],int start,int n)
{
            if(start==n-1)
                        return(c[tour[n-1][tour[n]+c[tour[n][tour[1]];
            for(i=start+1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    temp[j]=tour[j];
                        temp[start+1]=tour[i];
                        temp[i]=temp[start+1];
                        if(c[tour[start][tour[i]]+(ccost=tspdp(c,temp,start+1,n)))<min)
                        {
                                    mincost=ccost+c[tour[start][tour[i]];
                                    for(k=1;k<=n;k++)
                                                mintour[k]=temp[k];
                        }
            }
            for(i=1;i<=n;i++)
                        tour[i]=mintour[i];
            return mincost;
}