Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

#include<stdio.

h>

#include<string.h>

#include<stdlib.h>

int main()

char *arr[] = {"P1","P2","P3","P4"};

int AT[] = {0,0,0,0};

int BT[] ={15,20,5,10};

int i,j,temp1,temp2;

char * ptemp;

int n=4;

int RBT[n];

int ET[n];

//Swap Process based on arrival time

for (i=0;i<n-1;i++)

for(j=0;j<n-1;j++)

if(AT[j]>AT[j+1])

//Swapping BTs

temp1 = AT[j];

AT[j] = AT[j+1];

AT[j+1] = temp1;

//Swapping Process

ptemp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = ptemp;
temp2 = BT[j];

BT[j] = BT[j+1];

BT[j+1] = temp2;

//Assign remaining Burst Time

for(i=0;i<n;i++)

RBT[i] = BT[i];

//Status array

int status[6]={0,0,0,0,0,0};

//Print

printf("Process\tAT\tBT\tRBT\n");

for(i=0;i<n;i++)

printf("%s\t%d\t%d\t%d\n",arr[i],AT[i],BT[i],RBT[i]);

//Ending Time

//int ET[n];

//Algorithm

int time;

for(time = 1;;time++)

int min=999999;

int pos;
for(i=0;i<n;i++)

//If Process has arrived and not ended

if(AT[i]<time && status[i] ==0)

//Finding the min

if(min>RBT[i])

min = RBT[i];

pos = i;

if(min==999999)

printf("\nIDLE TIME:%d\n",time);

continue;

//Reducing Min remaining burst time by 1 ms

RBT[pos] = RBT[pos] - 1;

if(RBT[pos] == 0)

status[pos] = 1;

ET[pos] = time;

//Print

/*

printf("Time : %d\n",time);
printf("Process\tAT\tBT\tRBT\tstatus\n");

for(i=0;i<n;i++)

printf("%s\t%d\t%d\t%d\t%d\n",arr[i],AT[i],BT[i],RBT[i],status[i]);

*/

int fg=1;

for(i=0;i<n;i++)

if(status[i]==0)

fg = 0;

if(fg == 1)

break;

//printf("Time : %d\n",time);

printf("Process\tAT\tBT\tRBT\tET\tstatus\n");

for(i=0;i<n;i++)

printf("%s\t%d\t%d\t%d\t%d\t%d\n",arr[i],AT[i],BT[i],RBT[i],ET[i],status[i]);

}
//FInding Waiting Time

int WT[n];

int TAT[n];

float wtsum=0,tatsum=0;

for(i=0;i<n;i++)

WT[i] =ET[i]-BT[i]-AT[i];

TAT[i] = BT[i] + WT[i];

wtsum += WT[i];

tatsum += TAT[i];

float wtavg,tatavg;

wtavg = wtsum/n;

tatavg = tatsum/n;

printf("Process\tAT\tBT\tET\tWT\tTAT\n");

for(i=0;i<n;i++)

printf("%s\t%d\t%d\t%d\t%d\t%d\n",arr[i],AT[i],BT[i],ET[i],WT[i],TAT[i]);

printf("Avg WT: %.2f\n",wtavg);

printf("Avg TAT: %.2f\n",tatavg);

return 0;

You might also like