Beispiel #1
0
        public void CiklusFuttatás()
        {
            string[] Ered = fl.FeladatÖsszeállítás(Időkapacitás);
            for (int i = 0; i < Ered.Length; i++)
            {
                if (Ered[i] == null)
                {
                    break;
                }
                try
                {
                    fl.MegadottElemTörlés(Ered[i]);
                }
                catch (NincsIlyenElemException e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            try
            {
                fl.KörNövelése(ciklus);
            }
            catch (TúlSokKörÓtaÉlException e)
            {
                IFeladat k = e.Hiba;
                while (k != null)
                {
                    Console.WriteLine(e.Message + k.Feladat_neve);
                    k = k.Következő;
                }
            }
        }
Beispiel #2
0
        public void MegadottElemTörlés(string nev)
        {
            IFeladat seged = null;
            IFeladat k     = fej;

            while (k != null && nev != k.Feladat_neve)
            {
                seged = k;
                k     = k.Következő;
            }
            if (k == null)
            {
                throw new NincsIlyenElemException();
            }
            if (k == fej)
            {
                k.Beütemezve();
                fej = k.Következő;
            }
            else
            {
                k.Beütemezve();
                seged.Következő = k.Következő;
                seged           = k;
            }
            elemszám--;
        }
Beispiel #3
0
        public string[] FeladatÖsszeállítás(int idő)
        {
            string[] E = new string[Elemszám];
            string[] F = new string[Elemszám];
            IFeladat k = fej;
            int      max = 0, maxidő = 0;

            BackTrack(k, idő, 0, ref max, ref maxidő, 0, 0, ref E, ref F);
            return(E);
        }
Beispiel #4
0
 public void ListaFeltöltés(IFeladat feladat)
 {
     try
     {
         fl.RendezettFeladatHozzáadás(feladat);
     }
     catch (MárVanIlyenElemException e)
     {
         Console.WriteLine(e.Message);
     }
 }
Beispiel #5
0
        public void KörNövelése(int ciklus)
        {
            IFeladat k = fej;

            while (k != null)
            {
                k.KörNövel();
                if (k.HánySzimulációsKörÓtaÉl >= ciklus)
                {
                    SokKör();
                    throw new TúlSokKörÓtaÉlException(k);
                }
                k = k.Következő;
            }
        }
Beispiel #6
0
 public void BackTrack(IFeladat k, int idő, int szint, ref int max, ref int maxidő, int opt, int optidő, ref string[] E, ref string[] F)
 {
     while (k != null && optidő != idő)
     {
         if (k.Időigény + optidő <= idő)
         {
             int j = szint + 1;
             while (j < F.Length && F[j] != null)
             {
                 F[j] = null;
                 j++;
             }
             F[szint] = k.Feladat_neve;
             opt     += k.Prioritás;
             optidő  += k.Időigény;
             BackTrack(k.Következő, idő, szint + 1, ref max, ref maxidő, opt, optidő, ref E, ref F);
             if (optidő > maxidő || (optidő == maxidő && opt > max))
             {
                 max    = opt;
                 maxidő = optidő;
                 int i = 0;
                 while (E[i] != null)
                 {
                     E[i] = null;
                     i++;
                 }
                 i = 0;
                 while (i <= szint)
                 {
                     E[i] = F[i];
                     i++;
                 }
             }
         }
         int l = szint + 1;
         if (l < F.Length && F[l] != null)
         {
             F[l] = null;
             l++;
         }
         if (k != null)
         {
             k = k.Következő;
         }
     }
 }
Beispiel #7
0
 public void RendezettFeladatHozzáadás(IFeladat feladat)
 {
     if (fej == null)
     {
         fej = feladat;
         feladat.Következő = null;
     }
     else
     {
         IFeladat f = fej;
         while (f != null)
         {
             if (f.Feladat_neve == feladat.Feladat_neve)
             {
                 throw new MárVanIlyenElemException();
             }
             f = f.Következő;
         }
         f = fej;
         while (f.Következő != null && f.Következő.Prioritás > feladat.Prioritás)
         {
             f = f.Következő;
         }
         if (f.Következő == null)
         {
             f.Következő       = feladat;
             feladat.Következő = null;
         }
         else
         {
             IFeladat p = f.Következő, e = f;
             while (p != null && feladat.Időigény < p.Időigény)
             {
                 e = p;
                 p = p.Következő;
             }
             if (p == null)
             {
                 feladat.Következő = null;
                 e.Következő       = feladat;
             }
             else
             {
                 while (p != null && p.Prioritás == feladat.Prioritás && feladat.Időigény > p.Időigény)
                 {
                     e = p;
                     p = p.Következő;
                 }
                 if (e == null)
                 {
                     feladat.Következő = fej;
                     fej = feladat;
                 }
                 else
                 {
                     feladat.Következő = p;
                     e.Következő       = feladat;
                 }
             }
         }
     }
     elemszám++;
 }
Beispiel #8
0
 public FeladatLista()
 {
     fej = null;
 }
Beispiel #9
0
 public TúlSokKörÓtaÉlException(IFeladat k) : base("Ez az elem túl sok kör óta él már a feladatok között: ")
 {
     hiba = k;
 }