#include <stdio.h>
int main( ) {
int p[ 10 ] , at[ 10 ] , bt[ 10 ] , ct[ 10 ] , tat[ 10 ] , wt[ 10 ] ;
int i, j, temp, n;
float awt = 0 , atat = 0 ;
printf ( "Enter number of processes:\n " ) ;
printf ( "Enter process IDs:\n " ) ; for ( i = 0 ; i < n; i++ ) {
}
printf ( "Enter arrival time of each process:\n " ) ; for ( i = 0 ; i < n; i++ ) {
}
printf ( "Enter burst time of each process:\n " ) ; for ( i = 0 ; i < n; i++ ) {
}
// Sort processes by arrival time using bubble sort
for ( i = 0 ; i < n - 1 ; i++ ) {
for ( j = 0 ; j < n - i - 1 ; j++ ) {
if ( at[ j] > at[ j + 1 ] ) {
// Swap arrival times
temp = at[ j] ;
at[ j] = at[ j + 1 ] ;
at[ j + 1 ] = temp;
// Swap burst times
temp = bt[ j] ;
bt[ j] = bt[ j + 1 ] ;
bt[ j + 1 ] = temp;
// Swap process IDs
temp = p[ j] ;
p[ j] = p[ j + 1 ] ;
p[ j + 1 ] = temp;
}
}
}
// Calculate completion time
ct[ 0 ] = at[ 0 ] + bt[ 0 ] ;
for ( i = 1 ; i < n; i++ ) {
if ( ct[ i - 1 ] < at[ i] ) {
ct[ i] = at[ i] + bt[ i] ; // CPU is idle
} else {
ct[ i] = ct[ i - 1 ] + bt[ i] ; // CPU is busy
}
}
// Calculate TAT and WT
for ( i = 0 ; i < n; i++ ) {
tat[ i] = ct[ i] - at[ i] ;
wt[ i] = tat[ i] - bt[ i] ;
atat += tat[ i] ;
awt += wt[ i] ;
}
atat /= n;
awt /= n;
// Output
printf ( "\n P\t AT\t BT\t CT\t TAT\t WT\n " ) ; for ( i = 0 ; i < n; i++ ) {
printf ( "P%d\t %d\t %d\t %d\t %d\t %d\n " , p
[ i
] , at
[ i
] , bt
[ i
] , ct
[ i
] , tat
[ i
] , wt
[ i
] ) ; }
printf ( "\n Average Turnaround Time = %.2f" , atat
) ; printf ( "\n Average Waiting Time = %.2f\n " , awt
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGludCBwWzEwXSwgYXRbMTBdLCBidFsxMF0sIGN0WzEwXSwgdGF0WzEwXSwgd3RbMTBdOwogICAgaW50IGksIGosIHRlbXAsIG47CiAgICBmbG9hdCBhd3QgPSAwLCBhdGF0ID0gMDsKCiAgICBwcmludGYoIkVudGVyIG51bWJlciBvZiBwcm9jZXNzZXM6XG4iKTsKICAgIHNjYW5mKCIlZCIsICZuKTsKCiAgICBwcmludGYoIkVudGVyIHByb2Nlc3MgSURzOlxuIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgc2NhbmYoIiVkIiwgJnBbaV0pOwogICAgfQoKICAgIHByaW50ZigiRW50ZXIgYXJyaXZhbCB0aW1lIG9mIGVhY2ggcHJvY2VzczpcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsICZhdFtpXSk7CiAgICB9CgogICAgcHJpbnRmKCJFbnRlciBidXJzdCB0aW1lIG9mIGVhY2ggcHJvY2VzczpcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsICZidFtpXSk7CiAgICB9CgogICAgLy8gU29ydCBwcm9jZXNzZXMgYnkgYXJyaXZhbCB0aW1lIHVzaW5nIGJ1YmJsZSBzb3J0CiAgICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCBuIC0gaSAtIDE7IGorKykgewogICAgICAgICAgICBpZiAoYXRbal0gPiBhdFtqICsgMV0pIHsKICAgICAgICAgICAgICAgIC8vIFN3YXAgYXJyaXZhbCB0aW1lcwogICAgICAgICAgICAgICAgdGVtcCA9IGF0W2pdOwogICAgICAgICAgICAgICAgYXRbal0gPSBhdFtqICsgMV07CiAgICAgICAgICAgICAgICBhdFtqICsgMV0gPSB0ZW1wOwoKICAgICAgICAgICAgICAgIC8vIFN3YXAgYnVyc3QgdGltZXMKICAgICAgICAgICAgICAgIHRlbXAgPSBidFtqXTsKICAgICAgICAgICAgICAgIGJ0W2pdID0gYnRbaiArIDFdOwogICAgICAgICAgICAgICAgYnRbaiArIDFdID0gdGVtcDsKCiAgICAgICAgICAgICAgICAvLyBTd2FwIHByb2Nlc3MgSURzCiAgICAgICAgICAgICAgICB0ZW1wID0gcFtqXTsKICAgICAgICAgICAgICAgIHBbal0gPSBwW2ogKyAxXTsKICAgICAgICAgICAgICAgIHBbaiArIDFdID0gdGVtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBDYWxjdWxhdGUgY29tcGxldGlvbiB0aW1lCiAgICBjdFswXSA9IGF0WzBdICsgYnRbMF07CiAgICBmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaWYgKGN0W2kgLSAxXSA8IGF0W2ldKSB7CiAgICAgICAgICAgIGN0W2ldID0gYXRbaV0gKyBidFtpXTsgLy8gQ1BVIGlzIGlkbGUKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjdFtpXSA9IGN0W2kgLSAxXSArIGJ0W2ldOyAvLyBDUFUgaXMgYnVzeQogICAgICAgIH0KICAgIH0KCiAgICAvLyBDYWxjdWxhdGUgVEFUIGFuZCBXVAogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHRhdFtpXSA9IGN0W2ldIC0gYXRbaV07CiAgICAgICAgd3RbaV0gPSB0YXRbaV0gLSBidFtpXTsKICAgICAgICBhdGF0ICs9IHRhdFtpXTsKICAgICAgICBhd3QgKz0gd3RbaV07CiAgICB9CgogICAgYXRhdCAvPSBuOwogICAgYXd0IC89IG47CgogICAgLy8gT3V0cHV0CiAgICBwcmludGYoIlxuUFx0QVRcdEJUXHRDVFx0VEFUXHRXVFxuIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJQJWRcdCVkXHQlZFx0JWRcdCVkXHQlZFxuIiwgcFtpXSwgYXRbaV0sIGJ0W2ldLCBjdFtpXSwgdGF0W2ldLCB3dFtpXSk7CiAgICB9CgogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgVHVybmFyb3VuZCBUaW1lID0gJS4yZiIsIGF0YXQpOwogICAgcHJpbnRmKCJcbkF2ZXJhZ2UgV2FpdGluZyBUaW1lID0gJS4yZlxuIiwgYXd0KTsKCiAgICByZXR1cm4gMDsKfQo=