Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _1_Zadaća
- {
- public class Osoba : IComparable<Osoba>
- {
- string ime, prezime;
- List<Osoba> prij;
- Fejs f;
- private Osoba(string Ime, string Prezime, Fejs fejs)
- {
- f = fejs;
- ime = Ime;
- prezime = Prezime;
- prij = new List<Osoba>();
- }
- public string Ime
- {
- get { return ime; }
- }
- public string Prezime
- {
- get { return prezime; }
- }
- public int brojPrijatelja()
- {
- return prij.Count;
- }
- public List<Osoba> prijatelji()
- {
- return prij;
- }
- public List<Osoba> medjuPrijatelji(Osoba o)
- {
- List<Osoba> mp = new List<Osoba>();
- List<Osoba> p = o.prijatelji();
- foreach (Osoba x in prij)
- if (p.Contains(x))
- mp.Add(x);
- return mp;
- }
- static public Osoba operator +(Osoba a, Osoba b)
- {
- // Provjera jesu osobe izbačene i jesu li u istom fejsu ako ih ima više
- if (!a.f.Osobe.Contains(b) || !b.f.Osobe.Contains(a))
- throw new Exception("Korištenje osobe koja nije u fejsu");
- // Ako su osobe već prijatelji ne radi ništa
- if (a.prij.Contains(b)) return a;
- a.prij.Add(b);
- b.prij.Add(a);
- return a;
- }
- static public Osoba operator -(Osoba a, Osoba b)
- {
- // Provjera jesu osobe izbačene i jesu li u istom fejsu ako ih ima više
- if (!a.f.Osobe.Contains(b) || !b.f.Osobe.Contains(a))
- throw new Exception("Korištenje osobe koja nije u fejsu");
- a.prij.Remove(b);
- if (a.prij.Count == 0) a.f.IzbaciPrazno(a); // Ako nema prijatelja izbaci
- b.prij.Remove(a);
- if (b.prij.Count == 0) b.f.IzbaciPrazno(b); // Ako nema prijatelja izbaci
- return a;
- }
- public override string ToString()
- {
- // Ispisuje ime osobe i sve njegove prijatelje
- string s = ime + " " + prezime + " prijatelji:\n";
- foreach (Osoba x in prij)
- s += x.Ime + " " + x.Prezime + ", ";
- return s.Substring(0, s.Length - 2) + '.';
- }
- public int CompareTo(Osoba o)
- {
- // Za sortiranje osoba po broju prijatelja, pa po prezimenu, pa po imenu
- if (prij.Count != o.prij.Count)
- {
- return brojPrijatelja() - o.brojPrijatelja();
- }
- else if (Prezime != o.Prezime)
- {
- return Prezime.CompareTo(o.Prezime);
- }
- else
- {
- return Ime.CompareTo(o.Ime);
- }
- }
- public class Fejs: IEnumerable<Osoba>
- {
- List<Osoba> osobe;
- public Fejs()
- {
- osobe = new List<Osoba>();
- }
- public void Dodaj(string Ime, string Prezime)
- {
- osobe.Add(new Osoba(Ime, Prezime, this));
- }
- public List<Osoba> Osobe
- {
- get { return osobe; }
- }
- public void Izbaci(string Prezime, string Ime)
- {
- foreach(Osoba x in osobe)
- {
- if (x.Ime == Ime && x.Prezime == Prezime)
- {
- osobe.Remove(x);
- // Izbačenu osobu uklanjamo sa lista prijatelja drugih osoba iz fejsa
- foreach (Osoba y in x.prijatelji())
- y.prij.Remove(x);
- return;
- }
- }
- }
- public void Izbaci(Osoba a)
- {
- osobe.Remove(a);
- // Izbačenu osobu uklanjamo sa lista prijatelja drugih osoba iz fejsa
- foreach (Osoba y in a.prijatelji())
- y.prij.Remove(a);
- }
- public void IzbaciPrazno(Osoba a)
- {
- osobe.Remove(a);
- }
- public void Sort()
- {
- osobe.Sort();
- }
- public IEnumerator<Osoba> GetEnumerator()
- {
- foreach (Osoba o in osobe)
- {
- yield return o;
- }
- }
- System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
- {
- return GetEnumerator();
- }
- public Dictionary<string, Osoba> this[string prezime]
- {
- get {
- // Vraća Dictionary gdje je ključ ime osobe a vrijednost je sama osoba
- Dictionary<string, Osoba> op = new Dictionary<string, Osoba>();
- foreach(Osoba x in osobe)
- if (x.Prezime == prezime)
- op.Add(x.Ime, x);
- return op;
- }
- }
- public override string ToString()
- {
- // Ispisuje sve osobe u Fejsu i koliko imaju prijatelja
- string s = "Fejs:\n";
- foreach (Osoba x in osobe)
- s += x.Ime + " " + x.Prezime + " " + x.brojPrijatelja() + ", ";
- return s.Substring(0, s.Length - 2) + '.' ;
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Osoba.Fejs fejs = new Osoba.Fejs();
- fejs.Dodaj("Zvonimir", "Šimunović");
- fejs.Dodaj("Petar", "Vlašić");
- fejs.Dodaj("Stjepan", "Šimić");
- fejs.Dodaj("Domagoj", "Mikić");
- fejs.Dodaj("Marko", "Ćorić");
- fejs.Dodaj("Marko", "Šimić");
- fejs.Dodaj("Ivan", "Šimić");
- fejs.Dodaj("Ante", "Vlašić");
- fejs.Dodaj("Ante", "Šimić");
- Console.WriteLine(fejs + "\n");
- fejs["Šimunović"]["Zvonimir"] += fejs["Šimić"]["Stjepan"];
- fejs["Šimunović"]["Zvonimir"] += fejs["Vlašić"]["Petar"];
- Console.WriteLine(fejs["Šimunović"]["Zvonimir"] + "\n");
- fejs["Šimunović"]["Zvonimir"] += fejs["Vlašić"]["Petar"];
- Console.WriteLine(fejs["Šimunović"]["Zvonimir"] + "\n");
- fejs["Šimunović"]["Zvonimir"] -= fejs["Vlašić"]["Petar"];
- Console.WriteLine(fejs["Šimunović"]["Zvonimir"] + "\n");
- fejs["Šimunović"]["Zvonimir"] += fejs["Ćorić"]["Marko"];
- fejs["Šimunović"]["Zvonimir"] += fejs["Mikić"]["Domagoj"];
- Console.WriteLine(fejs["Šimunović"]["Zvonimir"] + "\n");
- Console.WriteLine(fejs["Ćorić"]["Marko"] + "\n");
- fejs["Šimić"]["Ivan"] += fejs["Ćorić"]["Marko"];
- fejs["Šimić"]["Ivan"] += fejs["Mikić"]["Domagoj"];
- fejs["Šimić"]["Ivan"] += fejs["Vlašić"]["Ante"];
- Console.WriteLine(fejs["Šimić"]["Ivan"] + "\n");
- string mprij = "Medjuprijatelji:\n";
- foreach (Osoba x in fejs["Šimunović"]["Zvonimir"].medjuPrijatelji(fejs["Šimić"]["Ivan"]))
- mprij += x.Ime + " " + x.Prezime + ", ";
- Console.WriteLine(mprij.Substring(0, mprij.Length - 2) + '.' + "\n");
- fejs.Izbaci( "Vlašić", "Ante");
- Console.WriteLine(fejs + "\n");
- fejs.Izbaci(fejs["Šimić"]["Ante"]);
- Console.WriteLine(fejs + "\n");
- fejs.Sort();
- string o = "Fejs:\n";
- foreach (Osoba x in fejs)
- o += x.Ime + " " + x.Prezime + " " + x.brojPrijatelja() + ", ";
- Console.WriteLine(o.Substring(0, o.Length - 2) + '.' + "\n");
- Osoba z = fejs["Šimunović"]["Zvonimir"];
- fejs.Izbaci(z);
- Console.WriteLine(fejs + "\n");
- try
- {
- z += fejs["Šimić"]["Stjepan"];
- }
- catch
- {
- Console.WriteLine("Uhvaćena iznimka za izbačenu osobu za +=");
- }
- try
- {
- fejs["Šimić"]["Stjepan"] -= z;
- }
- catch
- {
- Console.WriteLine("Uhvaćena iznimka za izbačenu osobu za -=");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement