2022.03.23., 30., ... 04.06. Monitor vásár - full OOP mintaprogram

Elkezdtük, folytattuk és itt fogjuk befejezni.

 //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 paramétereken keresztül.

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

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

2022.03.16. Városok - megoldással

Első óránkon töri próbaérettségi volt. 

Aztán folytattuk a városos programot. Házi feladat befejezni.


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

namespace _2022._03._09
{
    class Varos
    {
        public string nev;
        public int lakossag;
        public int tavolsag;
        public bool megyeszekhely;

        public Varos( string sor)
        {
            List<string> atmeneti = sor.Split(" ").ToList();
            nev = atmeneti[0];
            lakossag =Convert.ToInt32( atmeneti[1]);
            tavolsag= Convert.ToInt32(atmeneti[2]);
            if (atmeneti.Count==3)
            {
                megyeszekhely = true;
            }
            else
            {
                if (atmeneti.Count==4)
                {
                    megyeszekhely = false;
                }
            }
        }
       
        public void kiir()
        {
            Console.WriteLine("Városnév: {0} Lakosság: {1} távolság: {2}",nev,lakossag,tavolsag,megyeszekhely);
            if (megyeszekhely)
            {
                Console.WriteLine("megyeszékhely");
            }
        }
    }
    class Program
    {
        static void nemMegyeszekhely3(List<Varos>v)
        {
            bool van = false;
            for (int i = 0; i <v.Count; i++)
            {
                if (!v[i].megyeszekhely)
                {
                    Console.WriteLine($"Neve: {v[i].nev} Népessége: {v[i].lakossag}");
                    van = true;
                }
            }
            if (!van)
            {
                Console.WriteLine("Minden település megyeszékhely.");
            }
           
        }
        static bool nemMegyeszekhely3fv(List<Varos> v)
        {
            bool van = false;
            for (int i = 0; i < v.Count; i++)
            {
                if (!v[i].megyeszekhely)
                {
                    Console.WriteLine($"Neve: {v[i].nev} Népessége: {v[i].lakossag}");
                    van = true;
                }
            }
            return van;
        }
        static int legtavolabbi4(List<Varos>v)
        {
            int max =v[0].tavolsag;
            int index = 0;
            for (int i = 1; i < v.Count; i++)
            {
                if (v[i].tavolsag>max)
                {
                    max = v[i].tavolsag;
                    index = i;
                }
            }
            return index;
        }
        static int minimum(List<Varos> v)
        {
            int min = v[0].lakossag;
            int index = 0;
            for (int i = 1; i < v.Count; i++)
            {
                if (v[i].lakossag < min)
                {
                    min = v[i].lakossag;
                    index = i;
                }
            }
            return index;
        }
        static void lakos(List<Varos> v,int fel)
        {
            for (int i = 0; i < v.Count; i++)
            {
                if (v[i].lakossag>fel)
                {
                    Console.WriteLine(v[i].nev);
                   
                }
            }
            if (fel > 164000)
            {
                Console.WriteLine("hiba");
            }
        }
        static void BP(List<Varos>v )
        {
            int szam = 180;
            int i = 0;
            bool igaz = false;

            while (i<v.Count && !igaz)

            {
                if (v[i].tavolsag>szam)
                {
                Console.WriteLine("Ez a varos tavolabb van mint 180km {0}",v[i].nev);
                igaz = true;
                }    
                i++;
            }
            if (!igaz)

            {
                Console.WriteLine("Nincs 180km-nél tavolabbi varos");
            }
        }
        static void olvas(List<Varos>v)
        {
            StreamWriter sr = new StreamWriter("Varosok2.txt");
            int i = 0;
            while (i<v.Count)
            {
                sr.Write("{0}", v[i].nev.ToUpper());
                if (v[i].megyeszekhely==true)
                {
                    sr.WriteLine(" megyeszékhely");
                }
                else
                {
                    sr.WriteLine(" nem megyeszékhely");
                }
                i++;
            }
            sr.Close();
        }
        static void Main(string[] args)
        {
            //A program neve legyen: varosok.

            //A tanult objektum-orientált programszerkezetet használd a megoldásnál.

            //Minden képernyőre író feladat előtt írjuk ki a főprogramban a feladat sorszámát.

            //A fájl most 5 sort tartalmaz, de a programod készüljön fel arra,

            //hogy hosszabb, és más tartalmú fájlt is fel tudjon dolgozni.



            //A programban városok adatait tároljuk.

            //Az adatok soronként: a város neve, lakosainak száma, Budapesttől mért távolsága,

            //illetve amelyik város nem megyeszékhely, ott még ez is szerepel: NO.



            //Ez legyen a varosok.txt tartalma:

            /*

            Békéscsaba 59000 210

            Szolnok 72000 119

            Kecskemét 112000 93

            Nyíregyháza 118000 230 NO

            Miskolc 164000 182

            */

            //1.feladat:

            //Olvasd be a fájlt, és tárold a tartalmukat egy osztálypéldányokat tartalmazó listában.
            Console.WriteLine("1.feladat");
            List<Varos> varosok = new List<Varos>();
            foreach (var item in File.ReadAllLines("varosok.txt"))
            {
                varosok.Add(new Varos(item));
            }
           
            //2.feladat:
            Console.WriteLine("2.feladat");
            //Írd ki az adatokat a képernyőre, egy sorba egy város adatait.          
            for (int i = 0; i < varosok.Count; i++)
            {
                varosok[i].kiir();
            }

            //3.feladat:
            Console.WriteLine("3.feladat");
            //Írd ki a képernyőre annak a városnak a nevét, és a népességét, amely nem megyeszékhely.
            //(Ha több ilyen lenne, mindet ki kéne írni.) Ha nincs ilyen, írj ki hibaüzenetet.
            nemMegyeszekhely3(varosok);
            Console.WriteLine("3.feladat függvénnyel");
            if (!nemMegyeszekhely3fv(varosok))
            {
                Console.WriteLine("Minden település megyeszékhely.");
            }

            //4.feladat:
            Console.WriteLine("4.feladat");
            //Írd ki a Budapesttől legtávolabbi város nevét a képernyőre. A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.        
            int ind = legtavolabbi4(varosok);
            Console.WriteLine($"A Budapesttől legtávolabbi város neve: {varosok[ind].nev} és távolsága: {varosok[legtavolabbi4(varosok)].tavolsag} km");

            //5.feladat:
            Console.WriteLine("5.feladat");
            //Írd ki a legkevesebb lakosú város nevét a képernyőre. A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.      
            Console.WriteLine($" A legkevesebb lakosú város neve: {varosok[minimum(varosok)].nev}");

            //6.feladat:
            Console.WriteLine("6.feladat");
            //Kérd meg a felhasználót a főprogramban, hogy adjon meg egy lakosságszámot. Írd ki a felhasználó által beírt érték fölötti lakosságszámnál nagyobb lakosságú városok neveit, soronként egyet.
            //Ha nincs ilyen, írj ki hibaüzenetet.
            Console.WriteLine("Adj meg egy lakosságszámot");
            int fel = Convert.ToInt32(Console.ReadLine());
            lakos(varosok, fel);
            //7.feladat:
            Console.WriteLine("7.feladat");
            //Döntsd el, hogy van-e 180 km-nél távolabbi város. Ha találsz ilyet,

            //írd ki az elsőnek a nevét és a hozzá tartozó km-t.

            //Ha nincs ilyen, írj ki hibaüzenetet.
           BP(varosok);
            //8. feladat:
            //mögéjük vesszővel elválasztva azt a szót,
            //hogy megyeszékhely/nem megyeszékhely
            //Írd ki egy új fájlba a városok neveit nagybetűsen,
            //(a valóságnak megfelelően)
            olvas(varosok);
        }
    }
}

