OneCompiler

SJF

131

Input:-
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Process {
int pid; // Process ID
int arrivalTime; // Arrival Time
int burstTime; // Burst Time
};
void SJF(vector<Process>& processes) {
int n = processes.size();
int currentTime = 0;
float totalWaitingTime = 0;
cout << "\nSJF Scheduling\n";
cout << "Process\tWaiting Time\n";
sort(processes.begin(), processes.end(), [](const Process& a, const Process& b) {
return a.burstTime < b.burstTime;
});
for (int i = 0; i < n; ++i) {
if (currentTime < processes[i].arrivalTime)
currentTime = processes[i].arrivalTime;
cout << processes[i].pid << "\t" << currentTime - processes[i].arrivalTime << endl;
totalWaitingTime += currentTime - processes[i].arrivalTime + 1;
currentTime += processes[i].burstTime;
}
float averageWaitingTime = totalWaitingTime / n;
cout << "Average Waiting Time: " << averageWaitingTime << endl;
}
int main() {
int n;
cout << "Enter the number of processes: ";
cin >> n;
vector<Process> processes(n);
cout << "Enter Arrival Time and Burst Time for each process:\n";
for (int i = 0; i < n; ++i) {
processes[i].pid = i + 1;
cout << "Arrival Time for Process " << i + 1 << ": ";
cin >> processes[i].arrivalTime;
cout << "Burst Time for Process " << i + 1 << ": ";
cin >> processes[i].burstTime;
}
SJF(processes);
return 0;
}

Output:-
Arrival Time for Process 1: 1
Burst Time for Process 1: 3
Arrival Time for Process 2: 4
Burst Time for Process 2: 5
Arrival Time for Process 3: 3
Burst Time for Process 3: 4
Arrival Time for Process 4: 2
Burst Time for Process 4: 5
Arrival Time for Process 5: 3
Burst Time for Process 5: 2
SJF Scheduling
Process Waiting Time
5 0
1 4
3 5
2 8
4 15
Average Waiting Time: 7.4