2022.05.31. Adatbázis

 Megnéztük a dolgozatokat és az adatbázinál ejutottunk az azonosítóig.

2022.05.27. Önvezető autók régebbi példaprogram OOP megoldása

 Ennek a feladatnak az első megoldása mindenkinek megvan a digifüzetében. Itt most közzéadom olyan optimalizált verzióját, amiben mindenre találsz példát.

  Önvezető autók

Napjainkban az önvezető autók egyre gyorsabban fejlődnek, több neves cég is fejleszt ilyeneket. Ebben a feladatban a rájuk vonatkozó adatokat kell feldolgoznia.

 Az adatokat a lenti keretben találja. Az állomány soronként tartalmazza az autók következő adatait egymástól pontosvesszővel elválasztva:

 - azonosító (gyártó és modellszám)

- teljesítmény (lóerő)

- tömeg (tonna)

- gyorsulás (hány másodperc alatt gyorsul 100 km/h-ra)

- a vezetőnek hányszor kellett beavatkozni a vezetésbe 10.000 km-en

 A fájlban 9 autó adatai vannak.

 

Tesla Model S P90D;760;2,20;3;3

Volvo XC90;889;2,90;4;14

Volkswagen GO989;1378;3,66;5;6

Audi Q525;772;2,40;2;3

Mercedes Benz898;739;2,20;3;9

Google Drive 18;752;2,55;4;11

Delphi Magic 428B;1194;3,00;3;4

Bosch Doom300;700;2,09;4;6

Nissan Cherry 100;725;3,1;3;7

 

Például a Tesla Model S P90D autó 760 lóerős teljesítményű, 2,2 tonna tömegű, 3 másodperc alatt gyorsul 100 km/órára és a 10.000 km-es tesztvezetésen 3-szor volt szükség humán beavatkozásra.

 

using System;

using System.Collections.Generic;

using System.IO;

 

namespace autokOOP

{

    class auto

    {

        public string azonosito { getset; } //property (tulajdonság/jellemző)

        //a fentit a prop tab-tab módszerrel könnyen elő lehet hívni

        //de így is lehetne egyszerűbben:

        //public string azonosito;

        public int loero { getset; }

        public double tomeg { getset; }

        public int gyorsulas { getset; }

        public int beavatkozas { getset; }

 

        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";

            //így is jó:

            //Console.WriteLine("{0,-18} | {1,4} lóerő | {2,4} t | {3,2} mp | {4,2}* kellett beavatkozni", azonosito, loero, tomeg, gyorsulas, beavatkozas);

        }

 

        //ez így egyszerűbb:

        public void kiir()

        {

            Console.WriteLine($"{azonosito,-18} | {loero,4} lóerő | {tomeg,4} t | {gyorsulas,2} mp | {beavatkozas,2}* kellett beavatkozni");          

        }

    }

    class Program

    {

        static int leggyorsabb3(List<auto> a)

        {

            int kiIndex = 0;

            int min = a[0].gyorsulas;

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

            {

                if (min > a[i].gyorsulas)

                {

                    min = a[i].gyorsulas;

                    kiIndex = i;

                }

            }

            return kiIndex;

        }

 

        static void legkevesbeOnallo4(List<auto> a)

        {

            int kiIndex = 0;

            int max = a[0].beavatkozas;

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

            {

                if (max < a[i].beavatkozas)

                {

                    max = a[i].beavatkozas;

                    kiIndex = i;

                }

            }

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

        }

 

        static double atlag5(List<auto> a)

        {

            double osszTomeg = 0;

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

            {

                osszTomeg += a[i].tomeg;

            }

 

            return osszTomeg / a.Count;

        }

        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 item in File.ReadAllLines("autok.txt"))

            {

                autok.Add(new auto(item));

            }

 

            Console.WriteLine("Kiírás 4 módszerrel\n1. kiírás\n");

            //Összes kiírása:

            foreach (var i in autok)

            {

                Console.WriteLine(i);

            }

            Console.WriteLine("\n2. kiírás");

            foreach (var i in autok)

            {

                Console.WriteLine(i.ToString());

            }

            Console.WriteLine("\n3. kiírás");

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

            {

                Console.WriteLine(autok[i].ToString());

            }

            Console.WriteLine("\n4. kiírás");

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

            {

                autok[i].kiir();

            }

 

            //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.)

            //A feladatot függvénnyel kell megoldani.

 

            int index = leggyorsabb3(autok);

            Console.WriteLine($"\nLeggyorsabb autó:\n{autok[index]}"); //virtuális metódussal

            Console.WriteLine($"\nLeggyorsabb autó once more:");

            autok[index].kiir();

 

 

            //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.)

            //Metódust kell használni.

 

            legkevesbeOnallo4(autok);

 

            //6.Írja ki a képernyőre az autók átlag tömegét, függvénnyel.

            Console.WriteLine("Az autók átlag tömege: {0:0.00}", atlag5(autok));

            Console.WriteLine("Az autók átlag tömege once more: {0}", Math.Round(atlag5(autok),2));

 

            //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).

            //Nem kötelező metódust használni.

 

            Console.WriteLine("Fájlba írás 1. verzió");

            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("tomeg1.txt", ki);

 

            Console.WriteLine("Fájlba írás 2. verzió");

            StreamWriter sw = new StreamWriter("tomeg2.txt");

            string kiirando = string.Empty;

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

            {

                kiirando = $"{i + 1}{autok[i].tomeg * 1000} kg";

                //egyszerűbben:

                //kiirando = i + 1 + ". " + autok[i].tomeg * 1000 + " kg";

                sw.WriteLine(kiirando);

                Console.WriteLine(kiirando);

            }

            sw.Close();

            Console.Write($"\nA program bezárásához nyomjon meg egy billentyűt...");

            Console.ReadLine();

        }

    }

}


2024.02.15.-16. Helyettesítés

 Adatbázis: vizsgaremek adatbázisának befejezése teljesen készre, dokumentáció kiegészítése, befejezése. Vizsgaremek felületének megvalósítá...