#include<stdio.h> #include<conio.h> #include<stdlib.h> typedef struct process { int pid,st,ft,prior; int wt,tat,at,bt; int flag; }pr; int n; pr p[10]; void accept(int); void fcfs(); void disp_gantt(); void sjf_sort(); void main() { int ch,tq; clrscr(); accept(2); sjf_sort(); fcfs(); printf("\n\n\tPress any key to continue."); getch(); } void accept(int ch) { int i; printf("\n\tHow many processes: "); scanf("%d",&n); printf("\tEnter the values\n"); if(ch==1 || ch==2) { printf("\n\tArrival Time and Burst Time\n"); for(i=0;i<n;i++) { printf("\t\nEnter for Process %d :\n",i); printf("\tEnter Arrival Time : "); scanf("%d",&p[i].at); printf("\tEnter Burst Time : "); scanf("%d",&p[i].bt); p[i].pid=i; } } } void fcfs() { int i; float avgtat=0,avgwt=0; for(i=0;i<n;i++) { if(i==0) { p[i].st=i; p[i].wt=p[i].st-p[i].at; p[i].tat=p[i].wt+p[i].bt; p[i].ft=p[i].st+p[i].bt; } else { p[i].st=p[i-1].ft; p[i].wt=p[i].st-p[i].at; p[i].tat=p[i].wt+p[i].bt; p[i].ft=p[i].st+p[i].bt; } avgtat=avgtat+p[i].tat; avgwt=avgwt+p[i].wt; } avgtat=avgtat/n; avgwt=avgwt/n; disp_gantt(n); printf("\n\t** Average Turn Around Time:%f ** ",avgtat); printf("\n\t** Average waiting time:%f ** ",avgwt); } void disp_gantt() { int i; printf("\n\tGANTT CHART\n "); for(i=0;i<n;i++) { printf("\t P%d",p[i].pid); } printf("\n"); for(i=0;i<n;i++) { printf("\t %d",p[i].st); } printf("\t %d",p[i-1].ft); printf("\n"); } void sjf_sort() { int i,j; pr temp; for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) { if(p[j].bt>p[j+1].bt) { temp=p[j]; p[j]=p[j+1]; p[j+1]=temp; } } } }