-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
108 lines (88 loc) · 2.89 KB
/
Copy pathmain.cpp
File metadata and controls
108 lines (88 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
* File: main.cpp
* Author: manasbala
* Email: manas.du@gmail.com
* Github: https://github.com/manasbala
*
* Created on August 9, 2015, 10:10 AM
*/
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include "Process.h"
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
int n; //number of process
int temp;
int quantums; //time quantums of process
int totalBurstTime = 0; //sum of total burst time
int totalAverageTime = 0;
int totalWaitingTime = 0; // sum of total waiting time
int quantumsUsed = 0; // number of quantums used
int gant[2][500];
Process process[50];
cout << "\nNumber of process (>50): ";
cin >> n;
for(int i = 0; i < n; i++)
{
cout << "\nBurst time of process (P" << (i + 1) << "): ";
cin >> temp;
process[i] = Process((i + 1), temp, temp);
}
cout << "\nEnter time quantums of the process: ";
cin >> quantums;
for(int i = 0; i < n; i++)
{
totalBurstTime += process[i].getBrustTime();
}
cout << "\nTotal burst time: " << totalBurstTime;
int k = 0;
do
{
for(int i = 0; i < n; i++)
{
if(process[i].getBrustTimeBalance() > 0 && process[i].getBrustTimeBalance() <= quantums)
{
quantumsUsed = process[i].getBrustTimeBalance() + quantumsUsed;
process[i].setAverageTime(quantumsUsed);
process[i].setWaitingTime(process[i].getAverageTime() - process[i].getBrustTime());
process[i].setBrustTimeBalance(0);
gant[0][k] = process[i].getProcessId();
gant[1][k] = quantumsUsed;
k++;
}
else if(process[i].getBrustTimeBalance() > 0)
{
quantumsUsed = quantums + quantumsUsed;
process[i].setBrustTimeBalance((process[i].getBrustTimeBalance() - quantums));
gant[0][k] = process[i].getProcessId();
gant[1][k] = quantumsUsed;
k++;
}
else if(process[i].getBrustTimeBalance() < 0)
{
cout << "\nError";
exit(1);
}
}
} while (quantumsUsed != totalBurstTime);
cout << "\nRR gant chart: \n\n";
for(int i = 0; i < k; i++)
cout << setw(6) << gant[0][i];
cout << "\n";
for(int i = 0; i < k; i++)
cout << setw(6) << gant[1][i];
for(int i = 0; i < n; i++)
{
totalWaitingTime += process[i].getWaitingTime();
totalAverageTime += process[i].getAverageTime();
}
cout << "\nTotal waiting time: " << totalWaitingTime;
cout << "\nAverage waiting time: " << totalWaitingTime / n;
cout << "\nTotal turnaround time: " << totalAverageTime;
cout << "\nAverage turnaround time: " << totalAverageTime / n;
return 0;
}