#include <stdio.h>
int main() {
int n
, tq
, i
, time = 0, done
= 0; int bt[20], rem[20], wt[20], tat[20];
printf("Enter number of processes: \n");
if (n <= 0) {
printf("Invalid number of processes.\n"); return 0;
}
printf("Enter burst time for each process:\n"); for (i = 0; i < n; i++) {
rem[i] = bt[i];
wt[i] = 0; // Initialize waiting time
}
printf("Enter time quantum: ");
if (tq <= 0) {
printf("Invalid time quantum.\n"); return 0;
}
while (done < n) {
for (i = 0; i < n; i++) {
if (rem[i] > 0) {
if (rem[i] > tq) {
rem[i] -= tq;
} else {
rem[i] = 0;
done++;
}
}
}
}
float total_wt = 0, total_tat = 0;
for (i = 0; i < n; i++) {
tat[i] = wt[i] + bt[i];
total_wt += wt[i];
total_tat += tat[i];
}
printf("\nProcess\tBT\tWT\tTAT\n"); for (i = 0; i < n; i++) {
printf("P%d\t%d\t%d\t%d\n", i
+ 1, bt
[i
], wt
[i
], tat
[i
]); }
printf("\nAverage Waiting Time = %.2f", total_wt
/ n
); printf("\nAverage Turnaround Time = %.2f\n", total_tat
/ n
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGludCBuLCB0cSwgaSwgdGltZSA9IDAsIGRvbmUgPSAwOwogICAgaW50IGJ0WzIwXSwgcmVtWzIwXSwgd3RbMjBdLCB0YXRbMjBdOwoKICAgIHByaW50ZigiRW50ZXIgbnVtYmVyIG9mIHByb2Nlc3NlczogXG4iKTsKICAgIHNjYW5mKCIlZCIsICZuKTsKCiAgICBpZiAobiA8PSAwKSB7CiAgICAgICAgcHJpbnRmKCJJbnZhbGlkIG51bWJlciBvZiBwcm9jZXNzZXMuXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBwcmludGYoIkVudGVyIGJ1cnN0IHRpbWUgZm9yIGVhY2ggcHJvY2VzczpcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50ZigiUCVkOiAiLCBpICsgMSk7CiAgICAgICAgc2NhbmYoIiVkIiwgJmJ0W2ldKTsKICAgICAgICByZW1baV0gPSBidFtpXTsKICAgICAgICB3dFtpXSA9IDA7ICAvLyBJbml0aWFsaXplIHdhaXRpbmcgdGltZQogICAgfQoKICAgIHByaW50ZigiRW50ZXIgdGltZSBxdWFudHVtOiAiKTsKICAgIHNjYW5mKCIlZCIsICZ0cSk7CgogICAgaWYgKHRxIDw9IDApIHsKICAgICAgICBwcmludGYoIkludmFsaWQgdGltZSBxdWFudHVtLlxuIik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgd2hpbGUgKGRvbmUgPCBuKSB7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpZiAocmVtW2ldID4gMCkgewogICAgICAgICAgICAgICAgaWYgKHJlbVtpXSA+IHRxKSB7CiAgICAgICAgICAgICAgICAgICAgdGltZSArPSB0cTsKICAgICAgICAgICAgICAgICAgICByZW1baV0gLT0gdHE7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRpbWUgKz0gcmVtW2ldOwogICAgICAgICAgICAgICAgICAgIHd0W2ldID0gdGltZSAtIGJ0W2ldOwogICAgICAgICAgICAgICAgICAgIHJlbVtpXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgZG9uZSsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZsb2F0IHRvdGFsX3d0ID0gMCwgdG90YWxfdGF0ID0gMDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgdGF0W2ldID0gd3RbaV0gKyBidFtpXTsKICAgICAgICB0b3RhbF93dCArPSB3dFtpXTsKICAgICAgICB0b3RhbF90YXQgKz0gdGF0W2ldOwogICAgfQoKICAgIHByaW50ZigiXG5Qcm9jZXNzXHRCVFx0V1RcdFRBVFxuIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJQJWRcdCVkXHQlZFx0JWRcbiIsIGkgKyAxLCBidFtpXSwgd3RbaV0sIHRhdFtpXSk7CiAgICB9CgogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgV2FpdGluZyBUaW1lICAgICA9ICUuMmYiLCB0b3RhbF93dCAvIG4pOwogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgVHVybmFyb3VuZCBUaW1lICA9ICUuMmZcbiIsIHRvdGFsX3RhdCAvIG4pOwoKICAgIHJldHVybiAwOwp9Cg==