Blogger news

Followers

Showing posts with label bachelor of engineering. Show all posts
Showing posts with label bachelor of engineering. 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);
}
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
/*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;
}


/*Check whether a given graph is connected or not using DFSmethod.*/


#include<stdio.h>
void dfs(int i);
int i,j,adj[1000][1000],v[1000],w,n,count;
void main()
{
            printf("\nEnter the number of nodes\n");
            scanf("%d",&n);
            printf("\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",&adj[i][j]);
            printf("\n\nThe adjacency matrix is:\n\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%d\t",adj[i][j]);
                        printf("\n");
            }
            for(i=1;i<=n;i++)
            {
                        count=0;
                        for(j=1;j<=n;j++)
                                    v[j]=0;
                        dfs(i);
                        if(count==n)
                        {
                                    printf("\nThe entered graph is connected\n");
                                    return;
                        }
            }
            printf("\nThe entered graph is not connected\n");
}
void dfs(int i)
{
            int w;
            count++;
            v[i]=1;
            for(w=1;w<=n;w++)
                        if(adj[i][w]==1 && !v[w])
                                    dfs(w);
}
           


/*Print all the nodes reachable from a given starting node in a digraph using BFS method.*/


#include<stdio.h>
int i,j,s,a[100][100],q[100],visited[100],u,rear,front,n;
void bfs();
void main()
{
            printf("\nEnter the number of nodes:\n");
            scanf("%d",&n);
            printf("\nEnter the adjacency matrix:\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                    scanf("%d",&a[i][j]);
            printf("\nThe entered adjacency matrix is:\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)
                                    printf("%d\t",a[i][j]);
                        printf("\n");
            }
            printf("\nEnter the source vertex:\n");
            scanf("%d",&s);
            bfs();
            for(i=1;i<=n;i++)
            {
                        if(visited[i])
                                    printf("\nNode %d is reachable from source node %d",i,s);
                        else
                                    printf("\nNode %d is not reachable from source node %d",i,s);
            }
}
void bfs()
{
            q[rear]=s;
            visited[s]=1;
            while(front<=rear)
            {
                        u=q[front];
                        front=front+1;
                        for(i=1;i<=n;i++)
                                    if(a[u][i] && !visited[i])
                                    {
                                                rear=rear+1;
                                                q[rear]=i;
                                                visited[i]=1;
                                    }
            }
}


/*Find Minimum Cost Spanning Tree of a given undirected graph using Kruskal's algorithm.*/



#include<stdio.h>
int ne,i,j,min,u,v,cost[100][100],n,a,b,parent[100],mincost=0;
void kruskal()
{
            ne=1;
            while(ne<n)
            {
                        for(i=1,min=999;i<=n;i++)
                                    for(j=1;j<=n;j++)
                                    {
                                                if(cost[i][j]<min)
                                                {
                                                            min=cost[i][j];
                                                            a=u=i;
                                                            b=v=j;
                                                }
                                    }
                        while(parent[u])
                                    u=parent[u];
                        while(parent[v])
                                    v=parent[v];
                        if(u!=v)
                        {
                                    printf("%d>minimum edge from %d to %d is %d\n",ne++,a,b,min);
                                    mincost+=min;         
                                    parent[v]=u;
                        }
                        cost[a][b]=cost[b][a]=999;
            }
}
void main()
{
            printf("\nEnter the number of nodes\n");
            scanf("%d",&n);
            printf("\nEnter the weight of each nodes\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                    scanf("%d",&cost[i][j]);
            printf("\nEntered weights are:\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)         
                                    printf("%d\t",cost[i][j]);
                        printf("\n");
            }
            kruskal();
}


/*Find Minimum Cost Spanning Tree of a given undirected graph using Prim’s algorithm.*/

#include<stdio.h>
int i,j,min,nearv[100],cost[100][100],t[100][100],s,n,u,mincost=0,k;
void prims()
{
            for(i=2;i<=n;i++)
                        nearv[i]=1;
            nearv[1]=0;
            for(i=1;i<n;i++)
            {
                        min=999;
                        for(j=1;j<=n;j++)
                        {
                                    if(nearv[j]!=0 && cost[j][nearv[j]]<min)
                                    {
                                                min=cost[j][nearv[j]];
                                                u=j;
                                    }
                        }
                        t[i][1]=u;
                        t[i][2]=nearv[u];
                        mincost+=min;nearv[u]=0;
                        for(k=1;k<=n;k++)
                        {
                                    if(nearv[k]!=0 && cost[k][nearv[k]]>cost[k][u])
                                                nearv[k]=u;
                        }
                        printf("%d)edge(%d,%d),cost=%d\n",i,t[i][1],t[i][2],min);
            }
}
void main()
{
            printf("\nEnter the number of nodes\n");
            scanf("%d",&n);
            printf("\nEnter the weight of each nodes\n");
            for(i=1;i<=n;i++)
                        for(j=1;j<=n;j++)
                                    scanf("%d",&cost[i][j]);
            printf("\nEntered weights are:\n");
            for(i=1;i<=n;i++)
            {
                        for(j=1;j<=n;j++)         
                                    printf("%d\t",cost[i][j]);
                        printf("\n");
            }
            prims();
}