Esempio n. 1
0
        public static void Egykioszt(Termek[] raktar, BinarisKeresofa <LancoltLista <Termek> > hazak, int[] gyakorisagok, string[] termekek, bool[,] viszony)
        {
            Console.WriteLine();
            Console.WriteLine("METÓDUS");
            Console.WriteLine();
            for (int i = 0; i < gyakorisagok.Length - 1; i++)
            {
                for (int j = i + 1; j < gyakorisagok.Length; j++)
                {
                    if (gyakorisagok[i] > gyakorisagok[j])
                    {
                        int csere = gyakorisagok[j];
                        gyakorisagok[j] = gyakorisagok[i];
                        gyakorisagok[i] = csere;
                        string swap = termekek[j];
                        termekek[j] = termekek[i];
                        termekek[i] = swap;
                    }
                }
            }

            int k = 0;
            int c = 0;

            foreach (var item in hazak.CustomOrder(walk_style.inorder))
            {
                for (int j = 0; j < viszony.GetLength(1); j++)
                {
                    c = 0;
                    foreach (var a in item.preferencia)
                    {
                        if (a == termekek[j])
                        {
                            viszony[k, j] = true;
                        }
                        c++;
                    }
                }
                k++;
            }

            k           = 0;
            int[,] tomb =
            {
                { 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0 },
                { 0, 0, 0, 0, 0, 0 }
            };

            int s = 0;

            foreach (var item in hazak.CustomOrder(walk_style.inorder))
            {
                for (int j = 0; j < viszony.GetLength(1); j++)
                {
                    if (viszony[k, j] == true)
                    {
                        s = 0;
                        while (termekek[j] != raktar[s].Tipus)
                        {
                            s++;
                        }
                        while (raktar[s].Mennyiseg > 0 && item.prefmenny > 0)
                        {
                            Console.Write(termekek[j] + " ");
                            raktar[s].Mennyiseg--;
                            item.prefmenny--;

                            switch (raktar[s].Tipus)
                            {
                            case "Alma":
                                foreach (var a in item)
                                {
                                    a.Plus(raktar[s].Tipus);
                                }
                                break;

                            case "Barack":
                                foreach (var a in item)
                                {
                                    a.Plus(raktar[s].Tipus);
                                }
                                break;

                            case "Szena":
                                foreach (var a in item)
                                {
                                    a.Plus(raktar[s].Tipus);
                                }
                                break;

                            case "Buza":
                                foreach (var a in item)
                                {
                                    a.Plus(raktar[s].Tipus);
                                }
                                break;

                            case "Marha":
                                foreach (var a in item)
                                {
                                    a.Plus(raktar[s].Tipus);
                                }
                                break;

                            case "Birka":
                                foreach (var a in item)
                                {
                                    a.Plus(raktar[s].Tipus);
                                }
                                break;
                            }

                            tomb[k, j]++;
                        }
                    }
                }
                k++;
            }

            bool van = true;

            foreach (var item in hazak.CustomOrder(walk_style.inorder))
            {
                if (item.prefmenny > 0)
                {
                    van = false;
                }
            }

            Console.WriteLine();
            Console.WriteLine("EREDMÉNY KEZDETE");
            Console.WriteLine();
            try
            {
                if (van)
                {
                    Console.WriteLine("VAN MEGOLDÁS");
                }

                else
                {
                    Console.WriteLine("NINCS MEGOLDÁS");
                    throw new Kivetel("Nem sikerült kiosztani");
                }
            }
            catch (Kivetel p)
            {
                Console.WriteLine(p.Msg);
            }

            Console.WriteLine();
            for (int i = 0; i < termekek.Length; i++)
            {
                Console.Write(termekek[i] + " ");
            }
            Console.WriteLine();
            int h = 0;

            foreach (var item in hazak.CustomOrder(walk_style.inorder))
            {
                Console.Write(item.nev + " ");
                for (int j = 0; j < tomb.GetLength(1); j++)
                {
                    Console.Write(tomb[h, j] + " ");
                }
                h++;
                Console.WriteLine();
            }
            Console.WriteLine();
            Console.WriteLine("EREDMÉNY VÉGE");
            Console.WriteLine();
            for (int i = 0; i < viszony.GetLength(0); i++)
            {
                for (int j = 0; j < viszony.GetLength(1); j++)
                {
                    Console.Write(viszony[i, j] + " ");
                }
                Console.WriteLine();
            }

            for (int i = 0; i < gyakorisagok.Length; i++)
            {
                Console.Write(gyakorisagok[i] + " ");
            }
            Console.WriteLine();
            for (int j = 0; j < termekek.Length; j++)
            {
                Console.Write(termekek[j] + " ");
            }
        }