Witam. Mam do napisania program symulacyjny, który pokaże zasadę działania algorytmu planowania SJF dla zamkniętej i otwartej puli zadań. Jednakże na etapie tworzenia pseudokodu trochę się pogubiłem w pętlach i nie mogę zrobić kroku naprzód.

 proces kolejka [5];
for (int i=0; i<liczbaprocesow; i++)
for (int j=0; j<liczbaprocesow[i].czastrwania;j++)
{
if (tablicaprocesow[i+1].czasprzybycia<tablicaprocesow[i].czastrwania) //sprawdzenie czy w czasie trwania i-tego procesu pojawią się kolejne
{
kolejka[j]=tablicaprocesow[j+1] //dopisanie procesów które pojawią się w trakcie trwania i-tego procesu do kolejki
}
}
for (int z =0; z<dlugosckolejki; z++)
kolejka[z].czasoczekiwania=kolejka[z].czasoczekiwania+(tablicaprocesow[i].czastrwania-kolejka[z].czasprzybycia) //dodanie procesom w kolejce roznicy miedzy czasem wykonania się procesu aktualnego a czasem przybycia
min=kolejka[0]; //wyszukiwanie procesu o najkrótszej fazie w kolejce
for (int k=0; k<liczbaprocesow;k++)
if (kolejka[k].czastrwania<min)
min=kolejka[k];

W kodzie wklejam tylko fragment króry ma być odpowiedzialny za obliczenia czasu oczekiwania poszczegolnych procesow. Wczytywanie danych z pliku, zapis raportu do pliku mam zrobione. Tutaj jest klasa proces:

 class proces
{
public:
string nazwa;
int czastrwania;
int czasoczekiwania;
int czasprzybycia;

proces()
        {
        nazwa="default";
        czastrwania=0;
        czasoczekiwania=0;
        czasprzybycia=0;  
        }
proces (string name, int duration, int wait, int come)
       {
       czastrwania=duration;
       czasoczekiwania=wait;
       nazwa=name;
       czasprzybycia=come;
       }
};

Ponadto przed przystąpieniem do pisania zrobiłem sobie szkic słowny.

 1. Sprawdzenie czy w czasie trwania i-tego procesu pojawiają się kolejne.
2.  Jeżeli tak, procesy trafiają do kolejki.
3.  Do czasu oczekiwania procesów w kolejce dodajemy różnicę między czasem przybycia, a czasem wykonywania się i-tego procesu.
4.  Po tym jak wykona się i-ty proces, wybierany jest z kolejki proces o najkrótszym czasie trwania.
5.  Proces jest usuwany z kolejki. Pozostałym procesom oczekującym w kolejce zwiększamy czas oczekiwania o wartość czasu trwania procesu, który ostatnio się wykonał.
6.  Sprawdzamy czy w czasie trwania ostatniego procesu pojawiły się nowe i dopisujemy je na koniec kolejki.
7.  Ponownie wybieramy element o najkrótszym czasie trwania, usuwamy z kolejki, a pozostałym procesom zwiększamy czas oczekiwania o tą wartość.

Prosze o pomoc w tym kawałku kodu, który podałem, aby udało się prawidłowo obliczyć czasy oczekiwania. Zamknięta pula zadań będzie miała domyślnie 5 procesów, zawartych w tablicaprocesow po wczytaniu z pliku.