先到先服务算法c++代码
时间: 2023-10-12 09:12:20 浏览: 82
以下是先到先服务(First-Come, First-Served,FCFS)算法的 C++ 代码示例:
```c++
#include <iostream>
using namespace std;
void findWaitingTime(int processes[], int n, int bt[], int wt[]) {
wt[0] = 0; // 第一个进程的等待时间为0
for (int i = 1; i < n; i++) {
wt[i] = wt[i-1] + bt[i-1]; // 当前进程的等待时间为前一个进程的等待时间+前一个进程的执行时间
}
}
void findTurnAroundTime(int processes[], int n, int bt[], int wt[], int tat[]) {
for (int i = 0; i < n; i++) {
tat[i] = bt[i] + wt[i]; // 进程的周转时间等于执行时间加等待时间
}
}
void findAvgTime(int processes[], int n, int bt[]) {
int wt[n], tat[n], total_wt = 0, total_tat = 0;
findWaitingTime(processes, n, bt, wt);
findTurnAroundTime(processes, n, bt, wt, tat);
cout << "Process\tBurst Time\tWaiting Time\tTurn-Around Time" << endl;
for (int i = 0; i < n; i++) {
total_wt += wt[i];
total_tat += tat[i];
cout << " " << processes[i] << "\t\t" << bt[i] << "\t\t" << wt[i] << "\t\t" << tat[i] << endl;
}
cout << "Average Waiting Time = " << (float)total_wt / (float)n << endl;
cout << "Average Turn-Around Time = " << (float)total_tat / (float)n << endl;
}
int main() {
int processes[] = {1, 2, 3}; // 进程编号
int n = sizeof(processes) / sizeof(processes[0]); // 进程数量
int burst_time[] = {10, 5, 8}; // 进程执行时间
findAvgTime(processes, n, burst_time);
return 0;
}
```
该代码实现了三个函数: `findWaitingTime`、`findTurnAroundTime` 和 `findAvgTime`。
- `findWaitingTime` 函数计算每个进程的等待时间。
- `findTurnAroundTime` 函数计算每个进程的周转时间。
- `findAvgTime` 函数计算平均等待时间和平均周转时间,并输出每个进程的执行时间、等待时间和周转时间。
在 `main` 函数中,我们定义了三个进程,每个进程的执行时间分别为 10、5 和 8。然后,我们调用 `findAvgTime` 函数来计算平均等待时间和平均周转时间。
输出结果如下:
```
Process Burst Time Waiting Time Turn-Around Time
1 10 0 10
2 5 10 15
3 8 15 23
Average Waiting Time = 8
Average Turn-Around Time = 16
```
阅读全文