#include <stdio.h>
int main( ) {
int n, tq;
int at[ 10 ] , bt[ 10 ] , rt[ 10 ] , ct[ 10 ] ;
int tat[ 10 ] , wt[ 10 ] ;
int time = 0 , completed = 0 ;
float avg_tat = 0 , avg_wt = 0 ;
printf ( "Enter number of processes: " ) ;
scanf ( "%d" , & n) ;
printf ( "Enter Arrival Time and Burst Time:\n " ) ;
for ( int i = 0 ; i < n; i++ ) {
printf ( "P%d: " , i + 1 ) ;
scanf ( "%d %d" , & at[ i] , & bt[ i] ) ;
rt[ i] = bt[ i] ;
}
printf ( "Enter Time Quantum: " ) ;
scanf ( "%d" , & tq) ;
printf ( "\n Gantt Chart:\n " ) ;
while ( completed < n) {
int executed = 0 ;
for ( int i = 0 ; i < n; i++ ) {
if ( at[ i] <= time && rt[ i] > 0 ) {
executed = 1 ;
printf ( "| P%d (%d-%d) " , i + 1 , time ,
time + ( rt[ i] > tq ? tq : rt[ i] ) ) ;
if ( rt[ i] > tq) {
time + = tq;
rt[ i] - = tq;
} else {
time + = rt[ i] ;
rt[ i] = 0 ;
ct[ i] = time ;
completed++ ;
}
}
}
if ( ! executed)
time ++ ;
}
printf ( "|\n " ) ;
printf ( "Process AT BT CT TAT WT\n " ) ;
for ( int i = 0 ; i < n; i++ ) {
tat[ i] = ct[ i] - at[ i] ;
wt[ i] = tat[ i] - bt[ i] ;
avg_tat + = tat[ i] ;
avg_wt + = wt[ i] ;
printf ( "P%d %d %d %d %d %d\n " ,
i + 1 , at[ i] , bt[ i] , ct[ i] , tat[ i] , wt[ i] ) ;
}
printf ( "Average Turnaround Time = %.2f\n " , avg_tat / n) ;
printf ( "Average Waiting Time = %.2f\n " , avg_wt / n) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGludCBuLCB0cTsKICAgIGludCBhdFsxMF0sIGJ0WzEwXSwgcnRbMTBdLCBjdFsxMF07CiAgICBpbnQgdGF0WzEwXSwgd3RbMTBdOwogICAgaW50IHRpbWUgPSAwLCBjb21wbGV0ZWQgPSAwOwogICAgZmxvYXQgYXZnX3RhdCA9IDAsIGF2Z193dCA9IDA7CgogICAgcHJpbnRmKCJFbnRlciBudW1iZXIgb2YgcHJvY2Vzc2VzOiAiKTsKICAgIHNjYW5mKCIlZCIsICZuKTsKCiAgICBwcmludGYoIkVudGVyIEFycml2YWwgVGltZSBhbmQgQnVyc3QgVGltZTpcbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBwcmludGYoIlAlZDogIiwgaSArIDEpOwogICAgICAgIHNjYW5mKCIlZCAlZCIsICZhdFtpXSwgJmJ0W2ldKTsKICAgICAgICBydFtpXSA9IGJ0W2ldOwogICAgfQoKICAgIHByaW50ZigiRW50ZXIgVGltZSBRdWFudHVtOiAiKTsKICAgIHNjYW5mKCIlZCIsICZ0cSk7CgogICAgcHJpbnRmKCJcbkdhbnR0IENoYXJ0OlxuIik7CgogICAgd2hpbGUgKGNvbXBsZXRlZCA8IG4pIHsKICAgICAgICBpbnQgZXhlY3V0ZWQgPSAwOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpZiAoYXRbaV0gPD0gdGltZSAmJiBydFtpXSA+IDApIHsKICAgICAgICAgICAgICAgIGV4ZWN1dGVkID0gMTsKCiAgICAgICAgICAgICAgICBwcmludGYoInwgUCVkICglZC0lZCkgIiwgaSArIDEsIHRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgdGltZSArIChydFtpXSA+IHRxID8gdHEgOiBydFtpXSkpOwoKICAgICAgICAgICAgICAgIGlmIChydFtpXSA+IHRxKSB7CiAgICAgICAgICAgICAgICAgICAgdGltZSArPSB0cTsKICAgICAgICAgICAgICAgICAgICBydFtpXSAtPSB0cTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGltZSArPSBydFtpXTsKICAgICAgICAgICAgICAgICAgICBydFtpXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgY3RbaV0gPSB0aW1lOwogICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWV4ZWN1dGVkKQogICAgICAgICAgICB0aW1lKys7CiAgICB9CgogICAgcHJpbnRmKCJ8XG4iKTsKCiAgICBwcmludGYoIlByb2Nlc3MgQVQgQlQgQ1QgVEFUIFdUXG4iKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgdGF0W2ldID0gY3RbaV0gLSBhdFtpXTsKICAgICAgICB3dFtpXSA9IHRhdFtpXSAtIGJ0W2ldOwoKICAgICAgICBhdmdfdGF0ICs9IHRhdFtpXTsKICAgICAgICBhdmdfd3QgKz0gd3RbaV07CgogICAgICAgIHByaW50ZigiUCVkICVkICVkICVkICVkICVkXG4iLAogICAgICAgICAgICAgICBpICsgMSwgYXRbaV0sIGJ0W2ldLCBjdFtpXSwgdGF0W2ldLCB3dFtpXSk7CiAgICB9CgogICAgcHJpbnRmKCJBdmVyYWdlIFR1cm5hcm91bmQgVGltZSA9ICUuMmZcbiIsIGF2Z190YXQgLyBuKTsKICAgIHByaW50ZigiQXZlcmFnZSBXYWl0aW5nIFRpbWUgPSAlLjJmXG4iLCBhdmdfd3QgLyBuKTsKCiAgICByZXR1cm4gMDsKfQoJCQoK