2023. szeptember 23., szombat

2023.09.25.-29. Helyettesítés - Tesztelés feladat

 Nézzetek utána, hogy mi az a tesztpiramis. 

Javaslom innen elindulni.

Nyiss egy tesztelési digifüzetet (oszd meg velem).

Írj bele egy részletes vázlatot, amiben ezt, és általad talált további hiteles forrásokat használod fel.

Mire elkészülsz, meg is tanulod, mi a tesztpiramis.

A hét második óráján ezt a forrást kell átolvasnod.

2023.09.25.-29. Helyettesítés - Programozás feladatsor

1. Be kell fejezni a monitorvásáros feladatsort.

2. Ez egy hosszú feladatsor, jussatok el minél messzebbre. Segítsetek egymásnak.

Feladatlap - Employee

Az alábbiakban egy feladatsort kell megoldanod, ami alkalmazottak adatait tartalmazza.

A forrás fájlban a mezők jelentése: name, age, city, department, position, gender, marital status, salary (EUR)

Forrásfájl tartalma:

(Ha lusta vagy kiszedni a blog miatt keletkező üres sorokat, írd meg úgy a beolvasást, hogy mindig átléptesse ezeket.) 

John;25;Budapest;IT;Engineer;Male;Single;1200

Alice;30;Debrecen;Marketing;Manager;Female;Married;900

Bob;22;Szeged;HR;Assistant;Male;Single;650

Eva;28;Budapest;Finance;Analyst;Female;Married;1100

Michael;35;Pécs;Sales;Representative;Male;Single;800

Sophia;29;Budapest;IT;Developer;Female;Married;1350

David;40;Szeged;Finance;Manager;Male;Married;1600

Sarah;27;Debrecen;IT;Designer;Female;Single;950

Daniel;32;Szeged;HR;Manager;Male;Single;1400

Emma;31;Pécs;Marketing;Coordinator;Female;Married;720

Matthew;34;Budapest;IT;Team Lead;Male;Single;1450

Olivia;26;Szeged;Sales;Representative;Female;Single;710

William;38;Budapest;Finance;Analyst;Male;Married;1150

Ava;23;Debrecen;IT;Developer;Female;Single;1300

James;29;Budapest;Marketing;Manager;Male;Single;950

Mia;33;Pécs;HR;Assistant;Female;Married;660

Benjamin;24;Szeged;Finance;Analyst;Male;Single;1120

Charlotte;36;Budapest;Sales;Representative;Female;Married;720

Logan;30;Debrecen;IT;Engineer;Male;Single;1150

Luna;28;Szeged;Finance;Manager;Female;Single;1400

Ethan;26;Pécs;IT;Designer;Male;Single;990

Harper;35;Budapest;Marketing;Coordinator;Female;Married;810

Liam;22;Budapest;IT;Developer;Male;Single;1250

Aria;31;Szeged;Finance;Analyst;Female;Married;930

Noah;37;Pécs;Sales;Representative;Male;Single;720

Grace;29;Budapest;IT;Team Lead;Female;Married;1520

Sophia;29;Budapest;IT;Developer;Female;Married;1350

David;40;Szeged;Finance;Manager;Male;Married;1600

Sarah;27;Debrecen;IT;Designer;Female;Single;950

Daniel;32;Szeged;HR;Manager;Male;Single;1400

Emma;31;Pécs;Marketing;Coordinator;Female;Married;720

Matthew;34;Budapest;IT;Team Lead;Male;Single;1450

Olivia;26;Szeged;Sales;Representative;Female;Single;710

William;38;Budapest;Finance;Analyst;Male;Married;1150

Ava;23;Debrecen;IT;Developer;Female;Single;1300

James;29;Budapest;Marketing;Manager;Male;Single;950

Mia;33;Pécs;HR;Assistant;Female;Married;660

Benjamin;24;Szeged;Finance;Analyst;Male;Single;1120

Charlotte;36;Budapest;Sales;Representative;Female;Married;720

Logan;30;Debrecen;IT;Engineer;Male;Single;1150

Luna;28;Szeged;Finance;Manager;Female;Single;1400

Ethan;26;Pécs;IT;Designer;Male;Single;990

