Witam!

Potrzebuję pomocy przy implementacji algorytmu SRTF. Funkcja dostaje na wejściu liczbę procesów i tablicę procesów. Każdy proces to obiekt klasy:

class Proces
{
   int id;
   int moment_zgloszenia;
   int dl_fazy_procesora;
};

Przy tym dl_fazy_procesora losuje się sama, a kolejne dane dla składowej moment_zgloszenia są w równych odstępach czasu i są ponumerowane od 0 [tak jak id]. Przykład:

Proces || Moment zgłoszenia || Dl_fazy_procesora
P[0] 0 6
P[1] 1 4
P[2] 2 5

itd.

Problem polega na tym, że wiem, na czym polega idea wywłaszczania [bo SRTF to nic innego jak SJF z wywłaszczaniem], ale za nic nie mogę tego zaimplementować.
Z tego, co wydukałem do tej pory, wyszło "coś" takiego:

void SJF1(int ile_pr,Proces *tab_pr)
{
   int i,wait=0;
   system("cls");
   cout<<"Algorytm SJF z wywlaszczaniem (shortest-remaining-time-first):"<<endl<<endl;
   for(i=0;i<ile_pr;i++)
   {
      if(i==0)
      {
         if(tab_pr[i].dl_fazy_procesora<=tab_pr[i+1].dl_fazy_procesora)
            cout<<"Proces P["<<i<<"]="<<wait<<endl;
         else
         {
            tab_pr[i].dl_fazy_procesora-=tab_pr[i+1].moment_zgloszenia;
            cout<<"Proces P["<<i<<"]="<<wait<<endl;
         }
      }
      else
      {
            if(tab_pr[i].dl_fazy_procesora<=tab_pr[i+1].dl_fazy_procesora)
            {
               wait+=tab_pr[i-1].dl_fazy_procesora;
               cout<<"Proces P["<<i<<"]="<<wait<<endl;
            }
            else
            {
               tab_pr[i].dl_fazy_procesora-=tab_pr[i+1].moment_zgloszenia;
               wait+=tab_pr[i].dl_fazy_procesora;
               cout<<"Proces P["<<i<<"]="<<wait<<endl;
            }
      }
   }
   system("pause");
}

Oczywiście funkcja krzaczy się strasznie, bo nie wiem chociażby, jak zrobić, aby sprawdzało, czy wywłaszczony proces nie powinien właśnie w tym momencie dokończyć swojej fazy na procku.

Proszę o pomoc i z góry dziękuję za wszelkie sugestie :) :) :)

Pozdrawiam!