Untitled
unknown
plain_text
a year ago
2.7 kB
6
Indexable
#include <stdio.h> struct process { int pid, arrival, burst, wait, turn; }; void sort(struct 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) { struct process temp = p[i]; p[i] = p[min]; p[min] = temp; } } } void fcfs(struct process *p, int n) { p[0].wait = 0; p[0].turn = p[0].burst; int sum = p[0].arrival; for (int 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].wait + p[i].burst; } } void gantt_chart(struct 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++) { 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(struct 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); } int main() { int n; printf("Enter the number of processes:"); scanf("%d", &n); struct 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\n"); for (int i = 0; i < n; i++) { printf("P%d\t\t%d\t\t%d\t\t%d\t\t%d\n", p[i].pid, p[i].arrival, p[i].burst, p[i].wait, p[i].turn); } printf("-----------------------------------------------------"); gantt_chart(p, n); average(p, n); return 0; }
Editor is loading...
Leave a Comment