Blogger news

Followers

Showing posts with label computer science. Show all posts
Showing posts with label computer science. Show all posts
Tuesday, August 12, 2014

/*C program to create a file with 16 bytes of arbitrary data from the beginning and another 16 bytes of arbitrary data from an offset of 48.Display the following file contents to demonstrate how the hole in a file is handled */

#include<stdio.h>
#include<fcntl.h>
#include"string.h"


int main()
{
   
    //create a new file by named as file.txt

    int n=creat("file.txt","w");
    char ch[16]="hello world how are";
    char str[20]="od -c file.txt";
   //change permission of file.txt with maximum access

    system("chmod 777 file.txt");
   //write "helloworld string in file.txt     
   write(n,ch,16);
   // to move cursor from begging to 48th position 
    lseek(n,48,SEEK_SET);
  //write "helloworld string in file.txt     

  write(n,ch,16);
    // to prompt command in command prompt
    system(str);
    return(0);
}




 
/*C program to create a file with 16 bytes of arbitrary data from the beginning and another 16 bytes of arbitrary data from an offset of 48.Display the following file contents to demonstrate how the hole in a file is handled with using Command Line Arguments*/
#include<stdio.h>
#include<fcntl.h>
#include"string.h"


int main(int argc,char *argv[])
{
   
      int n=creat(argv[1],"w");
    char ch[16]="hello world how are";
    char str[20]="od -c ";
    char mode[20]="chmod 777 ";

    write(n,ch,16);    
     lseek(n,48,SEEK_SET);
     write(n,ch,16);
    strcat(mode,argv[1]);
       
    system(mode);
   
    strcat(str,argv[1]);
       
    system(str);
    return(0);
}

--------------------------------
screenshot:
output screenshot of vtu sylabus program|OS and SS Laboratory
 
#A non-recursive shell script that accepts any number of arguments and prints #them in the Recursive order, (For example,if the script is named rargs,then #executing rags ABC should produce CBA on the standard output)

echo "input string is :$*"
for x in "$@"
do
y=$x" "$y
done
echo "reversed string is: $y"

---------
output:

sh <filename>.sh x y z
input sting is :x y z
reversed string is: z y x 
/* C program to do the following: Using fork() create a childprocess. The child process prints it's own process-id and id of it's parent and then exits. The parent process waits for it's child to finish(by executing the wait()) and prints it's own process-id and the id of it's child process and then exits*/
#include<stdio.h>
#include<string.h>

int main()
{
    char i[10];
    int n,status=0;
    for(;;)
    {
    printf(">");
    gets(i);
    n=fork();
   
    if(n==0)
    {
        printf("my process  id =%d\n",getpid());
        printf("my parent process id=%d\n",getppid());
        exit(0);   
    }
    else if(n>0)
    {
        while(waitpid(n,status,0)<0)
        {   
           
            break;
        }
        printf("the child process=%d\n",n);
        printf("my id is=%d\n",getpid());
    }
    else
    {
        printf("error\n");
    }
    }
    return (0);
}
Monday, July 21, 2014
/* 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;
}



/*Find a subset of a given set S = {sl, s2,.....,sn} of n positive integerswhose sum is equal to a given positive integer d. For example, if S={1, 2, 5, 6, 8} and d = 9 there are two solutions{1,2,6}and{1,8}.Asuitable message is to be displayed if the given problem instancedoesn't have a solution.*/




#include<stdio.h>
void subset(int,int,int);
int i,w[10],n,sum=0,x[10],c=0,k,r,d;
void main()
{
            printf("\nEnter the number of elements\n");
            scanf("%d",&n);
            printf("\nEnter the elements in the ascending order\n");
            for(i=0;i<n;i++)
                        scanf("%d",&w[i]);
            printf("\nEnter the sum:\n");
            scanf("%d",&d);
            for(i=0;i<n;i++)
                        sum=sum+w[i];
            if(sum<d || d<w[0])
                        printf("\nSubset is not possible\n");
            subset(0,0,sum);
            if(c==0)
                        printf("\nSubset is not possible\n");
}
void subset(int cs,int k,int r)
{
            x[k]=1;
            if(cs+w[k]==d)
            {
                        printf("\nSolution %d is: {",++c);
                        for(i=0;i<=k;i++)
                                    if(x[i]==1)
                                                printf("%d,",w[i]);
                        printf("\b }");
            }
            else if(cs+w[k]+w[k+1]<=d)
                        subset(cs+w[k],k+1,r-w[k]);
            if(cs+r-w[k]>=d && cs+w[k+1]<=d)
            {
                        x[k]=0;
                        subset(cs,k+1,r-w[k]);
            }
}



