2022.04.05. -08. Monitorvásár folytatás

 Folytattuk együtt a feladatsort. Házi feladat: befejezni az 5. feladatot, és megírni a 6-7-es feladatot péntekre.

Az eddigi megoldásaink:

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

namespace ConsoleApp40
{
    class Monitor
    {
        public string nev;
        public string tipus;
        public double col;
        public double ar;
        public bool gamer;
        public int afa;
        public double bruttoar;
        public int db;
        public Monitor(string sor)
        {
            List<string> atmeneti = sor.Split(";").ToList();
            nev = atmeneti[0];
            tipus = atmeneti[1];
            col = Convert.ToDouble(atmeneti[2]);
            ar = Convert.ToInt32(atmeneti[3]);
            if (atmeneti.Count == 4)
            {
                gamer = false;
            }
            else
            {
                if (atmeneti.Count == 5)
                {
                    gamer = true;
                }
            }
            afa = 27;
            bruttoar = ar / 100 * afa + ar;
            db = 15;
        }
        public void kiir()
        {
            Console.Write("Gyártó: {0}; Típus: {1}; Méret: {2} col; Nettó ár: {3} Ft; A bruttoára: {4} Ft; ", nev, tipus, col, ar, bruttoar);
            if (gamer)
            {
                Console.WriteLine("Ez egy játékra alkalmasabb monitor");
            }
            else
            {
                Console.WriteLine("Ez nem egy játékra specializált monitor");
            }
        }
    }
    class Program
    {
        static double nyitokeszlet(List<Monitor> m)
        {
            double keszletar = 0;
            for (int i = 0; i < m.Count; i++)
            {
                keszletar = keszletar + m[i].bruttoar * m[i].db;
            }
            return keszletar;
        }
        static void fajlbairas(List<Monitor> m)
        {
            int i = 0;

            StreamWriter sw = new StreamWriter("Drágább monitorok.txt");
            while (m.Count > i)
            {
                if (m[i].ar > 50000)
                {
                    sw.WriteLine("Monitor: {0}, típusa: {1}, méret: {2} col, ára: {3} ezer Ft, készleten: {4} db.", m[i].nev.ToUpper(), m[i].tipus, m[i].col, ezerrelosztas(m[i].ar), m[i].db);
                    Console.WriteLine("Monitor: {0}, típusa: {1}, méret: {2} col, ára: {3} ezer Ft, készleten: 15 db.", m[i].nev.ToUpper(), m[i].tipus, m[i].col, ezerrelosztas(m[i].ar), m[i].db);
                }
                i++;
            }
            sw.Close();
        }
        static double ezerrelosztas(double a)
        {
            return a / 1000;
        }
        static void vane(List<Monitor> m)
        {
            int i = 0;
            bool igen = false;
            while (i < m.Count)
            {
                if (m[i].tipus == "EliteDisplay E242")
                {
                    Console.WriteLine("{0} ilyen monitor van!", m[i].db);
                    igen = true;
                }

                i++;
            }
            if (!igen)
            {
                Console.WriteLine("Nincs ilyen monitor!");
                double atl = atlagSzamitas(m);
                Console.WriteLine("Ezt javasoljuk:");
                for ( i = 0; i < m.Count; i++)
                {
                    if ( m[i].ar > atl)
                    {
                        m[i].kiir();
                    }                  
                }
            }

        }
        static double atlagSzamitas(List<Monitor> m)
        {
            int i = 0;
            double atlag = 0;
            while (i < m.Count)
            {
                atlag += m[i].ar;
                i++;
            }
            atlag = atlag / m.Count;
            return atlag;
        }
       
       
        static void Main(string[] args)
        {
            List<Monitor> monitorok = new List<Monitor>();
            Console.WriteLine("1. feladat");
            Console.WriteLine("Fájlok beolvasása...");
            foreach (var item in File.ReadAllLines("monitorok.txt"))
            {
                monitorok.Add(new Monitor(item));
            }
            Console.WriteLine("2a. feladat");
            for (int i = 0; i < monitorok.Count; i++)
            {
                monitorok[i].kiir();
            }
            Console.WriteLine("2b. feladat");
            Console.WriteLine("Bruttó árak kiszámolva...");
            Console.WriteLine("3. feladat");
            Console.WriteLine("A készlet értéke: {0} Ft", nyitokeszlet(monitorok));
            Console.WriteLine("4. feladat");
            fajlbairas(monitorok);
            Console.WriteLine("5. feladat");
            vane(monitorok);
         
         
            // Monitor vásár

            //Egy hardver cég többféle monitort árul.A monitorokról a következő adatokat tároljuk:

            //a monitor gyártója; típusa; mérete; ára;

            //illetve amelyik kifejezetten játékra való, ott még megadják azt is, hogy gamer.

            //A méret colban van, az ár nettó és forintban értjük.

            //Forrásfájl tartalma (a tartalmat használd így, ahogy van, az első sort majd nem kell figyelembe venni beolvasáskor):

            //Feladatok:

            //Lehetőleg minden kiírást a főprogram végezzen el paramétereken keresztül.

            //1. Hozz létre egy osztályt a monitorok adatai számára. Olvasd be a fájl tartalmát.

            //2a. Írd ki a monitorok összes adatát, soronként egy monitort a képernyőre.

            //A kiírás így nézzen ki:

            //Gyártó: Samsung; Típus: S24D330H; Méret: 24 col; Nettó ár: 33000 Ft



            //2b. Tárold az osztálypéldányokban a bruttó árat is (ÁFA: 27%, konkrétan a 27-tel számolj.)

            //3. Tételezzük fel, hogy mindegyik monitorból 15 db van készleten, ez a nyitókészlet. Mekkora a nyitó raktárkészlet bruttó (tehát áfával növelt) értéke?

            //Írj egy metódust, ami meghívásakor kiszámolja

            //a raktárkészlet aktuális bruttó értékét. A főprogram írja ki az értéket.



            //4. Írd ki egy új fájlba, és a képernyőre az 50.000 Ft feletti nettó értékű monitorok összes adatát (a darabszámmal együtt) úgy,

            //hogy a szöveges adatok nagybetűsek legyenek, illetve az árak ezer forintba legyenek átszámítva.

            //Az ezer forintba átszámítást egy külön függvényben valósítsd meg.



            //5. Egy vevő keresi a HP EliteDisplay E242 monitort.

            //Írd ki neki a képernyőre, hogy hány darab ilyen van a készleten.

            //Ha nincs a készleten, ajánlj neki egy olyan monitort, aminek az ára

            //az átlaghoz fölülről közelít.

            //Ehhez használd az átlagszámító függvényt (később lesz feladat).



            //6. Egy újabb vevőt csak az ár érdekli. Írd ki neki a legolcsóbb monitor méretét,

            //és árát.



            //7. A cég akciót hirdet. A 70.000 Ft fölötti árú Samsung monitorok bruttó árából

            // 5%-ot elenged.

            //Írd ki, hogy mennyit veszítene a cég az akcióval,

            //ha az összes akciós monitort eladná.



            //8. Írd ki a képernyőre minden monitor esetén,

            //hogy az adott monitor nettó ára a nettó átlag ár alatt van-e, vagy fölötte,

            //esetleg pontosan egyenlő az átlag árral. Ezt is a főprogram írja ki.



            //9. Modellezzük, hogy megrohamozták a vevők a boltot. 5 és 15 közötti

            //random számú vásárló 1 vagy 2 random módon kiválasztott monitort vásárol,

            //ezzel csökkentve az eredeti készletet.

            //Írd ki, hogy melyik monitorból mennyi maradt a boltban.

            //Vigyázz, hogy nulla darab alá ne mehessen a készlet.

            //Ha az adott monitor éppen elfogyott, ajánlj neki egy másikat (lásd fent).



            //10. Írd ki a képernyőre, hogy a vásárlások után

            //van-e olyan monitor, amelyikből mindegyik elfogyott.



            //11. Írd ki a gyártókat abc sorrendben a képernyőre. Oldd meg úgy is,

            //hogy a metódus írja ki, és úgy is, hogy a főprogram.



            //12. Csökkentsd a legdrágább monitor bruttó árát

            //10%-kal, írd ki ezt az értéket a képernyőre.
            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á...