#include<stdio.h>
#include "headfork.h"// included in attchment
#include "headbar.h"
#include "headshr.h"
main()
{
int *x,*xsav,*imin,*imax,*bar;
int shmid1,shmid2,shmid3,shmid4;
int npts,np,id,n,i,excess;
x=shared(sizeof(int)*10,&shmid1);
xsav=shared(sizeof(int)*2,&shmid2);
imin=shared(sizeof(int)*2,&shmid3);
imax=shared(sizeof(int)*2,&shmid4);
printf("Enter the size of array: ");
scanf("%d",&n);
printf("Enter the array elements :\n");
for(i=1;i<=n;i++)
scanf("%d",(x+i));
printf("Enter the no.of proc :" );
scanf("%d",&np);
bar=bar_init(np);
id=p_fork(np);
npts=n/np;
excess=n-(np*npts);
if(excess==0)
{
imin[id]=id*npts+1;
imax[id]=id*npts+npts;
}
else
{
if(id<excess)
{
imin[id]=id*(npts+1)+1;
imax[id]=imin[id]+npts;
}
else
{
imin[id]=id*npts+1+excess;
imax[id]=imin[id]+npts-1;
}
}
xsav[id]=x[imax[id]+1];
barrier(bar);
for(i=imin[id];i<=imax[id]-1;i++)
x[i]=x[i+1];
x[imax[id]]=xsav[id];
p_join(np,id);
for(i=1;i<n;i++)
printf("\n%d",x[i]);
}