Program:
#include<stdio.h> void main() { freopen("input.txt","r",stdin); // Taking Input - NumberofProcess, Arival Time, Burst Time, Time Quantum int nop; printf("\n\n Enter Number of Process:"); scanf("%d",&nop); int at[nop],bt[nop],temp[nop]; for(int i=0;i<nop;i++) { printf("\n\nEnter arival time and burst time of the process %d \n",i+1); scanf("%d",&at[i]); scanf("%d",&bt[i]); // Storing Burst Time in temp array temp[i] = bt[i]; } int time; printf("\n\n Enter Time Quantum:"); scanf("%d",&time); // Using Round Robin Algoritm float avg_wt,avg_tat,wt=0,tat=0; int y = nop; int sum,count,i; printf("\n P \t AT \t BT \t TAT \t WT\n"); sum = 0; // Storing burst time; i = 0; // For Pointing The Current Process while(y!=0) { // Checking if Process can complete in this Time Quantum if(temp[i] <= time && temp[i]>0) { sum = sum+temp[i]; // Storing Burst Time temp[i] = 0; // Process Complete count = 1; // like flag to check process complete } // If Process take more time than 1 Time Quantum else if(temp[i] > 0) { temp[i] = temp[i] - time; // Decrementing the Quantum Time from Burst Time sum = sum + time; } // If Process Completes if(temp[i] == 0 && count == 1) { y--; // Decrementing Process Counter printf("\n\n %d \t %d \t %d\t %d\t %d",i+1,at[i],bt[i],sum-at[i],sum-at[i]-bt[i]); // TurnAroundTime = ExitTime - ArrivalTime // Waiting time = TurnAroundTime - BurstTime wt = wt + sum - at[i] - bt[i]; // Total waiting time tat = tat + sum -at[i]; // Total Burst Time count = 0; // Resetting Flag } // printf("\n Current Index %d Arrival Time %d Remaining Burst Time %d",i,at[i],temp[i]); // If All Process Visited, then Run it in round robin fashion if(i == nop-1) { i=0; } else if(at[i+1] <= sum) // Checking if next process is arrived or not { i++; } // If process is not in end and the next process has not arrived yet so start the remaining process again else { i = 0; } } // Calculating Average TurnAroundTime and Waiting Time avg_tat = tat/nop; avg_wt = wt/nop; printf("\n\n Average TurnAround Time: %f",avg_tat); printf("\n\n Average Waiting Time: %f\n",avg_wt); } /* Input.txt File: 5 0 15 3 8 8 2 10 11 16 4 3 */
Output: