using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace orai0904
{
    class Orszag
    {
        public string Orszagnev { get; private set; }
        public int Terulet { get; private set; }
        public int Nepesseg { get; private set; }
        public string Fovaros { get; private set; }
        public int FovarosNepesseg { get; private set; }
        public List<Orszag> adatok;

        public Orszag(string orszagnev, int terulet, int nepesseg, string fovaros, int fovarosNepesseg)
        {
            Orszagnev = orszagnev;
            Terulet = terulet;
            Nepesseg = nepesseg;
            Fovaros = fovaros;
            FovarosNepesseg = fovarosNepesseg;
        }

        public bool nagyobbe()
        {
            return FovarosNepesseg > 0 && ((double)FovarosNepesseg / Nepesseg) > 0.0003;
        }
        public Orszag()
        {

        }


        public void feladat2()
        {
            adatok = new List<Orszag>();
            StreamReader sr = new StreamReader("adatok-utf8.txt");
            while (!sr.EndOfStream)
            {
                string[] sor = sr.ReadLine().Split(';');
                Orszag o = new Orszag()
                {
                    Orszagnev = sor[0],
                    Terulet = Convert.ToInt32(sor[1]),
                    Nepesseg = Convert.ToInt32(sor[2]),
                    Fovaros = sor[3],
                    FovarosNepesseg = Convert.ToInt32(sor[4])
                };
                adatok.Add(o);
            }
        }

        public void feladat3()
        {
            Console.WriteLine($"A beolvasott országok száma: {adatok.Count}");
        }

        public void feladat4()
        {
            foreach (var item in adatok)
            {
                double terulet = item.Nepesseg / item.Terulet;
                if (item.Orszagnev == "Kína")
                {
                    Console.WriteLine($"Kíne népsűrűsége: {terulet}fő/km^2");
                }
            }

        }

        public void feladat5()
        {
            int kinalakos = 0;
            int indialakos = 0;
            foreach (var item in adatok)
            {


                if (item.Orszagnev == "Kína")
                {
                    kinalakos = item.Nepesseg;
                }
                if (item.Orszagnev == "India")
                {
                    indialakos = item.Nepesseg;
                }


            }
            Console.WriteLine($"Kína lakosság {kinalakos - indialakos} fővel volt több");


        }

        public void feladat6()
        {
            int[] nepesseg = { };
            foreach (var item in adatok)
            {
                nepesseg = nepesseg.Append(item.Nepesseg).ToArray();
            }
            nepesseg = nepesseg.OrderByDescending(c => c).ToArray();
            foreach (var item in adatok)
            {
                if (nepesseg[2] == item.Nepesseg)
                {
                    Console.WriteLine($"A harmadik legnépesebb ország: {item.Orszagnev}, a lakosság {item.Nepesseg} fő");
                }
            }

        }

        public void feladat7()
        {
            Console.WriteLine($"A következő országok lakosságának  több mint 30%-a a fővárosban lakik:");
            foreach (var orszag in adatok.Where(o => o.nagyobbe()))
            {
                Console.WriteLine($"\t{orszag.Orszagnev} - ({orszag.Fovaros})");
            }

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

    class Program
    {
        static void Main(string[] args)
        {
            Orszag o = new Orszag();
            o.feladat2();
            o.feladat3();
            o.feladat4();
            o.feladat5();
            o.feladat6();
            o.feladat7();
            Console.ReadKey();
        }
    }
}
