1

#include
# include 
#include
# include 
using namespace std; // 全局引入std命名空间

struct Process {
    string name;      // 原为 std::string
    int arrive;
    int service;
    int start;
    int finish;
    float turnaround;
    float weighted_ta;
};

bool compareArrival(const Process& a, const Process& b) {
    return a.arrive < b.arrive;
}

int main() {
    cout << "先来先服务调度算法\n";  // 原为 std::cout
    cout << "输入进程数目:";
    int n;
    cin >> n;  // 原为 std::cin

    vector processes(n);  // 原为 std::vector

    for (int i = 0; i < n; ++i) {
        cout << "请输入进程" << (i+1) << "的信息(名称 到达时间 服务时间):";
        cin >> processes[i].name >> processes[i].arrive >> processes[i].service;
    }

    sort(processes.begin(), processes.end(), compareArrival); // 原为 std::sort

    int current_time = 0;
    for (vector::iterator it = processes.begin(); it != processes.end(); ++it) {
        it->start = max(current_time, it->arrive);  // 原为 std::max
        it->finish = it->start + it->service;
        it->turnaround = it->finish - it->arrive;
        it->weighted_ta = it->turnaround / static_cast(it->service);
        current_time = it->finish;
    }

    // 输出运行顺序
    cout << "\n运行顺序:";
    for (vector::const_iterator it = processes.begin(); it != processes.end(); ++it) {
        cout << it->name;
        if (it + 1 != processes.end()) {
            cout << " → ";
        }
    }

    // 输出表格
    cout << fixed << setprecision(3);  // 原为 std::fixed 和 std::setprecision
    cout << "\n\n"
         << left << setw(8) << "进程"  // 原为 std::left 和 std::setw
         << right << setw(12) << "到达时间"
         << setw(12) << "服务时间"
         << setw(12) << "开始时间"
         << setw(12) << "结束时间"
         << setw(12) << "周转时间"
         << "带权周转时间\n";

    float total_ta = 0, total_wta = 0;
    for (vector::const_iterator it = processes.begin(); it != processes.end(); ++it) {
        cout << left << setw(8) << it->name
             << right << setw(12) << it->arrive
             << setw(12) << it->service
             << setw(12) << it->start
             << setw(12) << it->finish
             << setw(12) << it->turnaround
             << setw(12) << it->weighted_ta
             << "\n";
        total_ta += it->turnaround;
        total_wta += it->weighted_ta;
    }

    cout << "\n平均周转时间: " << total_ta / n
         << "\n平均带权周转时间: " << total_wta / n << endl;

    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务