using System;

using System.Collections.Generic;

using System.IO;

using System.Text;

 

namespace ConsoleApplication4

{

    struct Szakasz

    {

        public String Kezdet;

        public String Vég;

        public Double Táv;

        public int Emelkedés;

        public int Lejtés;

        public bool PecsetelőHely;

 

        public Szakasz(string[] m)

        {

            Kezdet = m[0];

            Vég = m[1];

            Táv = double.Parse(m[2]);

            Emelkedés = int.Parse(m[3]);

            Lejtés = int.Parse(m[4]);

            PecsetelőHely = m[5] == "i";

        }

 

        //6.feladat

        public bool HianyosNev

        {

            get

            {

                if (PecsetelőHely)

                {

                    if (Vég.Contains("pecsetelohely")) return false;

                    else return true;

                }

                return false;

            }

        }

 

        public override string ToString()

        {

            string NemHiányosNév = Vég;

            if (HianyosNev) NemHiányosNév += "pecsetelohely";

            return String.Format("{0};{1};{2};{3};{4};{5}", Kezdet, NemHiányosNév, Táv, Emelkedés, Lejtés, PecsetelőHely ? 'i' : 'n');

        }

    }

    class kektura

    {

        static void Main()

        {

            List<Szakasz> sz = new List<Szakasz>();

            string[] forrás = File.ReadAllLines("kektura.csv");

            int tszfm = int.Parse(forrás[0]);

            for (int i = 1; i < forrás.Length; i++)

            {

                sz.Add(new Szakasz(forrás[i].Split(';')));

            }

 

            Console.WriteLine("3.feladat:Szakaszok száma: {0} db", sz.Count);

 

            //4.feladat: A túra teljes hossza

            double hossz = 0;

            foreach (var i in sz)

            {

                hossz += i.Táv;

            }

            Console.WriteLine("4.feladat: A túra teljes hossza: {0} km", hossz);

 

            //5.feladat: A legrövidebb szakasz adatai

            int mini = 0;

            for (int i = 1; i < sz.Count; i++)

            {

                if (sz[i].Táv < sz[mini].Táv) mini = i;

            }

            Console.WriteLine("5.feladat:A legrövidebb szakasz adatai:");

            Console.WriteLine("\tKezdete:{0}", sz[mini].Kezdet);

            Console.WriteLine("\tVége:{0}", sz[mini].Vég);

            Console.WriteLine("\tTávolság:{0} km", sz[mini].Táv);

 

            //7.feladat: Hiányos állomásnevek

            Console.WriteLine("7.feladat: Hiányos állomásnevek:");

            bool voltHiányos = false;

            for (int i = 0; i < sz.Count; i++)

            {

                if (sz[i].HianyosNev)

                {

                    Console.WriteLine("\t{0}", sz[i].Vég);

                    voltHiányos = true;

                }

            }

            if (!voltHiányos) Console.WriteLine("Nincs hiányos állomásnév!");

 

            //8.feladat:A túra legmagasabban fekvő végpontja

            int aktMagasság = tszfm + sz[0].Emelkedés - sz[0].Lejtés;

            int maxMagasság = aktMagasság;

            int maxi = 0;

            for (int i = 1; i < sz.Count; i++)

            {

                aktMagasság += sz[i].Emelkedés - sz[i].Lejtés;

                if (aktMagasság > maxMagasság)

                {

                    maxMagasság = aktMagasság;

                    maxi = i;

                }

            }

            Console.WriteLine("8.feladat:A túra legmagasabban fekvő végpontja:");

            Console.WriteLine("\tA végpont neve:{0}", sz[maxi].Vég);

            Console.WriteLine("\ta végpont tengerszint feletti maggasága:{0} m", maxMagasság);

 

            //9.feladat: kektura2.csv állomány

            List<string> sorok = new List<string>();

            sorok.Add(tszfm.ToString());

            foreach (var i in sz)

            {

                sorok.Add(i.ToString());

            }

            File.WriteAllLines("kektura2.csv", sorok);

 

 

            Console.Write("készítette Nagy Dávid");

 

            Console.ReadKey();

           

        }

    }

}