class Hegyek
{
    public string Hegycsucs { get; private set; }
    public string Hegyseg { get; private set; }
    public int Magassag { get; private set; }
    List<Hegyek> hegyekList = new List<Hegyek>();

    public Hegyek(string hegycsucs, string hegyseg, int magassag)
    {
        Hegycsucs = hegycsucs;
        Hegyseg = hegyseg;
        Magassag = magassag;
    }

    public Hegyek()
    {
        StreamReader sr = new StreamReader("hegyekMO.txt");
        string[] sor = sr.ReadLine().Split(";");

        while (!sr.EndOfStream)
        {
            sor = sr.ReadLine().Split(";");
            Hegyek hegyek = new Hegyek(sor[0], sor[1], Convert.ToInt32(sor[2]));
            hegyekList.Add(hegyek);
        }
    }

    public void Feladat3()
    {
        Console.WriteLine($"3. feladat: Hegycsúcsok száma: {hegyekList.Count} db");
    }
    
    public void Feladat4()
    {
        double magassag = 0;

        foreach (var hegy in hegyekList)
        {
            magassag += hegy.Magassag;
        }

        Console.WriteLine($"4. feladat: Hegycsúcsok átlagos magassága: {Math.Round(magassag / hegyekList.Count, 2)} m");
    }

    public void Feladat5()
    {
        int legmagasabb = 0;

        foreach (var hegy in hegyekList)
        {
            if (hegy.Magassag > legmagasabb)
            {
                legmagasabb = hegy.Magassag;
            }
        }

        foreach (var hegy in hegyekList)
        {
            if (hegy.Magassag == legmagasabb)
            {
                Console.WriteLine("5. feladat: A legmagasabb hegycsúcs adatai:");
                Console.WriteLine($"\tNév: {hegy.Hegycsucs}");
                Console.WriteLine($"\tHegység: {hegy.Hegyseg}");
                Console.WriteLine($"\tNév: {hegy.Magassag} m");
                break;
            }
        }
    }

    public void Feladat6()
    {
        Console.Write("6. feladat: Kérek egy magasságot: ");
        int bekertMagassag = Convert.ToInt32(Console.ReadLine());

        foreach (var hegy in hegyekList)
        {
            if (hegy.Magassag > bekertMagassag)
            {
                Console.WriteLine($"\tVan {bekertMagassag} m-nél magasabb hegycsúcs, a(z) {hegy.Hegycsucs}");
                break;
            }
        }

    }

    public void Feladat7()
    {
        int hegycsucsLab3000 = 0;

        foreach (var hegy in hegyekList)
        {
            if (hegy.Magassag * 3.280839895 > 3000)
            {
                hegycsucsLab3000++;
            }
        }

        Console.WriteLine($"7. feladat: 3000 lábnál magasabb hegycsúcsok száma: {hegycsucsLab3000}");
    }

    public void Feladat8()
    {
        Dictionary<string, int> statisztika = new Dictionary<string, int>();

        foreach (var hegy in hegyekList)
        {
            if (statisztika.ContainsKey(hegy.Hegyseg))
            {
                statisztika[hegy.Hegyseg]++;
            }

            else
            {
                statisztika[hegy.Hegyseg] = 1;
            }
        }

        Console.WriteLine("8. feladat: Hegység statisztika");

        foreach (var item in statisztika)
        {
            Console.WriteLine($"\t{item.Key}: {item.Value} db");
        }
    }

    public void Feladat9()
    {
        StreamWriter sw = new StreamWriter("bukk-videk.txt");
        sw.WriteLine("Hegycsúcs neve;Magasság lábban");
        
        foreach (var hegy in hegyekList)
        {
            if (hegy.Hegyseg.Equals("Bükk-vidék"))
            {
                sw.WriteLine($"{hegy.Hegycsucs};{Math.Round(hegy.Magassag * 3.280839895, 1)}");
            }
        }

        sw.Close();
    }

    public override string ToString()
    {
        return "";
    }
}
