change this to dynamic queue #include using namespace std; // Function to find the waiting time for all // processes void findWaitingTime(int processes[], int n, int bt[], int wt[], int at[]) { int service_time[n]; service_time[0] = at[0]; wt[0] = 0; // calculating waiting time for (int i = 1; i < n ; i++) { // Add burst time of previous processes service_time[i] = service_time[i-1] + bt[i-1]; // Find waiting time for current process = // sum - at[i] wt[i] = service_time[i] - at[i]; // If waiting time for a process is in negative // that means it is already in the ready queue // before CPU becomes idle so its waiting time is 0 if (wt[i] < 0) wt[i] = 0; } } // Function to calculate turn around time void findTurnAroundTime(int processes[], int n, int bt[], int wt[], int tat[]) { // Calculating turnaround time by adding bt[i] + wt[i] for (int i = 0; i < n ; i++) tat[i] = bt[i] + wt[i]; } // Function to calculate average waiting and turn-around // times. void findavgTime(int processes[], int n, int bt[], int at[]) { int wt[n], tat[n]; // Function to find waiting time of all processes findWaitingTime(processes, n, bt, wt, at); // Function to find turn around time for all processes findTurnAroundTime(processes, n, bt, wt, tat); // Display processes along with all details cout << "Processes " << " Burst Time " << " Arrival Time " << " Waiting Time " << " Turn-Around Time " << " Completion Time \n"; int total_wt = 0, total_tat = 0; for (int i = 0 ; i < n ; i++) { total_wt = total_wt + wt[i]; total_tat = total_tat + tat[i]; int compl_time = tat[i] + at[i]; cout << " " << i+1 << "\t\t" << bt[i] << "\t\t" << at[i] << "\t\t" << wt[i] << "\t\t " << tat[i] << "\t\t " << compl_time << endl; } cout << "Average waiting time = " << (float)total_wt / (float)n; cout << "\nAverage turn around time = " << (float)total_tat / (float)n; } // Driver code int main() { // Process id's int n,tq = 1, timer = 0, maxProccessIndex = 0; float avgWait = 0, avgTT = 0; cout << "\nEnter the number of tasks : "; cin>>n; int arrival_time[n], burst_time[n], wait[n], turn[n], queue[n], temp_burst[n]; bool complete[n]; int processes[n]; cout << "\nEnter the arrival time of the tasks : "; for(int i = 0; i < n; i++) cin>>arrival_time[i]; cout << "\nEnter the execution time of the tasks : "; for(int i = 0; i < n; i++){ cin>>burst_time[i]; temp_burst[i] = burst_time[i]; processes[i] = (i+1); } findavgTime(processes, n, burst_time, arrival_time); return 0; }
change this to dynamic queue
#include<iostream>
using namespace std;
// Function to find the waiting time for all
// processes
void findWaitingTime(int processes[], int n, int bt[],
int wt[], int at[])
{
int service_time[n];
service_time[0] = at[0];
wt[0] = 0;
// calculating waiting time
for (int i = 1; i < n ; i++)
{
// Add burst time of previous processes
service_time[i] = service_time[i-1] + bt[i-1];
// Find waiting time for current process =
// sum - at[i]
wt[i] = service_time[i] - at[i];
// If waiting time for a process is in negative
// that means it is already in the ready queue
// before CPU becomes idle so its waiting time is 0
if (wt[i] < 0)
wt[i] = 0;
}
}
// Function to calculate turn around time
void findTurnAroundTime(int processes[], int n, int bt[],
int wt[], int tat[])
{
// Calculating turnaround time by adding bt[i] + wt[i]
for (int i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
// Function to calculate average waiting and turn-around
// times.
void findavgTime(int processes[], int n, int bt[], int at[])
{
int wt[n], tat[n];
// Function to find waiting time of all processes
findWaitingTime(processes, n, bt, wt, at);
// Function to find turn around time for all processes
findTurnAroundTime(processes, n, bt, wt, tat);
// Display processes along with all details
cout << "Processes " << " Burst Time " << " Arrival Time "
<< " Waiting Time " << " Turn-Around Time "
<< " Completion Time \n";
int total_wt = 0, total_tat = 0;
for (int i = 0 ; i < n ; i++)
{
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
int compl_time = tat[i] + at[i];
cout << " " << i+1 << "\t\t" << bt[i] << "\t\t"
<< at[i] << "\t\t" << wt[i] << "\t\t "
<< tat[i] << "\t\t " << compl_time << endl;
}
cout << "Average waiting time = "
<< (float)total_wt / (float)n;
cout << "\nAverage turn around time = "
<< (float)total_tat / (float)n;
}
// Driver code
int main()
{
// Process id's
int n,tq = 1, timer = 0, maxProccessIndex = 0;
float avgWait = 0, avgTT = 0;
cout << "\nEnter the number of tasks : ";
cin>>n;
int arrival_time[n], burst_time[n], wait[n], turn[n], queue[n], temp_burst[n];
bool complete[n];
int processes[n];
cout << "\nEnter the arrival time of the tasks : ";
for(int i = 0; i < n; i++)
cin>>arrival_time[i];
cout << "\nEnter the execution time of the tasks : ";
for(int i = 0; i < n; i++){
cin>>burst_time[i];
temp_burst[i] = burst_time[i];
processes[i] = (i+1);
}
findavgTime(processes, n, burst_time, arrival_time);
return 0;
}
Step by step
Solved in 3 steps with 1 images