///PROGRAM TO IMPLEMENT PRIORITY SCHEDULING


#include<stdio.h>
#include<conio.h>
#define MAX 20
struct proces
{
 int burst;
 char name[MAX];
 int prio;
 };
int main()
{
 struct proces arr[MAX],temp;
 int n,i,j,sum,start[MAX],finish[MAX],wait[MAX],turn[MAX];
 float avgwait=0.0,avgturn=0.0;
 printf("\n\tEnter the number of process\t");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
   printf("\n\tEnter process name for process P%d\t",i+1);
   scanf("%s",arr[i].name);
   printf("\n\tEnter priority for process P%d\t",i+1);
   scanf("%d",&arr[i].prio);
   printf("\n\tEnter burst time for process P%d\t",i+1);
   scanf("%d",&arr[i].burst);
 }
 //sort
for(i=0;i<n;i++)
 {
   for(j=i;j<n;j++)
    {
      if(arr[i].prio>arr[j].prio)
    {
        temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }
      }
 }
 for(i=0;i<n;i++)
  {
    sum=0;
    for(j=0;j<i;j++)
     {
       sum=sum+arr[j].burst;
     }
    start[i]=sum;
  }
  for(i=0;i<n;i++)
  {
    wait[i]=start[i];
    finish[i]=wait[i]+arr[i].burst;
    turn[i]=wait[i]+arr[i].burst;
    avgwait=avgwait+wait[i];
    avgturn=avgturn+turn[i];
  }
avgwait=avgwait/n;
avgturn=avgturn/n;



 printf("\nPname burst_t prio. start_t finish_t wait_t turnaroundtime");
    for(i=0;i<n;i++)
    {
     printf("\n%s\t%d\t%d\t%d\t%d\t%d\t%d",arr[i].name,arr[i].burst,arr[i].prio,start[i],finish[i],wait[i],turn[i]);
    }
    printf("\n\tAverage waiting time=%.2f",avgwait);
    printf("\n\tAverage turnaround time%.2f",avgturn);
    getch();
    return 0;
   }

Comments