SJF Non-Preemptive with arrival time

#include<stdio.h>
#include<malloc.h>
main()
{
   float min,sum=0,avg=0;
   int n,i,j,pos;

   puts("Enter the number of processes");
   scanf("%d",&n);

   float p[n],a[n];

   puts("Enter the arrival time and burst time with space");
   for(i=0;i<n;i++)
   scanf("%f%f",&a[i],&p[i]);

   printf("Process\tArrival Time\tBurst time\n");
   for(i=0;i<n;i++)
   printf("P[%d]\t%.1f\t\t%.1f\n",i+1,a[i],p[i]);

   float fin[n],k=0,wt[n];

   for(i=0;i<n;i++)
   {
      wt[i]=fin[i]=0;
      pos=i;
      for(j=i+1;j<n;j++)
      {
         if(a[pos]>a[j])
         pos=j;
      }
      a[pos]=a[pos]+a[i]-(a[i]=a[pos]);
      p[pos]=p[pos]+p[i]-(p[i]=p[pos]);
   }

   pos=0;i=0;j=0;
   int x;
   while(i<n)
   {
      if(p[i]==0)
      {
         p[i]=-1;
         i++;
      }
      else if(p[i]>0)
      {
         wt[pos]=k;
         k+=p[pos];
         fin[pos]=k;

         while(j<n&&p[j]>0&&p[pos]>=a[j])
         j++;
     
         p[pos]=0;
         pos=0;
  
         while(p[pos]<=0)
         pos++;
     
         for(x=0;x<j;x++)
         {
           if(p[x]>0&&p[pos]>p[x])
           pos=x;
         }
      }
   }
 
  float awt=0,atat=0;
  for(i=0;i<n;i++)
  {
    printf("w=%.0f f=%.0f\n",wt[i],fin[i]);
    awt+=wt[i]-a[i];
    atat+=fin[i]-a[i];
  }
  printf("AVG WAITING TIME = %.02f\nAVG TURN AROUND TIME = %.02f\n",awt/n,atat/n);
}

Comments