public void Sort(IComparer <Osoba> comparer) { Osoba.OsobaUsporedivac osobaUsporedivac = (Osoba.OsobaUsporedivac)comparer; if (osobaUsporedivac.tipUsporedbe.ToString().Equals("brojPrijatelja")) { osobe.Sort(comparer); return; } List <string> lista = new List <string>(); foreach (Osoba o in osobe) { if (osobaUsporedivac.tipUsporedbe.ToString().Equals("prezime")) { lista.Add(o.ime + " " + o.prezime); } else { lista.Add(o.prezime + " " + o.ime); } } lista.Sort(); List <Osoba> novifejs = new List <Osoba>(); while (osobe.Count != 0) { for (int i = 0; i < osobe.Count; i++) { if (osobaUsporedivac.tipUsporedbe.ToString().Equals("ime")) { if (lista[0].Equals(osobe[i].prezime + " " + osobe[i].ime)) { novifejs.Add(osobe[i]); lista.Remove(lista[0]); osobe.Remove(osobe[i]); break; } } else { if (lista[0].Equals(osobe[i].ime + " " + osobe[i].prezime)) { novifejs.Add(osobe[i]); lista.Remove(lista[0]); osobe.Remove(osobe[i]); break; } } } } this.osobe = novifejs; }
static void Main(string[] args) { Fejs Facebook = new Fejs(); Osoba A = new Osoba("Ante", "Kovačić"); Osoba B = new Osoba("Ivan", "Mažuranić"); Osoba C = new Osoba("Ivana", "Brlić- Mažuranić"); Osoba D = new Osoba("Ida", "Marulic"); Osoba E = new Osoba("Tin", "Ujevic"); Osoba F = new Osoba("Ida", "Pavlic"); Osoba G = new Osoba("Petar", "Pavlic"); Osoba H = new Osoba("Marko", "Pavlic"); // trenutno u programu imamo jednu instancu klase Fejs // i instance klase Osoba imena A-H // nadodajemo osobe u Facebook Facebook.DodajOsobu("Mirko", "Katic"); // ovdje smo nadodali i jednu novu osobu Facebook.DodajOsobu(A); Facebook += B; Facebook += C; Facebook += D; Facebook += E; Facebook += F; Facebook += G; Facebook += H; // Sprijateljiti ćemo neke od Osoba // A je prijatelj sa osobama B,C,D A += B; A += C; A += D; // Osoba F je prijatelj sa A,C,E,B F += C; F += E; F += B; F += A; // prijatelji osobe F Console.WriteLine("Prijatelji osobe " + F.ime + " " + F.prezime); foreach (Osoba o in F.prijatelji) { Console.WriteLine(o.ime + " " + o.prezime); } Console.WriteLine("--------------------------------------------------------"); // Osoba C je prijatelj sa A,F,G C += G; // Osoba D je prijatelj sa osobama A, F, i C // s time da je sada i F prijatelj sa D D += C; D += F; Console.WriteLine("Prijatelji osobe " + D.ime + " " + D.prezime); foreach (Osoba o in D.Prijatelji()) { Console.WriteLine(o.ime + " " + o.prezime); } Console.WriteLine("--------------------------------------------------------"); // ponovno prijatelji osobe B da vidimo da li radi Console.WriteLine("Prijatelji osobe " + F.ime + " " + F.prezime); foreach (Osoba o in F.Prijatelji()) { Console.WriteLine(o.ime + " " + o.prezime); } Console.WriteLine("--------------------------------------------------------"); // koristenje foreach na klasi Fejs + funkcija brojPrijatelja na klasi Osoba foreach (Osoba o in Facebook) { Console.WriteLine("Osoba " + o.ime + " " + o.prezime + " je na Fejsu i ima " + o.brojPrijatelja() + " prijatelja"); } Console.WriteLine("--------------------------------------------------------"); // koristenje foreach na Fejs uz indeks["prezime"] Console.WriteLine("koristenje foreach petlje na klasi Fejs[\"prezime\"] i funkcije Osoba.MeduPrijatelji"); Console.WriteLine("Trebali bi biti sortirani po broju prijatelja ( pa broj prijatelja ide u zagradu ) "); foreach (Osoba o in Facebook["Marulic"]) { foreach (Osoba p in Facebook["Pavlic"]) { HashSet <Osoba> skup = o.Meduprijatelji(p); // trebali bi biti sortirani po broju prijatelja ( pa broj prijatelja ide u zagradu ) Console.WriteLine("Meduprijatelji osoba " + o.ToString() + " (" + o.brojPrijatelja() + ") i " + p.ToString() + "(" + p.brojPrijatelja() + ")"); foreach (Osoba r in skup) { Console.WriteLine(r.ToString()); } } Console.WriteLine("--------------------------------------------------------"); } Console.WriteLine("Ispisi sve osobe sa imenom Ida koje su na Fejsu"); foreach (Osoba o in Facebook["*"]["Ida"]) // ispisi sve ide sa Fejsa { Console.WriteLine(o.ToString()); } Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("Svi prijatelji osobe " + A.ToString()); foreach (Osoba o in A.Prijatelji()) { Console.WriteLine(o.ToString()); } Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("Sve osobe na facebooku: "); foreach (Osoba o in Facebook["*"]) { Console.WriteLine(o.ToString() + " (" + o.brojPrijatelja() + ")"); } Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("Osobu " + A.ToString() + " cemo maknuti sa Fejsa \npa cemo opet pogledati kako izgleda stanje prijateljstva na Fejsu"); Facebook -= A; foreach (Osoba o in Facebook["*"]) { Console.WriteLine(o.ToString() + " (" + o.brojPrijatelja() + ")"); } Console.WriteLine("ohoho"); Osoba.OsobaUsporedivac sorting = Osoba.DohvatiUsporedivac(); sorting.tipUsporedbe = Osoba.OsobaUsporedivac.TipUsporedbe.brojPrijatelja; Facebook.Sort(sorting); Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("Sve osobe sa Fejsa sortirane po broju prijatelja"); foreach (Osoba o in Facebook) { Console.WriteLine(o.ToString() + " (" + o.brojPrijatelja() + ")"); } sorting.tipUsporedbe = Osoba.OsobaUsporedivac.TipUsporedbe.ime; Facebook.Sort(sorting); Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("Sve osobe sa Fejsa sortirane po prezimenima"); foreach (Osoba o in Facebook) { Console.WriteLine(o.ToString()); } sorting.tipUsporedbe = Osoba.OsobaUsporedivac.TipUsporedbe.prezime; Facebook.Sort(sorting); Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("Sve osobe sa Fejsa sortirane po imenima"); foreach (Osoba o in Facebook) { Console.WriteLine(o.ToString()); } }