PRIORITY NON PREEMPTIVE WITH ARRIVAL TIME

#include<stdio.h>
main()
{
  int n,i;
 
  printf("enter the No. processes ");
  scanf("%d",&n);
 
  int at[n],bt[n],pri[n];
 
  for(i=0;i<n;i++)
  {
    printf("Enter the arrival time, burst time and priority of %d process ",i+1);
    scanf("%d%d%d",&at[i],&bt[i],&pri[i]);
  }
 
  int j,temp;
 
  for(i=0;i<n;i++)
  {
    for(j=0;j<n;j++)
    {
      if(at[i]<at[j])/*sorting acc to arrival time*/
      {
        temp=at[j];
        at[j]=at[i];
        at[i]=temp;
        temp=bt[j];
        bt[j]=bt[i];
        bt[i]=temp;
      }
    }
  }
 
  int k=1,burst=0,min;
 
  for(j=0;j<n;j++)
  {
    burst=burst+bt[j];
    min=bt[k];
    for(i=k;i<n;i++)/*main logic*/
    {
      min=pri[k];
      if(burst>=at[i])
      {
        if(pri[i]<min)
        {
          temp=at[k];
          at[k]=at[i];
          at[i]=temp;
          temp=bt[k];
          bt[k]=bt[i];
          bt[i]=temp;
          temp=pri[k];
          pri[k]=pri[i];
          pri[i]=temp;
        }
      }
    }
    k++;
  }
 
  int wt[n],tt[n];
  int sum=0,ta=0;
  float wsum=0,wavg,tsum=0,tavg;
 
  wt[0]=0;
  for(i=1;i<n;i++)
  {
    sum=sum+bt[i-1];
    wt[i]=sum-at[i];
    wsum=wsum+wt[i];
  }
  wavg=wsum/n;
 
  for(i=0;i<n;i++)
  {
    ta=ta+bt[i];
    tt[i]=ta-at[i];
    tsum=tsum+tt[i];
  }
  tavg=tsum/n;
 
  printf("************************");
  printf("\nRESULT:-\tVARIOUS TIMES");
  printf("\npro\tarrival\tburst\tpriority");

  for(i=0;i<n;i++)
  printf("\np%d\t%d\t%d\t%d",i+1,at[i],bt[i],pri[i]);

  printf("\nwaiting\tturnaround");

  for(i=0;i<n;i++)
  printf("\n%d\t%d",wt[i],tt[i]);

  printf("\nAVERAGE WAITING TIME:-  %f ms",wavg);
  printf("\nAVERAGE TURN AROUND TIME:-  %f ms" ,tavg);
}

Comments