2022.03.09. ,11. Objektum-orientált programozás - első mintaprogram

Ezt elkezdtük és eljutottunk a 4. feladatig. Itt folytatjuk.     

     //A program neve legyen: varosok.

            //A tanult objektum-orientált programszerkezetet használd a megoldásnál.

            //Minden képernyőre író feladat előtt írjuk ki a főprogramban a feladat sorszámát.

            //A fájl most 5 sort tartalmaz, de a programod készüljön fel arra,

            //hogy hosszabb, és más tartalmú fájlt is fel tudjon dolgozni.

            

            //A programban városok adatait tároljuk.

            //Az adatok soronként: a város neve, lakosainak száma, Budapesttől mért távolsága,

            //illetve amelyik város nem megyeszékhely, ott még ez is szerepel: NO.

 

            //Ez legyen a varosok.txt tartalma:

            /*

            Békéscsaba 59000 210

            Szolnok 72000 119

            Kecskemét 112000 93

            Nyíregyháza 118000 230 NO

            Miskolc 164000 182

            */

 

            //1.feladat:

            //Olvasd be a fájlt, és tárold a tartalmukat egy osztálypéldányokat tartalmazó listában.

 

            //2.feladat:

            //Írd ki az adatokat a képernyőre, egy sorba egy város adatait.          

 

            //3.feladat:

            //Írd ki a képernyőre annak a városnak a nevét, és a népességét, amely nem megyeszékhely.

            //(Ha több ilyen lenne, mindet ki kéne írni.) Ha nincs ilyen, írj ki hibaüzenetet.

 

            //4.feladat:

            //Írd ki a Budapesttől legtávolabbi város nevét a képernyőre. A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.        

 

            //5.feladat:

            //Írd ki a legkevesebb lakosú város nevét a képernyőre. A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.      

            

            //6.feladat:

            //Kérd meg a felhasználót a főprogramban, hogy adjon meg egy lakosságszámot. Írd ki a felhasználó által beírt érték fölötti lakosságszámnál nagyobb lakosságú városok neveit, soronként egyet.

            //Ha nincs ilyen, írj ki hibaüzenetet.

 

            //7.feladat:

            //Döntsd el, hogy van-e 180 km-nél távolabbi város. Ha találsz ilyet,

            //írd ki az elsőnek a nevét és a hozzá tartozó km-t.

            //Ha nincs ilyen, írj ki hibaüzenetet.

 

            //8. feladat:

            //Írd ki egy új fájlba a városok neveit nagybetűsen,

            //mögéjük vesszővel elválasztva azt a szót,

            //hogy megyeszékhely/nem megyeszékhely

            //(a valóságnak megfelelően).

2022.03.02. Elmélet

 Ma az "Algoritmus fogalma, jellemzői. Értékadás. Vezérlőszerkezetek: szekvencia, szelekció, iteráció. Alprogramok: metódusok, függvények, paraméterek." témakört végigvettük. Írtunk egy példaprogramot, legközelebb közzétesszük.

2023.04.26. Javító feladatsor