Harper;35;Budapest;Marketing;Coordinator;Female;Married;810

Liam;22;Budapest;IT;Developer;Male;Single;1250

Aria;31;Szeged;Finance;Analyst;Female;Married;930

Noah;37;Pécs;Sales;Representative;Male;Single;720

Grace;29;Budapest;IT;Team Lead;Female;Married;1520

Oliver;28;Debrecen;Marketing;Manager;Male;Single;1120

Nora;33;Szeged;HR;Assistant;Female;Single;800

  1. 1.     Készíts egy osztályt, amely tartalmazza a szükséges mezőket. Nem kötelező kidolgozni a property-ket.

    2.     Írd meg a konstruktort.

    3.     Készíts egy osztályon belüli virtuális metódust az adatok kiírására.

    4.     Propertyk kidolgozása (Szorgalmi feladat)
    Dolgozd ki a property-ket is, és használd őket az adatokhoz való korrekt hozzáférésre és módosításra.

    5.     Hibakezelés (Szorgalmi feladat)
    Implementálj hibakezelést az alkalmazásban, például az adatok beolvasásakor vagy a fájlba írás során.

    6.     Az osztály segítségével hozz létre egy listát, amely objektumpéldányokat tartalmaz a forrásfájlból beolvasott adatokkal.

    7.     A virtuális metódus segítségével írd ki az összes adatot.

    A következő feladatokat a program osztályban elhelyezett statikus metódusokkal oldd meg. (Aki szeret kísérletezni, teheti ezeket a metódusokat egy újabb osztályba.) Egyes feladatokat meg lehet oldani LINQ-val is, de ha belefér az időbe, kódoljátok le hagyományosan is. Ha van olyan feladat, ami nem egyértelmű, pl. az, hogyan kell kiírni, ott rád van bízva a megoldás.

    8.     Függvény segítségével írd ki az életkorok átlagát.

    9.     Függvény segítségével írd ki azon személyek számát, akiknek a városa 'Budapest'.

    10. Függvény segítségével keresd ki, majd a virtuális metódus segítségével írd ki a legidősebb személy adatait.

    11. Függvény segítségével döntsd el, majd a főprogramban írd ki, hogy van-e 30 év fölötti személy, és emellett írd ki a nevét is. (Ez a függvény tehát két értéket kell, hogy generáljon, ezt egyetlen szövegként add vissza a főprogramnak, és a főprogram bontsa szét az adatokat, majd utána írja ki.)

    12. Függvénnyel válogasd ki azon személyek nevét egy új tömbbe (nem listába), akik 30 évnél fiatalabbak. Ennek a tömbnek a hasznos tartalmát írd ki a főprogramban.

    13. Egyetlen függvénnyel keresd meg a legfiatalabb és a legidősebb személyt. A függvénynek legyen két olyan paramétere, amiben az eredményt vissza lehet juttatni a főprogramba, és ott ki lehet írni a nevüket és a korukat. A függvény visszatérési értéke pedig képes legyen azt jelezni, hogy van-e több ugyanolyan korú legfiatalabb személy.

    14. Készíts egy függvényt, ami átszámolja az euróban megadott havi fizetést éves fizetéssé, és az eredményt még váltsd át magyar forintba is.

    15. Készíts egy függvényt, amelynek visszatérési értéke egy objektumokat tartalmazó lista, amelyben szerepel az 5 millió forint éves fizetés feletti munkavállalók neve és az éves fizetésük forintban. (Az átszámításhoz használd az előző feladat függvényét.)  Az elkészült listát a főprogram írja ki egy új fájlba (a virtuális metódus segítségével).

    16. Írj egy függvényt, aminek a paramétere az eredeti adatokat tartalmazó listának megfelelő típusú. Ennek segítségével számold ki az összes alkalmazott átlagfizetését.

    17. Készíts a főprogramban egy olyan listát, amiben csak a developer beosztásúak találhatók, minden tulajdonságukkal. Hívd meg újra a főprogramból az előző függvényt, de most ez az új lista legyen a paramétere. A főprogram írja ki a developerek átlagfizetését.

    18. Számold ki a férfi és női alkalmazottak átlagfizetését tetszőleges módszerrel.

