public static void Beolvasas_Feltoltes(lejatszo <Izene> lejatszo) // Beolvassuk a zenéket
        {
            Console.Clear();
            StreamReader sr = new StreamReader("beolvas.txt");

            string[] sor;


            while (!sr.EndOfStream)
            {
                sor = sr.ReadLine().Split(';');

                if (sor[0] == "konnyuzene")
                {
                    if (int.Parse(sor[4]) > 100000)
                    {
                        Console.WriteLine("Sajnos ez a fájl túl nagy méretű volt ezért nem töltődött fel");
                    }
                    else
                    {
                        lejatszo.UjZeneFeltoltes(new komolyzene(sor[1], sor[2], int.Parse(sor[3]), int.Parse(sor[5]), int.Parse(sor[4])), int.Parse(sor[5]));
                    }
                }
                else if (sor[0] == "komolyzene")
                {
                    if (int.Parse(sor[4]) > 100000)
                    {
                        Console.WriteLine("Sajnos ez a fájl túl nagy méretű volt ezért nem töltődött fel");
                    }
                    else
                    {
                        lejatszo.UjZeneFeltoltes(new komolyzene(sor[1], sor[2], int.Parse(sor[3]), int.Parse(sor[5]), int.Parse(sor[4])), int.Parse(sor[5]));
                    }
                }
                else if (sor[0] == "sajatzene")
                {
                    if (int.Parse(sor[2]) > 100000)
                    {
                        Console.WriteLine("Sajnos ez a fájl túl nagy méretű volt ezért nem töltődött fel");
                    }
                    else
                    {
                        lejatszo.UjZeneFeltoltes(new sajatzene(int.Parse(sor[2]), int.Parse(sor[1])), 5);
                    }
                }
            }
            Console.ReadLine();
            Console.Clear();
            sr.Close();
        }
        static void Main(string[] args)
        {
            int meret = 100000; // a mérete a memóriának

            try
            {
                string exit;   // a felhasználói bevitel
                int    db = 0; // ennek a kicsi darab változónak a lényege ,hogy ha egyszer lefutott a Beolvasas_Feltoltes akkor már nem töltünk fel újra, hanem már megvan az összes zeneszám egy stringbe beletöltve
                               // és ha már megvan, az összes string léptetjük a db ot és ha 2 szer léptettük , már csak a zeneszámokat és adatait írja ki majd nekünk
                               //példányosítás
                lejatszo <Izene> lejatszo = new lejatszo <Izene>(meret);

                //Feliratkoztatások 7. feladat
                lejatszo.ertekeles_valtozas_kiiras  += Naplozas.Ertekeles_Megvaltozas;
                lejatszo.lejatszaskiiras            += Naplozas.ZeneLejatszas;
                lejatszo.regi_szamok_torlese_kiiras += Naplozas.Regi_szamok_torlese;
                lejatszo.uj_szam_feltoltes_kiiras   += Naplozas.Uj_szam_feltoltese;



                //menürendszer
                do
                {
                    db++; // db változó léptetése
                    Console.Title = "A saját zenelejátszód : Menü";
                    Console.WriteLine("Warning: ( A 2 -es menüpont csak az 1. feltöltés után működik , ezért kérlek nyomd meg az 1-es gombot");
                    Console.WriteLine("1 - A zenéid feltöltése / megtekintése");
                    Console.WriteLine("2 - A zenéid meghallgatása ");
                    Console.WriteLine("esc - kilépés");
                    exit = Console.ReadLine(); // felhasználói bevitel
                    if (exit.Equals("1"))
                    {
                        if (db < 2)
                        {
                            Beolvasas_Feltoltes(lejatszo); // itt beolvassa a zenéidet a fájlból majd megnézi h megfelelő-e a méret , ha igen akkor feltölti
                        }
                        else
                        {
                            Console.Clear();
                            Console.Title = " Könyvtárad ";
                            lejatszo.Kiiras();
                            Console.ReadLine();
                            Console.Clear();
                        }
                    }
                    else if (exit.Equals("2"))
                    {
                        Console.Clear();
                        Console.Title = "A saját zenelejátszód";
                        lejatszo.lejatszas(lejatszo, meret);
                        Console.ReadLine();
                        Console.Clear();
                    }
                    else if (exit.Equals("esc"))
                    {
                        Console.Clear();
                        Console.Title = "A saját zenelejátszód : kilépés";
                        Console.WriteLine("Most kilépsz a zenelejátszóból, köszönjük hogy minket választottál ! További szép napot :)");
                        Console.ReadLine();
                        Console.Clear();
                    }
                    else
                    {
                        Console.WriteLine("Mellényúltál ,az ENTER -lenyomása után próbáld újra");
                        Console.ReadLine();
                        Console.Clear();
                    }
                } while (!exit.Equals("esc"));
            }
            catch (MarVanIlyenZeneException e)
            {
                Console.WriteLine(e.Message);
            }
            catch (MegteltAMemoriaException e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Console.ReadLine();
            }
        }
        public void lejatszas(binaris_fa p, ref lejatszo <t> lejatszas_0)
        {
            string beirt           = "";  // amiben leírja a felhasználó  hogy tetszett e neki, e vagy sem a zene
            int    beirt_ertekeles = 0;   // amiben értékel a felhasználó
                                          // do while azért kell ,mert ha mellé ütünk ne legyen hiba
            bool igaz_e          = false; // külső do while ha a beirt adat i vagy n akkor kilép a do whileból
            bool igaz_e2         = false; // belső do while ha a beírt adattal nem lesz több vag kevesebb az értékelés mint 5 kilép a do whileból
            int  elozo_ertekeles = 0;     // kell mert szeretnék a hallgatók ,hogy kiírjam nekik a jelenlegi értékelést ,hogy tudják azt ,hogy mennyit lehet változtatni rajta

            if (p != null)
            {
                lejatszas(p.balelem, ref lejatszas_0);
                lejatszas(p.jobbelem, ref lejatszas_0);
                for (int i = 0; i < p.adatok.Count; i++) //a listát átpörgetjük és csak a végéig megyünk
                {
                    t adat = p.adatok[i];                //a mostani adatokat lementjük , hogy a metódus végén felhasználjuk
                    elozo_ertekeles = adat.ertekeles;    // kell hogy kitudjuk iratni az eredeti értéket
                    do
                    {
                        Console.WriteLine("Az " + (i + 1) + ". zeneszám lejátszódott. Hogy tetszett? // (i) - igen tetszett ! , (n) - nem tetszett");
                        beirt = Console.ReadLine();
                        Console.Clear();



                        if (beirt == "i")
                        {
                            igaz_e = true;
                            do
                            {
                                Console.WriteLine("Látom tetszett a zene");
                                Console.WriteLine("Eredeti értékelés: {0}", elozo_ertekeles);
                                Console.WriteLine("Mennyivel szeretnéd növelni az értékelést ? ");
                                beirt_ertekeles = Convert.ToInt32(Console.ReadLine());
                                Console.Clear();


                                if (adat.ertekeles + beirt_ertekeles <= 5)
                                {
                                    igaz_e2 = true;
                                }
                                else
                                {
                                    igaz_e2 = false;

                                    Console.WriteLine("Az értékelésed meghaladja az 5-ös (maximum értéket)! jelenlegi értékelés : {0}", adat.ertekeles);
                                    Console.WriteLine("Nyomj egy ENTER -t az újrapróbálkozáshoz");
                                    Console.ReadLine();
                                    Console.Clear();
                                }
                            } while (igaz_e2 != true);
                            adat.ertekeles = adat.ertekeles + beirt_ertekeles; // ha megfelelt ,akkor hozzáadjuk az értékelést
                        }
                        else if (beirt == "n")
                        {
                            igaz_e = true;
                            do
                            {
                                Console.WriteLine("Látom nem tetszett a zene");
                                Console.WriteLine("Eredeti értékelés: {0}", elozo_ertekeles);
                                Console.WriteLine("Mennyivel szeretnéd csökkenteni az értékelést ? ");

                                beirt_ertekeles = Convert.ToInt32(Console.ReadLine());
                                Console.Clear();


                                if (adat.ertekeles - beirt_ertekeles > 0)
                                {
                                    igaz_e2 = true;
                                }
                                else
                                {
                                    igaz_e2 = false;

                                    Console.WriteLine("Az értékelésed nem éri el a 0-ás (minimum értéket)! jelenlegi értékelés : {0}", adat.ertekeles);
                                    Console.WriteLine("Nyomj egy ENTER -t az újrapróbálkozáshoz");
                                    Console.ReadLine();
                                    Console.Clear();
                                }
                            } while (igaz_e2 != true);

                            adat.ertekeles = adat.ertekeles - beirt_ertekeles; // ha megfelelt kivonjuk
                        }
                        else
                        {
                            igaz_e = false;

                            Console.WriteLine("Nem jó gombot ütöttél le, lehet csak megcsúszott a kezed :). A beirt adatod {0} ", beirt);
                            Console.WriteLine("Kérlek az ENTER-gomb lenyomása után próbáld újra !");
                            Console.ReadLine();
                            Console.Clear();
                        }
                    } while (igaz_e != true);


                    Console.WriteLine("Szuper, az értékelés megváltozott! (kivéve ha 0-át írtál be, te kis sunyi :) )");
                    Console.WriteLine("Eredeti értékelés: {0}", elozo_ertekeles);
                    Console.WriteLine("Új értékelés: {0}", adat.ertekeles);
                    Console.WriteLine("Az ENTER lenyomásával tovább léphetsz");
                    ertekeles_valtozas_kiiras?.Invoke(); // esemény elsütés
                    Console.ReadLine();
                    Console.Clear();
                    lejatszaskiiras?.Invoke(); // esemény elsütés
                }
            }
        } // itt történik az zenék meghallgatása és értékelése
 public void lejatszas(lejatszo <t> lejatszo1, int meret) // lejátszás metódus ami létrehozza a binaris fát, és lefuttatja a "lejatszas" metódust
 {
     lejatszo1 = new lejatszo <t>(meret);                 // megadjuk a méretet
     lejatszas(gyoker, ref lejatszo1);
 }