2020.12.16. Objektum-orientált (OOP) megoldás az autók feladatsorhoz

using System;
using System.Collections.Generic; //a lista miatt kell
using System.IO;//a fájlkezelés miatt kell

namespace autokOOP
{
    class auto   
    { 
        public string azonosito { get; set; } //property (tulajdonság/jellemző)
        public int loero { get; set; }
        public double tomeg { get; set; }
        public int gyorsulas { get; set; }
        public int beavatkozas { get; set; }

        public auto(string sor) //konstruktor, példányosításkor automatikusan végrehajtódik
        {
            string[] atmeneti = sor.Split(';');
            azonosito = atmeneti[0];
            loero = Convert.ToInt32(atmeneti[1]);
            tomeg = Convert.ToDouble(atmeneti[2]);
            gyorsulas = Convert.ToInt32(atmeneti[3]);
            beavatkozas = Convert.ToInt32(atmeneti[4]);
        }
        public override string ToString() //virtuális metódus
        {
            return $"{azonosito,-18} | {loero,4} lóerő | {tomeg,4} t | {gyorsulas,2} mp | {beavatkozas,2}* kellett beavatkozni";
            //Console.WriteLine("{0,-18} | {1,4} lóerő | {2,4} t | {3,2} mp | {4,2}* kellett beavatkozni", azonosito, loero, tomeg, gyorsulas, beavatkozas);
                
        }

    }
    class Program
    {

        static void Main(string[] args)
        {
            List<auto> autok = new List<auto>(); //példányosítás
            //2.Az adatokat olvassa be fájlból és tárolja el egy listában.

            foreach (var i in File.ReadAllLines("adatok.txt"))
            {
                autok.Add(new auto(i));
            }

            //Összes kiírása:
            foreach (var i in autok)
            {
                Console.WriteLine(i);
            }

            //3.Írja ki a képernyőre a minta szerint a leggyorsabb autó adatait. (Az a leggyorsabb, ami a legkevesebb idő alatt gyorsul 100 ra.)
            int kiIndex = 0;
            int min = autok[0].gyorsulas;
            for (int i = 0; i < autok.Count; i++)
            {
                if (min > autok[i].gyorsulas)
                {
                    min = autok[i].gyorsulas;
                    kiIndex = i;
                }
            }
            Console.WriteLine($"\nLeggyorsabb autó:\n{autok[kiIndex]}");
            //Console.WriteLine("\nLeggyorsabb autó:\n{0}", autok[kiIndex]);
            //4.Írja ki a képernyőre a minta szerint a legkevésbé önálló autó azonosítóját. (Az a legkevésbé önálló, amelynél a legtöbbet kellett beavatkozni a vezetésbe.)
            kiIndex = 0;
            int max = autok[0].beavatkozas;
            for (int i = 0; i < autok.Count; i++)
            {
                if (max < autok[i].beavatkozas)
                {
                    max = autok[i].beavatkozas;
                    kiIndex = i;
                }
            }

            Console.WriteLine($"\nA legkevésbé önálló autó:\n{autok[kiIndex]}");


            //6.Írja ki a képernyőre az autók átlag tömegét.
            double osszTomeg = 0;
            for (int i = 0; i < autok.Count; i++)
            {
                osszTomeg += autok[i].tomeg;
            }
           
            Console.WriteLine($"\nAz autók átlag tömege (t): {osszTomeg / autok.Count:0.00}");


            //7.Írja ki a képernyőre, és egy új fájlba autónként a következő adatokat szóközzel elválasztva: sorszám(a feldolgozás sorrendjében automatikusan generált), tömeg kg-ban. (1 tonna = 1000 kg).

            List<string> ki = new List<string>();
            for (int i = 0; i < autok.Count; i++)
            {
                ki.Add($"{i+1}{autok[i].tomeg * 1000} kg");
                Console.WriteLine(ki[i]);
            }
            File.WriteAllLines("tomeg.txt", ki);
            Console.Write($"\nA program bezárásához nyomjon meg egy billentyűt...");
            Console.ReadKey();
        }
    }
}

Megjegyzések