C# érettségi feladatok

11. osztály 11.évf_c# C# programozás Programozás

Fuvarok feladat

A feladatatot lista és tömb segítségével oldottam meg:

A forrás csv fájl innen letölthető: fuvar.csv

using System;
using System.Collections.Generic;
using System.IO;

namespace taxis
{
    class Fuvarok
    {
        public int Taxi_id;
        public DateTime Indulasi_Ido;
        public int Utazasi_Ido;
        public double Megtett_Tav;
        public double Vitel_Dij;
        public double Borravalo;
        public string Fizetesi_Mod;

        //szöveg sorának darabolása
        public Fuvarok(string adatsor)
        {
            string[] adatsorelemek = adatsor.Split(';');            
            this.Taxi_id = Convert.ToInt32(adatsorelemek[0]);
            this.Indulasi_Ido = Convert.ToDateTime(adatsorelemek[1]);
            this.Utazasi_Ido = Convert.ToInt32(adatsorelemek[2]);
            this.Megtett_Tav = Convert.ToDouble(adatsorelemek[3]);
            this.Vitel_Dij = Convert.ToDouble(adatsorelemek[4]);
            this.Borravalo = Convert.ToDouble(adatsorelemek[5]);
            this.Fizetesi_Mod = adatsorelemek[6];
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //csv fájl beolvasása
            StreamReader Olvas = new StreamReader("fuvar.csv");
            //Lista létrehozása
            List<Fuvarok> Fuvar = new List<Fuvarok>();
            //első sor tárolása külön, mert az a fejléc
            string Fejlec = Olvas.ReadLine();
            //a többi sor beolvasása, amíg a fájl végére nem ér
            while (!Olvas.EndOfStream)
            {
                Fuvar.Add(new Fuvarok(Olvas.ReadLine()));
            }
            Olvas.Close();
            Console.WriteLine(Fejlec);
            //Összesen mennyi fuvar van? Lista elemszáma :) Fuvar.Count
            Console.WriteLine("3.feladat: Összesen {0} db fuvar van",Fuvar.Count);

            //A 6185-ös taxisnak mennyi volt a bevétele, és hány fuvarból?
            double bevetele = 0;
            int alkalom = 0;
                //listán végigmegyünk, és figyeljük a Taxi_id-t
            for (int i=1; i<Fuvar.Count; i++)
            {
                if (Fuvar[i].Taxi_id == 6185)
                {
                    alkalom++;
                    bevetele += Fuvar[i].Vitel_Dij;
                }
            }
            Console.WriteLine("4.feladat: {0} db fuvar, {1} $",alkalom,bevetele);
            //6. feladat: összes megtett táv kiszámítása
            double ossztav = 0;
            for (int i = 1; i < Fuvar.Count; i++)
                ossztav += Fuvar[i].Megtett_Tav;
            //átváltás kilométerbe: ossztav*1,6 kerekítés 2 számjegyre
            ossztav = Math.Round(ossztav*1.6,2);
            Console.WriteLine("Összes távolság: {0} km",ossztav);

            //7.feladat az időben leghosszabb fuvar adatai
            double max = 0;
            //1.lépés megkeresni a legtöbb ideig tartó fuvart
            for (int i = 1; i < Fuvar.Count; i++)
                if (max < Fuvar[i].Utazasi_Ido)
                    max = Fuvar[i].Utazasi_Ido;
            //2.lépés, a leghosszabb fuvar adatainak lekérése
            for (int i = 1; i < Fuvar.Count; i++)
                if (Fuvar[i].Utazasi_Ido == max)
                {
                    Console.WriteLine("Fuvar hossza: {0}", Fuvar[i].Utazasi_Ido);
                    Console.WriteLine("Taxi azonosító: {0}", Fuvar[i].Taxi_id);
                    Console.WriteLine("Távolság: {0}", Fuvar[i].Megtett_Tav);
                    Console.WriteLine("Viteldíj: {0}", Fuvar[i].Vitel_Dij);
                }
        }
    }
}