【解決方法】CPU スケジューリングにおける FCFS のコード

プログラミングQA


到着時刻の順序を昇順、降順、または混合順にできるCPUスケジューリングのC++のコードが必要です

私が試したこと:

到着時間が昇順の場合にのみ正しい答えを提供するコードを試しましたが、変更すると正常に機能しません。つまり、順序なしで到着時間をランダムに入力した場合です
これが私のコードです

#include <iostream>
using namespace std;

int main()
{
    int bt[20], wt[20], tat[20], ct[20], at[20], i, n;
    float wtavg = 0, tatavg = 0;

    cout << "Enter the number of processes: ";
    cin >> n;

    for (i = 0; i < n; i++)
    {
        cout << "Enter Arrival Time for Process " << i << ": ";
        cin >> at[i];

        cout << "Enter Burst Time for Process " << i << ": ";
        cin >> bt[i];
    }

    ct[0] = at[0] + bt[0];
    tat[0] = ct[0] - at[0];
    wt[0] = tat[0] - bt[0];
    wtavg += wt[0];
    tatavg += tat[0];

    for (i = 1; i < n; i++)
    {
        // Calculate the completion time based on the arrival time and previous completion time
        if (at[i] > ct[i - 1])
            ct[i] = at[i] + bt[i];
        else
            ct[i] = ct[i - 1] + bt[i];

        tat[i] = ct[i] - at[i];
        wt[i] = tat[i] - bt[i];

        wtavg += wt[i];
        tatavg += tat[i];
    }

    cout << "\nPROCESS \tARRIVAL TIME \tBURST TIME \tCOMPLETION TIME \tWAITING TIME \tTURNAROUND TIME\n";
    for (i = 0; i < n; i++)
    {
        cout << "\n\t P" << i << "\t\t " << at[i] << "\t\t " << bt[i] << "\t\t " << ct[i] << "\t\t " << wt[i] << "\t\t " << tat[i];
    }

    cout << "\nAverage Waiting Time -- " << wtavg / n;
    cout << "\nAverage Turnaround Time -- " << tatavg / n;

    return 0;
}

解決策 1

引用:

到着時間が昇順の場合にのみ正しい答えを提供するコードを試しましたが、変更すると正しく動作しません

したがって、処理を開始する前に、到着時刻を並べ替えます。

コメント

タイトルとURLをコピーしました