/*From a given vertex in a weighted connected graph, find shortest paths to other vertices using Dijkstra's algorithm.*/



#include<stdio.h>
int cost[10][10],n,sv,i,j,v,count=0,w,min,t,w,dist[10],visited[10],path[10];
void dj();
void print();
void main()
{
            printf("\n\nEnter the number of nodes\n\n");
            scanf("%d",&n);
            printf("\n\nEnter the cost matrix\n\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                                scanf("%d",&cost[i][j]);
            printf("\nEntered cost matrix is:\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%d\t",cost[i][j]);
                        printf("\n");
            }
            printf("\nEnter the source node\n");
            scanf("%d",&sv);
            dj();
            print();
}
void dj()
{
            for(i=1;i<=n;i++)
            {
                        visited[i]=0;
                        dist[i]=cost[sv][i];
                        if(cost[sv][i]==999)
                                    path[i]=0;
                        else
                                    path[i]=sv;
            }
            visited[sv]=1;
            while(count<=n)
            {
                        min=999;
                        for(w=1;w<=n;w++)
                                    if(dist[w]<=min&&!visited[w])
                                    {
                                                min=dist[w];
                                                v=w;
                                    }
                        visited[v]=1;
                        count++;
                        for(w=1;w<=n;w++)
                                    if(dist[w]>dist[v]+cost[v][w])
                                    {
                                                dist[w]=dist[v]+cost[v][w];
                                                path[w]=v;
                                    }
            }
}
void print()
{
            for(w=1;w<=n;w++)
                        if(visited[w]==1 && w!=sv)
                        {
                                    printf("\nThe sorted distance between %d-->%d=%d",sv,w,dist[w]);
                                    t=path[w];
                                    printf("\nThe path is:\n");
                                    printf("%d",w);
                                    while(t!=sv)
                                    {
                                                printf("-->%d",t);
                                                t=path[t];
                                    }
                                    printf("<-->%d",sv);
                        }
}
           
           


/* Implement All-Pairs Shortest Paths Problem using Floyd's algorithm. Parallelize this algorithm, implement it using OpenMP and determine the speed-up achieved.*/





#include<stdio.h>
#include<omp.h>
#include<time.h>
void floyds(int);
int min(int,int);
int cost[10][10],n,i,j,k,a,b;
double start,end,dur;
void main()
{
            printf("Enter the number of nodes\n\n");
            scanf("%d",&n);
           
            printf("\nEnter the cost matrix\n\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                    scanf("%d",&cost[i][j]);
            printf("\n\nThe cost matrix is:\n\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%d\t",cost[i][j]);
                        printf("\n");
            }
            start=clock();
            for(i=1;i<=100000;i++)
            floyds(n);
            end=clock();
            dur=(end-start)/CLOCKS_PER_SEC;
            printf("\nTime taken is:%f\t\n",dur);
            printf("\nThe minimum cost matrix is:\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%d\t",cost[i][j]);
                        printf("\n");
            }
}
void floyds(int n)
{
            omp_set_num_threads(4);
            #pragma omp parallel for private(i,j,k)
           
                       
                        for(k=1;k<=n;k++)
                        {
                                    usleep(100);
                                    for(i=1;i<=n;i++)
                                                for(j=1;j<=n;j++)
                                   
                                                            cost[i][j]=min(cost[i][j],cost[i][k]+cost[k][j]);
                                               
            }
           
}
int min(int a,int b)
{
            if(a>b)
                        return b;
            else
                        return a;
}