السلام عليكم ورحمه الله وبركاته
اريد ان اكمل برنامج يقوم بـ non-primitive sjf .. الكود لدي شبه جاهز لكن ينقصه بعض الامور
#include<iostream>
using namespace std;
struct process{
int processId;
int burstTime;
int arrivalTime;
};
int main(){
int numberOfProcesses;
//number of process
cout <<"please enter the number of process: ";
cin >> numberOfProcesses;
const int maxprocesses = 10;
struct process p[maxprocesses];
//int smaller[numberOfProcesses];
// initialize variables
int smallest_burst = p[0].burstTime;
int smallest_burst_index = 0;
int smallest_arrivalTime = p[0].arrivalTime;
int smallest_arrivalTime_index = 0;
// get burst time , arrival time
for(int i=0; i<numberOfProcesses; i++){
p.processId = i;
cout << "p" << i << ":" << endl;
cout <<"Burst time: ";
cin >> p.burstTime;
cout <<"Arrival Time: ";
cin >> p.arrivalTime;
}
//display user input
cout<<"Process" << "\t" << "Burst" << "\t" << "Arrival" << endl;
for(int i=0;i<numberOfProcesses;i++){
cout <<"P" << p.processId << "\t" << p.burstTime << "\t" << p.arrivalTime <<endl;
}
// after computing
for(int i = 1; i < numberOfProcesses; ++i)
{
if(p.burstTime < smallest_burst)
{
smallest_burst = p.burstTime;
smallest_burst_index = i;
}
if(p.arrivalTime < smallest_arrivalTime)
{
smallest_arrivalTime = p.arrivalTime;
smallest_arrivalTime_index = i;
}
}
//display
cout << endl;
cout<<"Process" << "\t" << "Burst" << "\t" << "Arrival" << endl;
for(int i=0; i<numberOfProcesses; i++)
{
cout <<"P" << p[smallest_arrivalTime_index].processId << "\t" << p[smallest_arrivalTime_index].burstTime << "\t" << p[smallest_arrivalTime_index].arrivalTime << endl;
cout <<"P" << p[smallest_burst_index].processId << "\t" << p[smallest_burst_index].burstTime << "\t" << p[smallest_burst_index].arrivalTime << endl;
// here I need to print smaller burst time
}
return 0;
}بالمناسبه هذا الكود يقوم بعرض نفس البيانات
cout <<"P" << p[smallest_arrivalTime_index].processId << "\t" << p[smallest_arrivalTime_index].burstTime << "\t" << p[smallest_arrivalTime_index].arrivalTime << endl;
cout <<"P" << p[smallest_burst_index].processId << "\t" << p[smallest_burst_index].burstTime << "\t" << p[smallest_burst_index].arrivalTime << endl;في البداية اريد ان اعرض اصغر arrival time من ثم ابدا اعرض بقية process حسب الاصغر فالاصفر من burst time
مثال:
process burst time arrival time
p0 5 5
p1 3 1
p2 4 0
p3 9 2
result should be, p2(because first arrived), p1,p0 and p3
في الانتظار

