Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- int main()
- {
- int cols = 8;
- int row = 5;
- int counter = 0;
- int arraycounter = 0;
- int idle = 0;
- int idle_counter = 0 ;
- int start_time = 0;
- int end_time = 0;
- int total_time = 0;
- int final_time = 0;
- int average_wt = 0;
- int average_bt = 0;
- int average_tt = 0 ;
- int average_at = 0;
- int temp_var = 0;
- cout << "\t\t\t\tFCFS SCHEDULING" <<endl;
- cout << "-------------------------------------------------------------------------------";
- cout << "\nInput number of processes" << endl;
- cin >> row;
- while(cin.fail())
- {
- cin.clear();
- cin.ignore(512, '\n');
- cout << "Input error " << endl;
- cout << "Input number of processes" << endl;
- cin >> row;
- }
- while(row>10 || row <= 0)
- {
- cout << "Processes cannot be more than 10 or less than 1. Please input another value." << endl;
- cin >> row;
- while(cin.fail())
- {
- cin.clear();
- cin.ignore(512, '\n');
- cout << "Input error " << endl;
- cout << "Input number of processes" << endl;
- cin >> row;
- }
- }
- int array[row][cols] = {{0,0,0,0,0}};
- cout << endl;
- cout << "------------------------------" << endl;
- cout << "Arrival Time" << endl;
- for(int input = 0 ; input < row ; input++)
- {
- array[input][0] = input+1;
- cout << "Input arrival time of process of " << " Process " << array[input][0] << endl;
- cin >> array[input][1];
- while(!cin)
- {
- cin.clear();
- cin.ignore(512, '\n');
- cout << "Input error" << endl;
- cout << "Input arrival time of process of " << " Process " << array[input][0] << endl;
- cin >> array[input][1];
- }
- cout << endl;
- }
- cout << endl;
- cout << "------------------------------" << endl;
- cout << "Burst Time" << endl;
- for(int secondinput = 0 ; secondinput < row; secondinput++)
- {
- cout << "Input the burst time of " << "Process " << array[secondinput][0]<< endl;
- cin >> array[secondinput][2];
- while(!cin)
- {
- cin.clear();
- cin.ignore(512, '\n');
- cout << "Input error" << endl;
- cout << "Input the burst time " << endl;
- cin >> array[secondinput][2];
- }
- cout << endl;
- }
- for(int sort = 0 ; sort < row - 1 ; sort ++)
- {
- for(int sort2 = 0; sort2 < row-sort-1 ; sort2++)
- {
- if(array[sort2][1] > array[sort2+1][1])
- {
- temp_var = array[sort2][0];
- array[sort2][0] = array[sort2+1][0]; // Process Number Swap
- array[sort2+1][0] = temp_var;
- temp_var = array[sort2][1];
- array[sort2][1] = array[sort2+1][1]; // Arrival Time Swap
- array[sort2+1][1] = temp_var;
- temp_var = array[sort2][2];
- array[sort2][2] = array[sort2+1][2]; // Burst Time Swap
- array[sort2+1][2] = temp_var;
- temp_var = array[sort2][3];
- array[sort2][3] = array[sort2+1][3]; // Wait time Swap
- array[sort2+1][3]= temp_var;
- temp_var = array[sort2][4];
- array[sort2][4] = array[sort2+1][4]; //Turn Around Time Swap
- array[sort2+1][4] = temp_var;
- }
- }
- }
- cout << "Sorted" << endl;
- cout << "------------------------------" << endl;
- cout << "Process\t" << "Arrival Time\t" << "Burst Time" << endl;
- for(int print = 0; print < row ; print++)
- {
- cout << array[print][0] << "\t" << array[print][1] << "\t\t\t" << array[print][2] << endl;
- }
- for(int c = 0; c < row; c++)
- {
- if(c == 0)
- {
- start_time = array[c][1];
- array[c][6] = start_time; // index 6 for start time
- end_time = start_time + array[c][2];
- array[c][5] = end_time; // index 5 for end time
- if(array[c][1] - end_time > 0 )
- {
- array[c][7] = array[c][1] - end_time; // index 7 for idle time
- }
- array[c][4] = end_time - array[c][1]; // index 4 for Turn Around Time
- array[c][3] = array[c][4] - array[c][2]; // index 3 for Waiting Time
- average_at+= array[c][1];
- average_bt+= array[c][2];
- average_wt+= array[c][3];
- average_tt+= array[c][4];
- continue;
- }
- start_time = end_time;
- if(array[c][1] - end_time > 0 )
- {
- array[c][7] = array[c][1] - end_time;
- start_time = end_time + array[c][7];
- }
- array[c][6] = start_time;
- end_time = start_time + array[c][2];
- array[c][5] = end_time;
- final_time = end_time;
- array[c][4] = end_time - array[c][1];
- array[c][3] = array[c][4] - array[c][2];
- average_at+= array[c][1];
- average_bt+= array[c][2];
- average_wt+= array[c][3];
- average_tt+= array[c][4];
- }
- average_at/=row;
- average_bt/= row;
- average_wt/= row;
- average_tt/= row;
- cout << endl << endl << endl;
- cout << "With Calculated Waiting Time and Turn Around Time" << endl;
- cout << "+---------------------------------------------------------------------------+" << endl;
- cout << "PID\t" << "Arrival Time\t" << "Burst Time\t" << "Waiting Time\t" << "Turn Around Time\t" << endl;
- for(int print = 0 ; print < row ; print++)
- {
- cout << array[print][0] << "\t " << array[print][1] << "\t\t " << array[print][2] << "\t\t\t" << array[print][3] << "\t\t"<< array[print][4] << endl;
- }
- cout << "+---------------------------------------------------------------------------+" << endl;
- cout << "Total Number of Process/es: " << row << endl;
- cout << "Average Arrival Time: " << average_at << endl;
- cout << "Average Waiting Time: " << average_wt << endl;
- cout << "Average Burst Time: " << average_bt << endl;
- cout << "Average Turnaround Time: " << average_tt << endl;
- cout << "Process Endtime: " << final_time << endl;
- cout << "-----------------------------------------------------------------------------" << endl;
- cout<< "\t\t\t\tGantt Chart" << endl;
- cout << " ";
- // print Gantt chart (6 spaces)
- for(int a = 0 ; a < 68; a++)
- {
- cout << "-";
- }
- cout << endl;
- cout << " ";
- for(int b = 0; b < 204; b++)
- {
- switch (b)
- {
- case 0:
- case 7:
- case 14:
- case 21: // first line of barlines
- case 28:
- case 34:
- case 41:
- case 48:
- case 55:
- case 62:
- // 89 90 91 92 93 94 95 96 // 96 97 98 99 100 101 102 103
- //79 // 86 // 93 //
- case 125:
- case 133:
- case 140:
- case 147:
- case 154:
- case 160:
- case 167:
- case 174:
- case 181:
- case 188:
- case 193:
- case 67:
- //135 middle barline right
- cout << "|";
- if(b == 67 || b == 125)
- {
- cout << endl;
- }
- break;
- case 68:
- case 126:
- //68 middle barline left
- if(b == 126)
- {
- cout << " |";
- break;
- }
- cout << " |";
- break;
- case 71: //1
- case 77:// 2
- case 83://3
- case 89: //4
- case 94: //5
- case 100: //6
- case 106: // 7
- case 112:
- case 118:
- case 123:
- if(counter < row)
- {
- cout << "P" << array[counter][0];
- counter++;
- }
- else{
- cout << "x ";
- }
- break;
- default:
- cout << " ";
- break;
- }
- }
- cout << " ";
- for(int a = 0 ; a < 68; a++)
- {
- cout << "-";
- }
- cout << endl;
- cout << " ";
- for(int label = 0 ; label < 68; label++)
- {
- switch(label)
- {
- case 0:
- case 7:
- case 14:
- case 21:
- case 28:
- case 35:
- case 42:
- case 49:
- case 56:
- case 63:
- case 70:
- if(arraycounter <= row)
- {
- if(arraycounter == row)
- {
- cout << final_time;
- arraycounter++;
- break;
- }
- if(array[arraycounter][7] > 0)
- {
- cout <<"\b\b\b\b" <<array[arraycounter-1][5] << "|I| ";
- }
- cout << array[arraycounter][6];
- arraycounter++;
- }
- else{
- cout << "-";
- }
- break;
- default:
- cout << " ";
- break;
- }
- }
- cout << endl;
- cout << endl;
- while(idle < row-1)
- {
- if(idle == 0)
- {
- cout << "Idle time before Process " << array[idle][0] << " starts " << array[idle_counter][7] << endl;
- idle_counter++;
- }
- cout << "Idle time between Process " << array[idle][0] << " and " << array[idle+1][0] << " is: " << array[idle_counter][7] << endl;
- idle++;
- idle_counter++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement