[text] priority

Viewer

copydownloadembedprintName: priority
  1. #include <stdio.h>
  2.  
  3. typedef struct{
  4.         int at,bt,wt,tt,pid,flag,pr;
  5. }Process;
  6.  
  7. void swap(Process p[],int i,int j){
  8.         Process temp;
  9.         temp = p[i];
  10.         p[i] = p[j];
  11.         p[j] = temp;
  12. }
  13.  
  14. void sortid(Process p[],int n){
  15.         for(int i=1;i<n;i++){
  16.                 for(int j=0;j<n-i;j++){
  17.                         if(p[j].pid > p[j+1].pid)
  18.                                 swap(p,j,j+1);
  19.                 }
  20.         }
  21. }
  22.  
  23. void main(){
  24.         int time = 0;
  25.         printf("Priority Scheduling\n");
  26.         printf("Enter the number of process: ");
  27.         int n,i,j;
  28.         scanf("%d",&n);
  29.         Process p[n];
  30.        
  31.         for(i=0;i<n;i++){
  32.                 printf("Enter arrival time, burst time ,priority of P%d : ",i+1);
  33.                 scanf("%d %d %d",&p[i].at,&p[i].bt,&p[i].pr);
  34.                 p[i].pid = i+1;
  35.                 p[i].flag = 0;
  36.         }
  37.        
  38.         for(i=1;i<n;i++){
  39.                 for(j=0;j<n-i;j++){
  40.                         if(p[j].at>p[j+1].at){
  41.                                 swap(p,j,j+1);
  42.                         }
  43.                         else if(p[j].at==p[j+1].at && p[j].pr > p[j+1].pr){
  44.                                 swap(p,j,j+1);
  45.                         }
  46.                 }
  47.         }
  48.  
  49.         int a = n;
  50.         printf("\nGANTT CHART\n");
  51.         while(a!=0){
  52.                 int b = 1;
  53.                 int pid = 0;
  54.                 int pri = 10000;
  55.                 int f=1;
  56.                 for(i=0;i<n;i++){
  57.                         if(p[i].flag ==0){
  58.                                 f=0;
  59.                         }
  60.                         if(time >= p[i].at && p[i].pr<pri && p[i].flag ==0){
  61.                                 pid = i;
  62.                                 pri = p[i].pr;
  63.                                 b=0;
  64.                         }
  65.                 }
  66.                 if(f==1)
  67.                         break;
  68.  
  69.                 if (b==0){
  70.                         i=pid;
  71.                         p[i].wt = time-p[i].at;
  72.                         printf("|%d P%d(%d)  %d|",time,p[i].pid,p[i].pr,p[i].bt+time);
  73.                         p[i].tt = p[i].wt + p[i].bt;
  74.                         time += p[i].bt;
  75.                         p[i].flag = 1;
  76.                         a--;
  77.                 }else {
  78.                         printf("%d| * ",time );
  79.                         time++;
  80.                 }
  81.         }
  82.  
  83.         printf("\n");
  84.         sortid(p,n);
  85.         float wtavg = 0, ttavg = 0;
  86.         printf("Pno  Arrival_time  Burst_time  Waiting_time  Turnaround_time  Priority\n");
  87.         for(i=0;i<n;i++){
  88.                 printf("%3d  %11d  %9d  %12d  %14d  %8d\n",p[i].pid,p[i].at,p[i].bt,p[i].wt,p[i].tt,p[i].pr);
  89.                 wtavg += p[i].wt;
  90.                 ttavg += p[i].tt;
  91.         }
  92.  
  93.         printf("Average waiting time = %f \n",wtavg/n);
  94.         printf("Average turnaround time = %f \n",ttavg/n);
  95. }

Editor

You can edit this paste and save as new:


File Description
  • priority
  • Paste Code
  • 19 Apr-2024
  • 1.82 Kb
You can Share it: