#include<stdio.h>
int main( )
{
int i, limit, total = 0 , x, counter = 0 , time_quantum;
int wait_time = 0 , turnaround_time = 0 , arrival_time[ 10 ] , burst_time[ 10 ] , temp[ 10 ] ;
float average_wait_time, average_turnaround_time;
printf ( "\n Enter Total Number of Processes:\t " ) ;
scanf ( "%d" , & limit) ;
x = limit;
for ( i = 0 ; i < limit; i++ )
{
printf ( "\n Enter Details of Process[%d]\n " , i + 1 ) ;
printf ( "Arrival Time:\t " ) ;
scanf ( "%d" , & arrival_time[ i] ) ;
printf ( "Burst Time:\t " ) ;
scanf ( "%d" , & burst_time[ i] ) ;
temp[ i] = burst_time[ i] ;
}
printf ( "\n Enter Time Quantum:\t " ) ;
scanf ( "%d" , & time_quantum) ;
printf ( "\n Process ID\t \t |arrival Time\t |Burst Time\t |Turnaround Time\t |Waiting Time\n " ) ;
printf ( "............................................................................." ) ;
for ( total = 0 , i = 0 ; x ! = 0 ; )
{
if ( temp[ i] <= time_quantum && temp[ i] > 0 )
{
total = total + temp[ i] ;
temp[ i] = 0 ;
counter = 1 ;
}
else if ( temp[ i] > 0 )
{
temp[ i] = temp[ i] - time_quantum;
total = total + time_quantum;
}
if ( temp[ i] == 0 && counter == 1 )
{
x-- ;
printf ( "\n Process[%d]\t \t |%d\t \t |%d\t \t |%d\t \t \t |%d" , i + 1 ,arrival_time[ i] , burst_time[ i] , total - arrival_time[ i] , total - arrival_time[ i] - burst_time[ i] ) ;
wait_time = wait_time + total - arrival_time[ i] - burst_time[ i] ;
turnaround_time = turnaround_time + total - arrival_time[ i] ;
counter = 0 ;
}
if ( i == limit - 1 )
{
i = 0 ;
}
else if ( arrival_time[ i + 1 ] <= total)
{
i++ ;
}
else
{
i = 0 ;
}
}
average_wait_time = wait_time * 1.0 / limit;
average_turnaround_time = turnaround_time * 1.0 / limit;
printf ( "\n \n Average Waiting Time:\t %f" , average_wait_time) ;
printf ( "\n Avg Turnaround Time:\t %f\n " , average_turnaround_time) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IG1haW4oKQp7CiAgICAgIGludCBpLCBsaW1pdCwgdG90YWwgPSAwLCB4LCBjb3VudGVyID0gMCwgdGltZV9xdWFudHVtOwogICAgICBpbnQgd2FpdF90aW1lID0gMCwgdHVybmFyb3VuZF90aW1lID0gMCwgYXJyaXZhbF90aW1lWzEwXSwgYnVyc3RfdGltZVsxMF0sIHRlbXBbMTBdOwogICAgICBmbG9hdCBhdmVyYWdlX3dhaXRfdGltZSwgYXZlcmFnZV90dXJuYXJvdW5kX3RpbWU7CiAgICAgIHByaW50ZigiXG5FbnRlciBUb3RhbCBOdW1iZXIgb2YgUHJvY2Vzc2VzOlx0Iik7CiAgICAgIHNjYW5mKCIlZCIsICZsaW1pdCk7CiAgICAgIHggPSBsaW1pdDsKICAgICAgZm9yKGkgPSAwOyBpIDwgbGltaXQ7IGkrKykKICAgICAgewogICAgICAgICAgICBwcmludGYoIlxuRW50ZXIgRGV0YWlscyBvZiBQcm9jZXNzWyVkXVxuIiwgaSArIDEpOwogICAgICAgICAgICAgcHJpbnRmKCJBcnJpdmFsIFRpbWU6XHQiKTsKICAgICAgICAgICAgIHNjYW5mKCIlZCIsICZhcnJpdmFsX3RpbWVbaV0pOwogICAgICAgICAgICAgcHJpbnRmKCJCdXJzdCBUaW1lOlx0Iik7CiAgICAgICAgICAgICBzY2FuZigiJWQiLCAmYnVyc3RfdGltZVtpXSk7CiAgICAgICAgICAgICB0ZW1wW2ldID0gYnVyc3RfdGltZVtpXTsKICAgICAgfQogICAgICAgcHJpbnRmKCJcbkVudGVyIFRpbWUgUXVhbnR1bTpcdCIpOwogICAgICBzY2FuZigiJWQiLCAmdGltZV9xdWFudHVtKTsKICAgICAgcHJpbnRmKCJcblByb2Nlc3MgSURcdFx0fGFycml2YWwgVGltZVx0fEJ1cnN0IFRpbWVcdHxUdXJuYXJvdW5kIFRpbWVcdHxXYWl0aW5nIFRpbWVcbiIpOwogICAgICBwcmludGYoIi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIik7CiAgICAgIGZvcih0b3RhbCA9IDAsIGkgPSAwOyB4ICE9IDA7KQogICAgICB7CiAgICAgICAgICAgIGlmKHRlbXBbaV0gPD0gdGltZV9xdWFudHVtICYmIHRlbXBbaV0gPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHRvdGFsID0gdG90YWwgKyB0ZW1wW2ldOwogICAgICAgICAgICAgICAgICB0ZW1wW2ldID0gMDsKICAgICAgICAgICAgICAgICAgY291bnRlciA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZih0ZW1wW2ldID4gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICB0ZW1wW2ldID0gdGVtcFtpXSAtIHRpbWVfcXVhbnR1bTsKICAgICAgICAgICAgICAgICAgdG90YWwgPSB0b3RhbCArIHRpbWVfcXVhbnR1bTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZih0ZW1wW2ldID09IDAgJiYgY291bnRlciA9PSAxKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHgtLTsKICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcblByb2Nlc3NbJWRdXHRcdHwlZFx0XHR8JWRcdFx0fCVkXHRcdFx0fCVkIiwgaSArIDEsYXJyaXZhbF90aW1lW2ldLCBidXJzdF90aW1lW2ldLCB0b3RhbCAtIGFycml2YWxfdGltZVtpXSwgdG90YWwgLSBhcnJpdmFsX3RpbWVbaV0gLSBidXJzdF90aW1lW2ldKTsKICAgICAgICAgICAgICAgICAgd2FpdF90aW1lID0gd2FpdF90aW1lICsgdG90YWwgLSBhcnJpdmFsX3RpbWVbaV0gLSBidXJzdF90aW1lW2ldOwogICAgICAgICAgICAgICAgICB0dXJuYXJvdW5kX3RpbWUgPSB0dXJuYXJvdW5kX3RpbWUgKyB0b3RhbCAtIGFycml2YWxfdGltZVtpXTsKICAgICAgICAgICAgICAgICAgY291bnRlciA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoaSA9PSBsaW1pdCAtIDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihhcnJpdmFsX3RpbWVbaSArIDFdIDw9IHRvdGFsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgfQogICAgICAgYXZlcmFnZV93YWl0X3RpbWUgPSB3YWl0X3RpbWUgKiAxLjAgLyBsaW1pdDsKICAgICAgYXZlcmFnZV90dXJuYXJvdW5kX3RpbWUgPSB0dXJuYXJvdW5kX3RpbWUgKiAxLjAgLyBsaW1pdDsKICAgICAgcHJpbnRmKCJcblxuQXZlcmFnZSBXYWl0aW5nIFRpbWU6XHQlZiIsIGF2ZXJhZ2Vfd2FpdF90aW1lKTsKICAgICAgcHJpbnRmKCJcbkF2ZyBUdXJuYXJvdW5kIFRpbWU6XHQlZlxuIiwgYXZlcmFnZV90dXJuYXJvdW5kX3RpbWUpOwogICAgICByZXR1cm4gMDsKICAgICAgCn0=