Question: C++ code! Please help fix my code. My code is fully functional but I made the mistake of making my processes numbered 0-7, when they

C++ code! Please help fix my code. My code is fully functional but I made the mistake of making my processes numbered 0-7, when they needed to be numbered 1-8, and I'm not sure how to change the numbers without breaking it. The output should be reading Processes as P1, P2, P3, P4, P5, P6, P7 and P8 instead of P0, P1, P2, P3, P4, P5, P6, P7

#include #include #include #include

using namespace std;

void fcfs(vector> processes, queue readyQueue, vector processBurstIndex);

void printCompleteProcesses(vector complete); void printQueue(queue q, vector> processes, vector processBurstIndex); void printContextSwitchData(vector> processes, int process_index, queue readyQueue, vector processBurstIndex, int time); int main() {

int numProcesses = 8; vector> processes(numProcesses); queue readyQueueFCFS; vector processBurstIndex(numProcesses, 0); processes[0] = { 6, 21, 9, 28, 5, 26, 4, 22, 3, 41, 6, 45, 4, 27, 8 , 27, 3 }; processes[1] = { 19, 48, 16, 32, 17, 29, 6, 44, 8, 34, 21, 34, 19, 39, 10, 31, 7 }; processes[2] = { 12, 14, 6, 21, 3, 29, 7, 45, 8, 54, 11, 44, 9 }; processes[3] = { 11, 45, 5, 41, 6, 45, 8, 51, 4, 61, 13, 54, 11, 61, 10 }; processes[4] = { 16, 22, 15, 21, 12, 31, 14, 26, 13, 31, 16, 18, 12, 21, 10, 33, 11 }; processes[5] = { 20, 31, 22, 30, 25, 29, 11, 44, 17, 34, 18, 31, 6, 22, 16 }; processes[6] = { 3, 44, 7, 24, 6, 34, 5, 54, 4, 24, 7, 44, 6, 54, 5, 21, 6, 43, 4 }; processes[7] = { 15, 50, 4, 23, 11, 31, 4, 31, 3, 47, 5, 21, 8, 31, 6, 44, 9 };

for (int i = 0; i < processes.size(); i++) { readyQueueFCFS.push(i); }

cout << " " << "----FCFS----" << " "; fcfs(processes, readyQueueFCFS, processBurstIndex); }

void fcfs(vector> processes, queue readyQueue, vector processBurstIndex) {

vector> ioreturn; //array of pair vector arrivalTime(processes.size(), 0); vector waitingTime(processes.size(), 0); vector tat(processes.size(), 0); vector responseTime(processes.size(), -1); vector complete(processes.size(), 0);

for (int i = 0; i < processes.size(); i++) { ioreturn.push_back(make_pair(INT_MAX, i)); } int time = 0; int idle_Cpu_Time = 0; while (!readyQueue.empty()) {

int process_index = readyQueue.front(); readyQueue.pop();

//waiting time in ready queue waitingTime[process_index] += time - arrivalTime[process_index];

//takes value of first waiting time and then resets flag so the if condition never executes again if (responseTime[process_index] == -1) { responseTime[process_index] = time - arrivalTime[process_index]; }

printContextSwitchData(processes, process_index, readyQueue, processBurstIndex, time);

time += processes[process_index][processBurstIndex[process_index]]; // process getting cpu burst time

if (processBurstIndex[process_index] <= processes[process_index].size() - 3) { for (int i = 0; i < processes.size(); i++) { if (ioreturn[i].second == process_index) { ioreturn[i].first = processes[process_index][processBurstIndex[process_index] + 1] + time; break; } } } else { complete[process_index] = 1; } printCompleteProcesses(complete); processBurstIndex[process_index] += 2; sort(ioreturn.begin(), ioreturn.end());

if (readyQueue.empty()) { while (ioreturn[0].first != INT_MAX && ioreturn[0].first > time) { time++; idle_Cpu_Time++; } }

for (int i = 0; i < processes.size(); i++) { if (ioreturn[i].first <= time) { readyQueue.push(ioreturn[i].second); //pushing process id into readyQueue arrivalTime[ioreturn[i].second] = ioreturn[i].first; ioreturn[i].first = INT_MAX; } } } int burst_time = time - idle_Cpu_Time;

for (int i = 0; i < processes.size(); i++) { int total_burst_time = 0; for (int j = 0; j < processes[i].size(); j++) { total_burst_time += processes[i][j]; } tat[i] += total_burst_time + waitingTime[i]; }

//printing results cout << "Total time required to complete all the 8 processes: " << time << " "; cout << "CPU Utilization: " << (float)burst_time / time * 100 << " " << " "; cout << "******************************************************** " << " "; cout << "******************************************************** " << " ";

cout << "WAITING TIME" << " "; int twt = 0; for (int i = 0; i < processes.size(); i++) { cout << "Process: " << i << ", Waiting Time: " << waitingTime[i] << " "; twt += waitingTime[i]; } cout << "Average Waiting Time: " << (float)twt / processes.size() << " " << " ";

cout << "******************************************************** " << " "; cout << "******************************************************** " << " "; cout << "TURNAROUND TIME" << " "; int ttat = 0; for (int i = 0; i < processes.size(); i++) { cout << "Process: " << i << ", Turnaround Time: " << tat[i] << " "; ttat += tat[i]; } cout << "Average Turnaround Time: " << (float)ttat / processes.size() << " " << " ";

cout << "******************************************************** " << " "; cout << "******************************************************** " << " "; cout << "RESPONSE TIME" << " "; int trt = 0; for (int i = 0; i < processes.size(); i++) { cout << "Process: " << i << ", Response Time: " << responseTime[i] << " "; trt += responseTime[i]; } cout << "Average Response Time: " << (float)trt / processes.size() << " "; }

//function to print the queue void printQueue(queue q, vector> processes, vector processBurstIndex) { //printing content of queue cout << setfill(' ') << setw(10) << "Process" << setw(10) << "Burst" << " "; if (!q.empty()) { while (!q.empty()) { int pid = q.front(); cout << setfill(' ') << setw(10) << "P" << pid << setw(10) << processes[pid][processBurstIndex[pid]] << " "; q.pop(); } } else { cout << setfill(' ') << setw(10) << "[empty]" << setw(10) << "N/A" << " "; } cout << " "; }

void printCompleteProcesses(vector complete) { cout << "Complete Processes: "; for (int i = 0; i < complete.size(); i++) { if (complete[i] == 1) { cout << "P" << i << " "; } }cout << " "; cout << setfill('-') << setw(40) << "-" << " "; }

void printContextSwitchData(vector> processes, int process_index, queue readyQueue, vector processBurstIndex, int time) {

cout << setfill('-') << setw(40) << "-" << " "; cout << "Current Execution Time: " << time << " " << " "; cout << "Next Process on the CPU: P" << process_index << " "; cout << setfill('-') << setw(40) << "-" << " " << " "; cout << "Ready queue:" << " "; printQueue(readyQueue, processes, processBurstIndex); cout << setfill('-') << setw(40) << "-" << " "; }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!