// UjZeneFeltoltes metódusban megtalálható public void UjZeneFeltoltes(t adatok, int kulcs) // új zene fetöltése { int meret_0 = 0; Beszuras(ref gyoker, adatok, kulcs); uj_szam_feltoltes_kiiras(); // esemény elsütés MemoriaKartyaMeret(gyoker, ref meret_0); if (meret_0 > meret) // megvizsgáljuk ,hogy a lejátszó mérete kisebb -e a memoriakártya méreténél, ha nem akkor törlés { while (!(meret_0 < meret)) { binaris_fa legalacsonyabbElem = LegalacsonyabbErtekeles(gyoker); Torles_fajtak(ref gyoker, legalacsonyabbElem.ertekeles); meret_0 -= legalacsonyabbElem.adatok[0].tarhely; if (legalacsonyabbElem.adatok.Count > 1) { for (int i = 0; i < legalacsonyabbElem.adatok.Count; i++) { regi_szamok_torlese_kiiras?.Invoke(); } } else { regi_szamok_torlese_kiiras?.Invoke(); } } } }
public void MemoriaKartyaMeret(binaris_fa p, ref int meret_osszes) // postorder bejaras, az órán tanultak szerint, megnézzük ,hogy mekkora a memoria mérete. { if (p != null) { MemoriaKartyaMeret(p.balelem, ref meret_osszes); MemoriaKartyaMeret(p.jobbelem, ref meret_osszes); meret_osszes += p.Tarhely; } }
void Kiiras_privat(ref binaris_fa p) //postorder { if (p != null) { Kiiras_privat(ref p.balelem); Kiiras_privat(ref p.jobbelem); Console.WriteLine(p.ToString()); } }
//MegmaradtUresElemekTorlesében találtaho public void KetGyermekTorlese(ref binaris_fa e, ref binaris_fa r) { if (r.jobbelem != null) { KetGyermekTorlese(ref e, ref r.jobbelem); } else { e.adatok = r.adatok; e.ertekeles = r.ertekeles; r = r.balelem; } }
//UjZeneFeltoltes metódusban megtalálható public void Torles_fajtak(ref binaris_fa p, int kulcs) // órán vett anyag (elemek törlése a bináris fában) { // az "e" elem törlését végzi el a "p" gyökerű részfában if (p != null) { if (p.ertekeles.Equals(kulcs)) { // megvan a törlendő elem if (p.balelem == null && p.jobbelem == null) { // 0 gyermek (levél) p = null; } else if (p.balelem == null && p.jobbelem != null) { // 1 gyermek (jobb) p = p.jobbelem; } else if (p.jobbelem == null && p.balelem != null) { // 1 gyermek (bal) p = p.balelem; } else if (p.balelem != null && p.jobbelem != null) { // 2 gyermek (bal és jobb) KetGyermekTorlese(ref p, ref p.balelem); } } else if (p.ertekeles < kulcs) { Torles_fajtak(ref p.jobbelem, kulcs); } else { Torles_fajtak(ref p.balelem, kulcs); } } else { throw new Exception("Nincs ilyen elem törlésnél."); } }
public void Beszuras(ref binaris_fa p, t tartalom, int kulcs) // A beszúrja a bináris fába az adatokat { if (p == null) // megvizsgáljuk, hogy nem null az érték, ha igen akkor létrehozunk 1 újat { p = new binaris_fa(tartalom, kulcs); } else if (kulcs > p.ertekeles) // pszeudokód szerint beszúrunk { Beszuras(ref p.jobbelem, tartalom, kulcs); } else if (kulcs < p.ertekeles) // pszeudokód szerint beszúrunk { Beszuras(ref p.balelem, tartalom, kulcs); } else { foreach (t elem in p.adatok) // Megvizsgaljuk ,hogy létezik -e ez a zene már, és ha igen akkor MarVanIlyenZeneException -t dobunk { if ((tartalom is konnyuzene) && (elem is konnyuzene)) { if ((elem as konnyuzene).Cim == (tartalom as konnyuzene).Cim && ((elem as konnyuzene).Eloado == (tartalom as konnyuzene).Eloado)) { throw new MarVanIlyenZeneException(); } } else if ((tartalom is komolyzene) && (elem is komolyzene)) { if ((elem as komolyzene).Cim == (tartalom as komolyzene).Cim && ((elem as komolyzene).Zeneszero == (tartalom as komolyzene).Zeneszero)) { throw new MarVanIlyenZeneException(); } } else if ((tartalom is sajatzene) && (elem is sajatzene)) { if ((elem as sajatzene).tarhely == (tartalom as sajatzene).tarhely && ((elem as sajatzene).idotartam == (tartalom as sajatzene).idotartam)) { throw new MarVanIlyenZeneException(); } } } p.adatok.Add(tartalom); // ADDoljuk a listahoz } }
//UjZeneFeltoltes metódusban megtalálható public binaris_fa LegalacsonyabbErtekeles(binaris_fa p) // ha nem fér el a szám, akkor a legalacsonyabban értékelt számokat töröljük .v { if (p != null) { binaris_fa minelem = p; if (p.balelem != null && p.ertekeles < p.balelem.ertekeles) { return(minelem = LegalacsonyabbErtekeles(p.balelem)); } else { return(minelem); } } else { throw new Exception(); } }
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