2023. szeptember 21., csütörtök

2023.09.22. Monitor vásár

Aki ma nincs itt, pótolja be addig, ameddig a többiek eljutnak.

A jövő héten helyettesítés lesz (09.25-29.), itt a blogban kaptok feladatot, órákon önállóan meg kell oldani.

Október 6-án témazáró lesz, egy teljes feladatsort kell megoldanod. LINQ nem kötelező.

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

//Keszleten levo monitorok 

//Samsung;S24D330H;24;33000  

//Acer;V227Qbi;21.5;31000  

//AOC;24G2U;23.8;66000  

//Samsung;Odyssey G9 C49g95TSSU;49;449989;gamer 

//LG;25UM58-P;25;56000  

//Samsung;C27JG50QQU;27.5;91000  

 

//Feladatok: 

//Lehetőleg minden kiírást a főprogram végezzen el. Próbálj minél több kódot újrahasznosítani. Minden feladatot meg kell oldani hagyományosan, és azután, ha tudod, LINQ-val is.

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

//2. Írd ki a monitorok összes adatát virtuális metódussal, 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 

//2. Tárold az osztálypéldányokban a bruttó árat is (ÁFA: 27%, konkrétan a 27-tel számolj, ne 0,27-tel vagy más megoldással.) 

//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 akciósan 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 (igen/nem).

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

2023. szeptember 20., szerda

2023.09.20. Helyettesítés: dátum-idő kezelő feladatsor

 Feladatsor: Dátum- és Időkezelés C#-ban


1. Feladat: Alapok


Írj egy C# programot, amely megjeleníti a jelenlegi dátumot és időt a következő formában: "Az aktuális dátum és idő: [dátum] [idő]."


2. Feladat: Dátumok összehasonlítása


Készíts egy programot, amely két dátumot kér be a felhasználótól, majd megállapítja, hogy melyik dátum van korábban. Az eredményt a képernyőre írd ki.


3. Feladat: Időintervallum kiszámítása


Készíts egy programot, amely két időpontot (kezdeti és végdátumot) kér be a felhasználótól, majd számold ki és írd ki, hány nap telt el közöttük.


4. Feladat: TimeSpan használata


Hozz létre egy TimeSpan objektumot, amely 2 napot, 5 órát és 30 percet reprezentál. Majd írd ki ezt az időtartamot az alábbi formában: "Az időtartam: 2 nap, 5 óra, 30 perc."


5. Feladat: Fájlbeolvasás és írás


Hozz létre egy szöveges állományt ("adatok.txt"), amelyben egy sorban található egy dátum és egy időpont (pl. "2023-09-20 14:30"). Írj egy programot, amely beolvassa ezt az állományt, majd kiírja a konzolra.


6. Feladat: Fájlban tárolt dátumok összegzése


Módosítsd a korábbi programot úgy, hogy beolvassa az "adatok.txt" állományban található dátumokat, majd számold ki és írd ki az összes időtartamot, ami az aktuális idő és a beolvasott dátum között van. Használd a TimeSpan objektumot az időtartamok számításához.


7. Feladat: LINQ használata


Használd a LINQ lekérdezést a "dátumok.txt" állományban található dátumok közötti legkorábbi és legkésőbbi dátum megtalálására, majd írd ki ezeket a dátumokat a konzolra.


8. Feladat: Keresés időtartam alapján


Készíts egy programot, amely egy megadott időtartam alapján keresi meg azokat a dátumokat az "adatok.txt" állományban, amelyek ezen időtartamon belül vannak. Írd ki ezeket a dátumokat a konzolra.


9. Feladat: Összegzés LINQ segítségével


Használj LINQ lekérdezést az "adatok.txt" állományban található dátumok közötti időtartamok összegzésére. Az eredményt írd ki a konzolra.


10. Feladat: Időrendi sorrendezés LINQ segítségével


Használj LINQ-t az "adatok.txt" állományban található dátumok időrendi sorrendezésére, majd írd ki az eredményt a konzolra.

2023. szeptember 18., hétfő

2023.09.18. Pékáruk zsír-és szénhidráttartalma

 Pékáruk zsír-és szénhidráttartalma

