Untitled
unknown
plain_text
a year ago
1.9 kB
7
Indexable
#include <stdio.h> typedef struct{ int pid,at,bt,wt,tt,flag; }Process; void TakeInput(Process p[],int n){ for(int i=0;i<n;i++){ printf("Arrival Time, Burst time of P%d : ",i); scanf("%d %d",&p[i].at,&p[i].bt); p[i].pid = i; p[i].flag = 0; } } void swap(Process p[],int i , int j){ Process temp; temp = p[i]; p[i] = p[j]; p[j] = temp; } void sortPid(Process p[],int n){ for(int i=1;i<n;i++){ for(int j=0;j<n-i;j++){ if(p[j].pid > p[j+1].pid){ swap(p,j,j+1); } } } } void sort(Process p[],int n){ for(int i=1;i<n;i++){ for(int j=0;j<n-i;j++){ if(p[j].bt > p[j+1].bt){ swap(p,j,j+1); } } } } void display(Process p[],int n){ printf("\nSJF\n\n"); printf("Process AT BT WT TT\n"); float w=0,t=0; for(int i=0;i<n;i++){ printf("P%d %3d %3d %3d %3d\n",p[i].pid,p[i].at,p[i].bt,p[i].wt,p[i].tt); t +=p[i].tt; w +=p[i].wt; } w = w/n; t=t/n; printf("Average waiting time = %f\n", w); printf("Average waiting time = %f\n", t); } int pRemain(Process p[],int n){ for(int i=0;i<n;i++){ if(p[i].flag == 0) return 1; } return 0; } int minNextAt(Process p[],int n, int t){ int min = 999; for(int i=0;i<n;i++){ if(p[i].flag == 0 && p[i].at > t && p[i].at < min){ min = p[i].at; } } return min; } void SJF(Process p[],int n){ int t=0,test; while(pRemain(p,n)){ test = 0; for(int i=0;i<n;i++){ if(p[i].at <= t && p[i].flag==0){ printf("%d| P%d |",t,p[i].pid); test = 1; t += p[i].bt; p[i].tt = t - p[i].at; p[i].wt = p[i].tt - p[i].bt; p[i].flag = 1; break; } } if(test == 0){ printf("%d|",t); t = minNextAt(p,n,t); printf(" * |"); } } printf("%d",t ); } void main(){ int n; printf("Enter the number of process: "); scanf("%d",&n); Process p[n]; TakeInput(p,n); sort(p,n); SJF(p,n); sortPid(p,n); display(p,n); }
Editor is loading...
Leave a Comment