#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: " ) ;
scanf ( "%d" , & n) ;
printf ( "Enter burst time for each process:\n " ) ;
for ( i = 0 ; i < n; i++ ) {
printf ( "P%d: " , i+ 1 ) ;
scanf ( "%d" , & bt[ i] ) ;
rem[ i] = bt[ i] ;
wt[ i] = 0 ;
}
printf ( "Enter time quantum: " ) ;
scanf ( "%d" , & tq) ;
while ( done < n) {
for ( i = 0 ; i < n; i++ ) {
if ( rem[ i] > 0 ) {
if ( rem[ i] > tq) {
time + = tq;
rem[ i] - = tq;
} else {
time + = rem[ i] ;
wt[ i] = time - bt[ i] ;
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 ( "\n Process\t BT\t WT\t TAT\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 ( "\n Average Waiting Time = %.2f" , total_wt / n) ;
printf ( "\n Average Turnaround Time = %.2f\n " , total_tat / n) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGludCBuLCB0cSwgaSwgdGltZSA9IDAsIGRvbmUgPSAwOwogICAgaW50IGJ0WzIwXSwgcmVtWzIwXSwgd3RbMjBdLCB0YXRbMjBdOwoKICAgIHByaW50ZigiRW50ZXIgbnVtYmVyIG9mIHByb2Nlc3NlczogIik7CiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgcHJpbnRmKCJFbnRlciBidXJzdCB0aW1lIGZvciBlYWNoIHByb2Nlc3M6XG4iKTsKICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBwcmludGYoIlAlZDogIiwgaSsxKTsKICAgICAgICBzY2FuZigiJWQiLCAmYnRbaV0pOwogICAgICAgIHJlbVtpXSA9IGJ0W2ldOwogICAgICAgIHd0W2ldID0gMDsKICAgIH0KCiAgICBwcmludGYoIkVudGVyIHRpbWUgcXVhbnR1bTogIik7CiAgICBzY2FuZigiJWQiLCAmdHEpOwoKICAgIHdoaWxlIChkb25lIDwgbikgewogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaWYgKHJlbVtpXSA+IDApIHsKICAgICAgICAgICAgICAgIGlmIChyZW1baV0gPiB0cSkgewogICAgICAgICAgICAgICAgICAgIHRpbWUgKz0gdHE7CiAgICAgICAgICAgICAgICAgICAgcmVtW2ldIC09IHRxOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aW1lICs9IHJlbVtpXTsKICAgICAgICAgICAgICAgICAgICB3dFtpXSA9IHRpbWUgLSBidFtpXTsKICAgICAgICAgICAgICAgICAgICByZW1baV0gPSAwOwogICAgICAgICAgICAgICAgICAgIGRvbmUrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmbG9hdCB0b3RhbF93dCA9IDAsIHRvdGFsX3RhdCA9IDA7CgogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHRhdFtpXSA9IHd0W2ldICsgYnRbaV07CiAgICAgICAgdG90YWxfd3QgKz0gd3RbaV07CiAgICAgICAgdG90YWxfdGF0ICs9IHRhdFtpXTsKICAgIH0KCiAgICBwcmludGYoIlxuUHJvY2Vzc1x0QlRcdFdUXHRUQVRcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBwcmludGYoIlAlZFx0JWRcdCVkXHQlZFxuIiwgaSsxLCBidFtpXSwgd3RbaV0sIHRhdFtpXSk7CgogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgV2FpdGluZyBUaW1lICAgICA9ICUuMmYiLCB0b3RhbF93dCAvIG4pOwogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgVHVybmFyb3VuZCBUaW1lICA9ICUuMmZcbiIsIHRvdGFsX3RhdCAvIG4pOwoKICAgIHJldHVybiAwOwp9Cg==