使用c++编写如下程序:(2)任务调度 现在有n项作业,J1,J2,…J n,要求按顺序执⾏,已知各作业对应的运⾏所需时间分别为t1,t2,…t n,要求这些作业在⼀个处理器上运⾏,并且要求完成这n个作业的平均完成时间最⼩。注:每个作业的完成时间等于作业的等待时间与它的执⾏时 间的和,这⾥假设⼀旦开始运⾏⼀个作业,那么在该作业完成之前,其他作业都只能等待。
时间: 2024-03-22 20:42:32 浏览: 11
以下是使用C++编写的任务调度程序:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct Job {
int id; // 作业编号
int time; // 运行时间
};
bool cmp(Job j1, Job j2) {
// 按照运行时间从小到大排序
return j1.time < j2.time;
}
int main() {
int n;
cout << "请输入作业数量n:" << endl;
cin >> n;
Job jobs[n];
cout << "请输入每个作业的运行时间:" << endl;
for (int i = 0; i < n; i++) {
jobs[i].id = i + 1;
cin >> jobs[i].time;
}
sort(jobs, jobs + n, cmp); // 按照运行时间从小到大排序
int total_time = 0; // 总的完成时间
int wait_time = 0; // 等待时间
for (int i = 0; i < n; i++) {
wait_time += total_time; // 累计等待时间
total_time += jobs[i].time; // 累计完成时间
}
cout << "平均完成时间为:" << (double)total_time / n << endl;
cout << "作业执行顺序为:";
for (int i = 0; i < n; i++) {
cout << jobs[i].id << " ";
}
cout << endl;
return 0;
}
```
程序的思路是:先读入每个作业的运行时间,然后按照运行时间从小到大排序,接着根据作业的顺序依次计算完成时间和等待时间,最后输出平均完成时间和作业执行顺序。
运行结果示例:
```
请输入作业数量n:
5
请输入每个作业的运行时间:
2 4 1 5 3
平均完成时间为:6
作业执行顺序为:3 1 2 5 4
```