PÉKÁRUK (Adatok 100 grammra)

Zsír gramm

Szénhidrát gramm

Abonett

2.3

65.0

Alföldi kenyér

1.0

53.0

Bakonyi barna kenyér

2.4

46.0

Briós

10.4

54.0

Erzsébet kenyér

1.0

50.0

Fánk

10.6

38.3

Fehér kenyér

3.6

49.6

Félbarna kenyér

1.5

49.0

Francia kenyér

1.8

56.4

 

txt:

Abonett; 2,3; 65,0

Alföldi kenyér; 1,0; 53,0

Bakonyi barna kenyér; 2,4; 46,0

Briós; 10,4; 54,0

Erzsébet kenyér; 1,0; 50,0

Fánk; 10,6; 38,3

Fehér kenyér; 3,6; 49,6

Félbarna kenyér; 1,5; 49,0

Francia kenyér; 1,8; 56,4

Ebben a táblázatban a pékáruk nevei mellett elsőként az szerepel, hogy hány gramm zsírt tartalmaznak, másodikként pedig az, hogy hány gramm a szénhidráttartalmuk.

- Olvasd be a fájl tartalmát, majd írd ki a képernyőre.

- Írd ki annak a pékárunak a nevét, amelyiknek a legkisebb a  zsírtartalma.

- Rendezd növekvő sorba a szénhidráttartalmat, majd írd ki az új sorrendet. A sorbarendezés során ne vesszen el az eredeti sorrend sem. A sorbarendezésre használhatod az Array.Sort() metódust.

- Keresd meg az első 0,7 gramm zsírtartalmú pékárut. Ha van ilyen,írd ki a nevét. Ha van másik is (harmadik, stb.), annak is írd ki a nevét. Készítsd fel ezt a kódot arra, hogy más pékáruk adataival is jól működjön. Ha pl. nincs ilyen érték, akkor adjon hibaüzenetet.- Írd ki a pékáruk az átlagos szénhidráttartalmát.  Ehhez először összegezned kell az értékeket, majd elosztani a darabszámmal.

- Írd ki az átlag alatti szénhidráttartalmú pékáruk neveit egy új fájlba.

2023. szeptember 15., péntek

2023.09.15. Önvezető autók megoldás

Az ellenőrzésben a virtuális metódusig jutottunk el. Akinek nem volt házija, az pótoljon.

using System;

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

namespace autokOOP
{
    class Auto
    {
        public string Azonosito { get; set; } //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 { 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(';');
            this.Azonosito = atmeneti[0];
            this.Loero = Convert.ToInt32(atmeneti[1]);
            this.Tomeg = Convert.ToDouble(atmeneti[2]);
            this.Gyorsulas = Convert.ToInt32(atmeneti[3]);
            this.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";
        }

        //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 Auto leggyorsabb3_2(List<Auto> a)
        {
            Auto min = a[0];
            for (int i = 1; i < a.Count; i++)
            {
                if (min.Gyorsulas > a[i].Gyorsulas)
                {
                    min = a[i];                  
                }
            }
            return min;
        }

        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 leggyorsabb autó adatait.
            //(Az a leggyorsabb, ami a legkevesebb idő alatt gyorsul 100 ra.)
            //A feladatot függvénnyel kell megoldani.
            Console.WriteLine($"\nLeggyorsabb autó többféle módszerrel:");
            int index = leggyorsabb3(autok);
            Console.WriteLine($"\nLeggyorsabb autó:\n{autok[index]}"); //virtuális metódussal
            Console.WriteLine($"\nLeggyorsabb autó:\n{autok[leggyorsabb3(autok)]}");
            autok[index].kiir();

            Console.WriteLine($"\nLeggyorsabb autó:\n{leggyorsabb3_2(autok)}");



            //4.Írja ki a képernyőre a minta szerint a legkevésbé önálló autó azonosítóját.

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

            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.ReadKey();
        }
    }
}

2024.04.25. Időjárás app

 Feladat: Időjárás app - OOP módszerekkel, haladóknak adatkötéssel Az alkalmazás célja, hogy a felhasználók hozzáadjanak és eltávolítsanak v...