#include<stdio.h>
#include<string.h>
struct Process {
char name[ 10 ] ;
int burst_time;
int priority;
int waiting_time;
int turnaround_time;
} ;
void sortProcesses( struct Process p[ ] , int n) {
struct Process temp;
for ( int i = 0 ; i < n- 1 ; i++ ) {
for ( int j = i+ 1 ; j < n; j++ ) {
if ( p[ i] .priority > p[ j] .priority ) { // Sorting based on Priority
temp = p[ i] ;
p[ i] = p[ j] ;
p[ j] = temp;
}
}
}
}
void calculateTimes( struct Process p[ ] , int n) {
p[ 0 ] .waiting_time = 0 ;
p[ 0 ] .turnaround_time = p[ 0 ] .burst_time ;
for ( int i = 1 ; i < n; i++ ) {
p[ i] .waiting_time = p[ i- 1 ] .waiting_time + p[ i- 1 ] .burst_time ;
p[ i] .turnaround_time = p[ i] .waiting_time + p[ i] .burst_time ;
}
}
void display( struct Process p[ ] , int n) {
int total_waiting_time = 0 , total_turnaround_time = 0 ;
printf ( "\n Process Burst Time Priority Waiting Time Turnaround Time\n " ) ; for ( int i = 0 ; i < n; i++ ) {
printf ( "%s %d %d %d %d\n " , p
[ i
] .
name , p
[ i
] .
burst_time , p
[ i
] .
priority , p
[ i
] .
waiting_time , p
[ i
] .
turnaround_time ) ; total_waiting_time += p[ i] .waiting_time ;
total_turnaround_time += p[ i] .turnaround_time ;
}
printf ( "\n Total Waiting Time: %d" , total_waiting_time
) ; printf ( "\n Average Waiting Time: %.2f" , ( float ) total_waiting_time
/ n
) ; printf ( "\n Total Turnaround Time: %d" , total_turnaround_time
) ; printf ( "\n Average Turnaround Time: %.2f\n " , ( float ) total_turnaround_time
/ n
) ; }
int main( ) {
int n;
printf ( "Enter the number of processes: " ) ;
struct Process p[ n] ;
for ( int i = 0 ; i < n; i++ ) {
printf ( "\n Enter Process Name: " ) ; scanf ( "%d" , & p
[ i
] .
burst_time ) ; scanf ( "%d" , & p
[ i
] .
priority ) ; }
sortProcesses( p, n) ;
calculateTimes( p, n) ;
display( p, n) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CgpzdHJ1Y3QgUHJvY2VzcyB7CiAgICBjaGFyIG5hbWVbMTBdOwogICAgaW50IGJ1cnN0X3RpbWU7CiAgICBpbnQgcHJpb3JpdHk7CiAgICBpbnQgd2FpdGluZ190aW1lOwogICAgaW50IHR1cm5hcm91bmRfdGltZTsKfTsKCnZvaWQgc29ydFByb2Nlc3NlcyhzdHJ1Y3QgUHJvY2VzcyBwW10sIGludCBuKSB7CiAgICBzdHJ1Y3QgUHJvY2VzcyB0ZW1wOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuLTE7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSBpKzE7IGogPCBuOyBqKyspIHsKICAgICAgICAgICAgaWYgKHBbaV0ucHJpb3JpdHkgPiBwW2pdLnByaW9yaXR5KSB7IC8vIFNvcnRpbmcgYmFzZWQgb24gUHJpb3JpdHkKICAgICAgICAgICAgICAgIHRlbXAgPSBwW2ldOwogICAgICAgICAgICAgICAgcFtpXSA9IHBbal07CiAgICAgICAgICAgICAgICBwW2pdID0gdGVtcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBjYWxjdWxhdGVUaW1lcyhzdHJ1Y3QgUHJvY2VzcyBwW10sIGludCBuKSB7CiAgICBwWzBdLndhaXRpbmdfdGltZSA9IDA7CiAgICBwWzBdLnR1cm5hcm91bmRfdGltZSA9IHBbMF0uYnVyc3RfdGltZTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIHBbaV0ud2FpdGluZ190aW1lID0gcFtpLTFdLndhaXRpbmdfdGltZSArIHBbaS0xXS5idXJzdF90aW1lOwogICAgICAgIHBbaV0udHVybmFyb3VuZF90aW1lID0gcFtpXS53YWl0aW5nX3RpbWUgKyBwW2ldLmJ1cnN0X3RpbWU7CiAgICB9Cn0KCnZvaWQgZGlzcGxheShzdHJ1Y3QgUHJvY2VzcyBwW10sIGludCBuKSB7CiAgICBpbnQgdG90YWxfd2FpdGluZ190aW1lID0gMCwgdG90YWxfdHVybmFyb3VuZF90aW1lID0gMDsKCiAgICBwcmludGYoIlxuUHJvY2VzcwlCdXJzdCBUaW1lCVByaW9yaXR5CVdhaXRpbmcgVGltZQlUdXJuYXJvdW5kIFRpbWVcbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBwcmludGYoIiVzCSVkCQklZAkJJWQJCSVkXG4iLCBwW2ldLm5hbWUsIHBbaV0uYnVyc3RfdGltZSwgcFtpXS5wcmlvcml0eSwgcFtpXS53YWl0aW5nX3RpbWUsIHBbaV0udHVybmFyb3VuZF90aW1lKTsKICAgICAgICB0b3RhbF93YWl0aW5nX3RpbWUgKz0gcFtpXS53YWl0aW5nX3RpbWU7CiAgICAgICAgdG90YWxfdHVybmFyb3VuZF90aW1lICs9IHBbaV0udHVybmFyb3VuZF90aW1lOwogICAgfQoKICAgIHByaW50ZigiXG5Ub3RhbCBXYWl0aW5nIFRpbWU6ICVkIiwgdG90YWxfd2FpdGluZ190aW1lKTsKICAgIHByaW50ZigiXG5BdmVyYWdlIFdhaXRpbmcgVGltZTogJS4yZiIsIChmbG9hdCl0b3RhbF93YWl0aW5nX3RpbWUgLyBuKTsKICAgIHByaW50ZigiXG5Ub3RhbCBUdXJuYXJvdW5kIFRpbWU6ICVkIiwgdG90YWxfdHVybmFyb3VuZF90aW1lKTsKICAgIHByaW50ZigiXG5BdmVyYWdlIFR1cm5hcm91bmQgVGltZTogJS4yZlxuIiwgKGZsb2F0KXRvdGFsX3R1cm5hcm91bmRfdGltZSAvIG4pOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgcHJpbnRmKCJFbnRlciB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlczogIik7CiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgc3RydWN0IFByb2Nlc3MgcFtuXTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50ZigiXG5FbnRlciBQcm9jZXNzIE5hbWU6ICIpOwogICAgICAgIHNjYW5mKCIlcyIsIHBbaV0ubmFtZSk7CiAgICAgICAgcHJpbnRmKCJFbnRlciBCdXJzdCBUaW1lOiAiKTsKICAgICAgICBzY2FuZigiJWQiLCAmcFtpXS5idXJzdF90aW1lKTsKICAgICAgICBwcmludGYoIkVudGVyIFByaW9yaXR5OiAiKTsKICAgICAgICBzY2FuZigiJWQiLCAmcFtpXS5wcmlvcml0eSk7CiAgICB9CgogICAgc29ydFByb2Nlc3NlcyhwLCBuKTsKICAgIGNhbGN1bGF0ZVRpbWVzKHAsIG4pOwogICAgZGlzcGxheShwLCBuKTsKCiAgICByZXR1cm4gMDsKfQo=