Untitled
unknown
c_cpp
a year ago
2.1 kB
3
Indexable
#include <stdio.h> struct process { int pid,arrival,burst,wait,turn; } process; void sort(process *p,int n) { for(int i=0;i<n-1;i++) { int min=i; for(int j=i+1;j<n;j++) { if(p[min].arrival>p[j].arrival) { min=j; } if(i!=min) { process temp=p[i]; p[i]=p[min]; p[min]=temp; } } } void fcfs(process *p,int n) { p[0].wait=0; p[0].turn=p[0].burst; int sum=p[0].arrival; for(i=1;i<n;i++) { sum+=p[i-1].burst; p[i].wait=sum-p[i].arrival; if(p[i].wait<0) { p[i].wait=0; p[i].turn=p[i].burst+p[i].wait; } } } void gantt chart(process *p,int n) { printf("\n\n"); for(int i=0;i<p[n-1].turn;i++) { printf(" "); } printf("GANTT Chart\n\n"); int i,j; for(i=0;i<n;i++) { for(j=0;j<p[i].burst;j++)IK+{o printf("--"); printf(" "); } } printf("\n|"); for(i=0;i<n;i++) { for(j=0;j<p[i].burst-1;j++) { printf(" "); } printf("|"); } printf("\n%d",p[0].arrival); for(i=0;i<n;i++) { printf(" "); if(p[i].turn+p[i].arrival>9) { printf("\b"); } printf("%d",p[i].turn+p[i].arrival); } printf("\n"); } void average(process *p,int n) { float sumw=0;sumt=0; for(int i=0;i<n;i++) { sumw+=p[i].wait; sumt+=p[i].turn; } printf("\n\naverage waiting time=%0.3f",sumw/n); printf("\nAverage Turnaround Time=%0.3f\n",sumt\n); } void main() { int n; printf("Enter the number of processes:"); scanf("%d",&n); process p[10]; printf("Enter the arrival times of processes"); for(int i=0;i<n;i++) { scanf("%d",&p[i].arrival); } printf("Enter the burst times of processes:"); for( int i=0;i<n;i++) { scanf("%d",&p[i].burst); p[i].pid=i+1; } sort(p,n); fcfs(p,n); printf("\n-----------------------------------------------------\n"); printf("Processes Arrival time Burst time Waiting time TurnAround Time"); for(i=0;i<n;i++) { printf("P%d\t\%d\t\t%d\t\t%d\t\t%d\n"); p[i].pid,p[i].arrival,p[i].burstp[i].wait,p[i].turn); } printf("-----------------------------------------------------"); gantt chart(p,n); average(p,n);
Editor is loading...
Leave a Comment