You are on page 1of 4

PROGRAM 3-SJF SCHEDULING

#include<iostream>
using namespace std;
struct Process{
int ID;
int arrivalTime;
int burstTime;
int waitTime;
int turnAroundTime;
bool status; };
Process pro[10];
void getValsForPro(int n){
for(int i=0; i<n; i++){
pro[i].ID = i+1;
cout<<"Process "<<pro[i].ID<<endl;
cout<<"Enter Arrival Time : ";
cin>>pro[i].arrivalTime;
cout<<"Enter Burst Time : ";
cin>>pro[i].burstTime;
cout<<endl;
pro[i].status=false;}

void outputValsForPro(int n){


cout<<"Process ID\tArrivalT Time\tBurstTime\tWaiting Time\tTurn-around Time\n";
float sumWaitTime = 0;
for(int i=0; i<n; i++){
cout<<pro[i].ID<<"\t\t";

cout<<pro[i].arrivalTime<<"\t\t";
cout<<pro[i].burstTime<<"\t\t";
cout<<pro[i].waitTime<<"\t\t";
cout<<pro[i].turnAroundTime<<"\n";
sumWaitTime+=pro[i].waitTime;}
cout<<"Avg Waiting Time : "<<sumWaitTime/n<<"\n\n"; }
void swap(Process * a, Process * b){
Process Temp = *a;
*a = *b;
*b = Temp; }
void sortArrival(int n){
for(int i=0; i<n-1; i++){
int temp = i;
for(int j=i+1; j<n; j++){
if(pro[j].arrivalTime<pro[temp].arrivalTime)
temp = j;

if(temp!=i)
swap(&pro[i], &pro[temp]);

}
void sortSJF(int n){
int totalTime = 0;
Process next = pro[0];
totalTime = pro[0].arrivalTime;
totalTime += pro[0].burstTime;
pro[0].waitTime = 0;
pro[0].turnAroundTime = pro[0].waitTime + pro[0].burstTime;

pro[0].status=true;
int m=n-1;
while(m){
int temp = 1;
for(int i=1; pro[i].arrivalTime<=totalTime && i<n; i++){
if(pro[i].burstTime<pro[temp].burstTime &&
pro[i].status==false)
temp = i;

pro[temp].status=true;
pro[temp].waitTime = totalTime - pro[temp].arrivalTime;
pro[temp].turnAroundTime = pro[temp].waitTime +
pro[temp].burstTime;
totalTime += pro[temp].burstTime;
m--;} }
int main()
{

const int n=5;


getValsForPro(n);
sortArrival(n);
cout<<"\n\n";
sortSJF(n);
outputValsForPro(n);
return 0;

You might also like