俄罗斯黑客中国分客 level
获赞
1
粉丝
0
关注
1
看过 TA
11
哈尔滨理工大学
2027
C++
IP属地:黑龙江
苦寒之地上的精神与秩序
私信
关注
#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;}
0 点赞 评论 收藏
分享
#include # include #include # include struct Process {    std::string name;    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() {    std::cout << "先来先服务调度算法\n";    std::cout << "输入进程数目:";    int n;    std::cin >> n;    std::vector processes(n);    for (int i = 0; i < n; ++i) {        std::cout << "请输入进程" << (i+1) << "的信息(名称 到达时间 服务时间):";        std::cin >> processes[i].name >> processes[i].arrive >> processes[i].service;    }    std::sort(processes.begin(), processes.end(), compareArrival);    int current_time = 0;    for (std::vector::iterator it = processes.begin(); it != processes.end(); ++it) {        it->start = std::max(current_time, it->arrive);        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;    }    // 输出运行顺序    std::cout << "\n运行顺序:";    for (std::vector::const_iterator it = processes.begin(); it != processes.end(); ++it) {        std::cout << it->name;        if (it + 1 != processes.end()) {            std::cout << " → ";        }    }    // 输出表格    std::cout << std::fixed << std::setprecision(3);    std::cout << "\n\n"              << std::left << std::setw(8) << "进程"              << std::right << std::setw(12) << "到达时间"              << std::setw(12) << "服务时间"              << std::setw(12) << "开始时间"              << std::setw(12) << "结束时间"              << std::setw(12) << "周转时间"              << "带权周转时间\n";    float total_ta = 0, total_wta = 0;    for (std::vector::const_iterator it = processes.begin(); it != processes.end(); ++it) {        std::cout << std::left << std::setw(8) << it->name                  << std::right << std::setw(12) << it->arrive                  << std::setw(12) << it->service                  << std::setw(12) << it->start                  << std::setw(12) << it->finish                  << std::setw(12) << it->turnaround                  << std::setw(12) << it->weighted_ta                  << "\n";        total_ta += it->turnaround;        total_wta += it->weighted_ta;    }    std::cout << "\n平均周转时间: " << total_ta / n              << "\n平均带权周转时间: " << total_wta / n << std::endl;    return 0;}
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务