Back
Round_Robin
// Round Robin
#include <iostream>
void display(std::string name_of_process[], int burst_time[],int number_of_processes,int waiting_time[],int turnaround_time[]){
double total_waiting_time = 0;
double total_turnaround_time = 0;
std::cout<<"Name Of Process\tBurst Time\tWaiting Time\tTurnAround Time"<<std::endl;
for (int num=0;num<number_of_processes;num++){
total_waiting_time += waiting_time[num];
total_turnaround_time += turnaround_time[num];
std::cout<<name_of_process[num]<<"\t\t"<<burst_time[num]<<"\t\t"<<waiting_time[num]<<"\t\t"<<turnaround_time[num]<<std::endl;
}
std::cout<<"\nAverage Waiting Time is:: "<<total_waiting_time / number_of_processes<<"\nAverage TurnAround Time is:: "<<total_turnaround_time / number_of_processes<<std::endl;
}
void Round_Robin(std::string name_of_process[], int burst_time[],int number_of_processes){
int waiting_time[number_of_processes];
int turnaround_time[number_of_processes];
int remaining_time[number_of_processes];
std::copy(burst_time,burst_time+number_of_processes,remaining_time);
int clock = 0;
int time_quantum;
std::cout<<"Enter Time Quantum:: ";
std::cin>>time_quantum;
while (true){
bool done = true;
for (int num=0;num<number_of_processes;num++){
if (remaining_time[num]>0){
if (remaining_time[num] >time_quantum) {
done = false;
clock +=time_quantum;
remaining_time[num] -= time_quantum;
} else{
clock +=remaining_time[num];
remaining_time[num] = 0;
waiting_time[num] = clock - burst_time[num];
turnaround_time[num] = waiting_time[num] + burst_time[num];
}
}
}
if (done){
break;
}
}
display(name_of_process, burst_time, number_of_processes,waiting_time,turnaround_time);
}
int main(){
int number_of_processes;
std::cout<<"Enter the number of processes: ";
std::cin>>number_of_processes;
std::string name_of_process[number_of_processes];
int burst_time[number_of_processes];
for (int i=0;i<number_of_processes;i++){
std::cout<<"Enter Name of Process:: ";
std::cin>>name_of_process[i];
std::cout<<"Enter Burst Time of Process "<<name_of_process[i]<<":: ";
std::cin>>burst_time[i];
}
Round_Robin(name_of_process,burst_time,number_of_processes);
}