#include <stdio.h>
int main() {
char process[5][3] = {"P1", "P2", "P3", "P4", "P5"};
int arrival[5] = {3, 5, 0, 5, 4};
int burst[5] = {4, 3, 2, 1, 3};
int waiting[5], turnaround[5];
int start[5], finish[5];
int n = 5, i, j, temp;
float totalWT = 0, totalTAT = 0;
// Sort according to arrival time
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (arrival[i] > arrival[j]) {
temp = arrival[i]; arrival[i] = arrival[j]; arrival[j] = temp;
temp = burst[i]; burst[i] = burst[j]; burst[j] = temp;
char t[3];
sprintf(process
[i
], "%s", process
[j
]); }
}
}
int currentTime = 0;
for (i = 0; i < n; i++) {
if (currentTime < arrival[i])
currentTime = arrival[i];
start[i] = currentTime;
finish[i] = start[i] + burst[i];
turnaround[i] = finish[i] - arrival[i];
waiting[i] = turnaround[i] - burst[i];
totalWT += waiting[i];
totalTAT += turnaround[i];
currentTime = finish[i];
}
printf("\n--- FCFS Scheduling ---\n"); printf("Process\tAT\tBT\tWT\tTAT\n"); for (i = 0; i < n; i++) {
printf("%s\t%d\t%d\t%d\t%d\n", process[i], arrival[i], burst[i], waiting[i], turnaround[i]);
}
printf("\nAverage Waiting Time = %.2f", totalWT
/ n
); printf("\nAverage Turnaround Time = %.2f\n", totalTAT
/ n
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGNoYXIgcHJvY2Vzc1s1XVszXSA9IHsiUDEiLCAiUDIiLCAiUDMiLCAiUDQiLCAiUDUifTsKICAgIGludCBhcnJpdmFsWzVdID0gezMsIDUsIDAsIDUsIDR9OwogICAgaW50IGJ1cnN0WzVdID0gezQsIDMsIDIsIDEsIDN9OwogICAgaW50IHdhaXRpbmdbNV0sIHR1cm5hcm91bmRbNV07CiAgICBpbnQgc3RhcnRbNV0sIGZpbmlzaFs1XTsKICAgIGludCBuID0gNSwgaSwgaiwgdGVtcDsKICAgIGZsb2F0IHRvdGFsV1QgPSAwLCB0b3RhbFRBVCA9IDA7CgogICAgLy8gU29ydCBhY2NvcmRpbmcgdG8gYXJyaXZhbCB0aW1lCiAgICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGlmIChhcnJpdmFsW2ldID4gYXJyaXZhbFtqXSkgewogICAgICAgICAgICAgICAgdGVtcCA9IGFycml2YWxbaV07IGFycml2YWxbaV0gPSBhcnJpdmFsW2pdOyBhcnJpdmFsW2pdID0gdGVtcDsKICAgICAgICAgICAgICAgIHRlbXAgPSBidXJzdFtpXTsgYnVyc3RbaV0gPSBidXJzdFtqXTsgYnVyc3Rbal0gPSB0ZW1wOwogICAgICAgICAgICAgICAgY2hhciB0WzNdOyAKICAgICAgICAgICAgICAgIHNwcmludGYodCwgIiVzIiwgcHJvY2Vzc1tpXSk7IAogICAgICAgICAgICAgICAgc3ByaW50Zihwcm9jZXNzW2ldLCAiJXMiLCBwcm9jZXNzW2pdKTsgCiAgICAgICAgICAgICAgICBzcHJpbnRmKHByb2Nlc3Nbal0sICIlcyIsIHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGludCBjdXJyZW50VGltZSA9IDA7CgogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChjdXJyZW50VGltZSA8IGFycml2YWxbaV0pCiAgICAgICAgICAgIGN1cnJlbnRUaW1lID0gYXJyaXZhbFtpXTsKCiAgICAgICAgc3RhcnRbaV0gPSBjdXJyZW50VGltZTsKICAgICAgICBmaW5pc2hbaV0gPSBzdGFydFtpXSArIGJ1cnN0W2ldOwogICAgICAgIHR1cm5hcm91bmRbaV0gPSBmaW5pc2hbaV0gLSBhcnJpdmFsW2ldOwogICAgICAgIHdhaXRpbmdbaV0gPSB0dXJuYXJvdW5kW2ldIC0gYnVyc3RbaV07CgogICAgICAgIHRvdGFsV1QgKz0gd2FpdGluZ1tpXTsKICAgICAgICB0b3RhbFRBVCArPSB0dXJuYXJvdW5kW2ldOwoKICAgICAgICBjdXJyZW50VGltZSA9IGZpbmlzaFtpXTsKICAgIH0KCiAgICBwcmludGYoIlxuLS0tIEZDRlMgU2NoZWR1bGluZyAtLS1cbiIpOwogICAgcHJpbnRmKCJQcm9jZXNzXHRBVFx0QlRcdFdUXHRUQVRcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50ZigiJXNcdCVkXHQlZFx0JWRcdCVkXG4iLAogICAgICAgICAgICAgICBwcm9jZXNzW2ldLCBhcnJpdmFsW2ldLCBidXJzdFtpXSwgd2FpdGluZ1tpXSwgdHVybmFyb3VuZFtpXSk7CiAgICB9CgogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgV2FpdGluZyBUaW1lID0gJS4yZiIsIHRvdGFsV1QgLyBuKTsKICAgIHByaW50ZigiXG5BdmVyYWdlIFR1cm5hcm91bmQgVGltZSA9ICUuMmZcbiIsIHRvdGFsVEFUIC8gbik7CgogICAgcmV0dXJuIDA7Cn0K