2017. november 28., kedd

2017.10.28. Struktúra tömbben

namespace struktura
{
    class Program
    {
        public struct auto
        {
            public string gyarto;
            public double motor; //köbcenti
            public int ulesek; //ülések száma
            public bool akcio; //akciós-e
        }

        static auto[] autok = new auto[3];

        static void bekeres()
        {
            for (int i = 0; i < autok.Length; i++)
            {
                Console.Write("Kérem az {0}. autó gyártóját: ",i+1);
                autok[i].gyarto = Console.ReadLine();
                Console.Write("Kérem az {0}. autó motor térfogatát: ",i+1);
                autok[i].motor = Convert.ToDouble(Console.ReadLine());
                Console.Write("Kérem az {0}. autó üléseinek számát: ",i+1);
                autok[i].ulesek = Convert.ToInt32(Console.ReadLine());
                Console.Write("Adja meg, hogy a(z) {0}. autó akciós-e (true/false)?: ",i+1);
                autok[i].akcio = Convert.ToBoolean(Console.ReadLine());
            }
        }

        static void kiiras()
        {
            for (int i = 0; i < autok.Length; i++)
            {
                Console.WriteLine("{0} autó", i+1);
                Console.WriteLine(autok[i].gyarto);
                Console.WriteLine(autok[i].motor);
                Console.WriteLine(autok[i].ulesek);
                Console.WriteLine(autok[i].akcio);
                Console.WriteLine();
            }
        }

        static void Main(string[] args)
        {
            bekeres();
            kiiras();
            Console.ReadLine();
        }
    }

}

2017. november 26., vasárnap

2017.11.24. Nyílt napi óra - új anyag: beágyazott metódushívás

A Mátrix egy kezdeti verziója :)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace matrix
{
    class Program
    {
        static bool[] betuk = new bool[80];
        static Random rnd = new Random();
        static void tombFeltoltes()
        {
            for (int i = 0; i < 80; i++)
            {
                if (rnd.Next(0, 2) == 0)
                {
                    betuk[i] = true;
                }
                else
                {
                    betuk[i] = false;
                }
            }
        }

        static void characterRain()
        {
            Console.ForegroundColor = ConsoleColor.Green;
            int i = 0;
            while (true)
            {
                for (int j = 0; j < 80; j++)
                {
                    if (betuk[j])
                    {
                        Console.Write(Convert.ToChar(rnd.Next(32, 127)));
                    }
                    else
                    {
                        Console.Write(' ');
                    }
                }
                Thread.Sleep(100);

                i++;

                if (i % 30 == 0)
                {
                    tombFeltoltes();
                }
            }
        }

        static void Main(string[] args)
        {
            characterRain();
            Console.ReadLine();
        }
    }

}

2017. november 24., péntek

2017.11.24. A feladatsor ellenőrzése

Az instrukciók után már mindenki meg tudja oldani a feladatsort, házi feladat a következő órára.

2017. november 20., hétfő

2017.11.21. Önálló gyakorlás - helyettesítés

A feladatsor megoldásához használhatsz segítséget a blogból, a digifüzetedből, az msdn.com-ról, lehetőleg máshonnan ne. A megoldásodat a 3. óra végén másold a digifüzetbe. Ha kész vagy, és unatkozol, próbálkozz a szorgalmi feladattal.

Feladat: Monitor vásár

Egy hardver cég többféle monitort is árul. Készíts egy szöveges állományt, amelynek egy sorában egy konkrét monitor típus adatait tárolod a következőképpen:
monitor gyártója;típusa;mérete;ára

A méretet colban, az árat forintban add meg, és nettó ár legyen.

Pl.:
Samsung;S24D330H;24;33000

A fájlban minimum 5 monitor adatai szerepeljenek. Utánanézhetsz konkrét adatoknak az interneten (5 perc elég lesz).

Olvasd be a fájlból az összes sort, és tárold le 4 tömbben. (Egyelőre a faktosoknak se kell struktúrával megoldani.)

1. Í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. Hozz létre egy új tömböt, amelyben a bruttó árakat tárolod. A számításhoz tudnod kell, hogy az ÁFA mértéke 27%.

3. Tételezzük fel, hogy mindegyik monitorból 15 db van készleten. Ennek tárolásához hozz létre egy új tömböt. Mekkora a raktárkészlet bruttó értéke?

4. Írd ki egy új fájlba az 50000 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.

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. (A válasz lehet 0 db is.)

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 70000 Ft fölötti árú Samsung monitorok bruttó árából 5%-ot elenged. Írd ki egy újabb tömbbe ezeknek az akciós monitoroknak az árát sorfolytonosan. A feldolgozás közben folyamatosan összesítsd a készleten lévő akciós monitorok értékét, és a feldolgozás végén írd ki, hogy mennyit veszítene a cég az akcióval, ha az összes akciós monitort eladná. (Legalább el kell kezdeni a feladat megoldását…:)

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.

9. Modellezzük, hogy megrohamozták a vevők a boltot. 5 és 15 közötti random számú vásárló 1-1 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.

10. Írd ki a képernyőre, hogy a vásárlások után van-e olyan monitor, amelyikből mindegyik elfogyott.

11. Az Array.Sort() használatával rakd sorba a monitorok gyártóit, és írd ki őket a képernyőre.

12. Csökkentsd a legdrágább monitor bruttó árát 10%-kal, írd ki ezt az értéket a képernyőre.

Szorgalmi, főleg faktosoknak: Tanultuk a struktúraalkalmazását tavaly. Nézz utána, hogyan lehet olyan tömböt létrehozni, ami struktúrákból áll. Alakítsd át a fenti feladatsor megoldását ennek megfelelően.

2017. november 15., szerda

2017.11.15. Gyakorlás - Hegyek

Egy szöveges fájlba írd ki 5 hegy nevét és magasságát.
- Olvasd be a fájl tartalmát, majd írd ki a képernyőre.
- Írd ki a legmagasabb hegy nevét.
- Rendezd sorba az adatokat név szerint, majd írd ki a neveket.
- Rendezd sorba az adatokat magasság szerint, majd írd ki a magasságokat.
- Faktosoknak: oldjuk meg, hogy a sorbarendezéskor mindkét adatot egymás mellé ki tudjuk írni.
- Írjuk ki a képernyőre a legrövidebb nevű hegy nevét és magasságát.
- Írjuk ki a képernyőre a következőt: mekkora lenne az a hegy, amibe "beleépítjük" egymás tetejére az összes hegyet?
- Egy földrengés szétrombolta a legalacsonyabb hegyet, és 10%-kal csökkent a magassága. Mekkora lett?
- Tároljuk egy új tömbben, majd írjuk ki a képernyőre és egy új fájlba a hegyek magasságát lábban. Láb: angol mértékegység, nézz utána, hogyan kell átváltani.


Házi feladat befejezni a feladatsort a jövő hétre. A faktosok a külön feladathoz használjanak struktúrát.


Ádám megoldása, csak a feladatsor eleje, ez alapján mindenki tudja folytatni:

namespace ConsoleApplication1
{
    class Program
    {
        static string[] hegynev = new string[5];
        static int[] magassag = new int[5];
        static int max = 0;
        static int tombelem = 0;

        static void HegyConsolba()
        {
            StreamReader sr = new StreamReader("hegyek.txt");

            string[] atmeneti;
            int i = 0;
            while (!sr.EndOfStream)
            {
                atmeneti = sr.ReadLine().Split(';');
                hegynev[i] = atmeneti[0];
                magassag[i] = Convert.ToInt32(atmeneti[1]);

                Console.WriteLine("A hegy neve: {0}\nMagassága: {1}", hegynev[i], magassag[i]);

                i++;
            }

            sr.Close();
        }

        static void LegmagasabbHegy()
        {
            int i = 0;

            while (i < hegynev.Length)
            {
                if (magassag[i] > max)
                {
                    max = magassag[i];
                    tombelem = i;
                }
                i++;
            }
        }

        static void NevszerintiSorbarendezes()
        {
            Array.Sort(hegynev);

            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine();
                Console.WriteLine(hegynev[i]);
            }
        }
        static void MagassagszerintiSorbarendezes()
        {
            Array.Sort(magassag);

            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine();
                Console.WriteLine(magassag[i]);
            }
            Console.WriteLine();
        }

       
        static void Main(string[] args)
        {
            //kiírja a legmagasabb hegy nevét
            //             Egy szöveges fájlba írd ki 5 hegy nevét és magasságát.
            //- Olvasd be a fájl tartalmát, majd írd ki a képernyőre.
            //- Írd ki a legmagasabb hegy nevét.
            //- Rendezd sorba az adatokat név szerint, majd írd ki a neveket.
            //- Rendezd sorba az adatokat magasság szerint, majd írd ki a magasságokat.
            //- Faktosoknak: oldjuk meg, hogy a sorbarendezéskor mindkét adatot egymás mellé ki tudjuk írni.
            //- Írjuk ki a képernyőre a legrövidebb nevű hegy nevét és magasságát.
            //- Írjuk ki a képernyőre a következőt: mekkora lenne az a hegy, amibe "beleépítjük" egymás tetejére az összes hegyet?
            //- Egy földrengés szétrombolta a legalacsonyabb hegyet, és 10%-kal csökkent a magassága. Mekkora lett?
            //- Tároljuk egy új tömbben, majd írjuk ki a képernyőre és egy új fájlba a hegyek magasságát lábban. Láb: angol mértékegység, nézz utána, hogyan kell átváltani.

            HegyConsolba();

            LegmagasabbHegy();
            Console.WriteLine("\nA legmagasabb hegy neve: {0}\nA(z) {1}. elem a tömbben\nMagassága: {2}", hegynev[tombelem], tombelem, magassag[tombelem]);

            NevszerintiSorbarendezes();
            MagassagszerintiSorbarendezes();
            Console.ReadLine();
        }
    }

}

2017. november 13., hétfő

2017.11.13. Gyakorlás, új anyag: fájlkezelés

Átismételjük a nyári gyakorlaton tanult fájlkezelési részt.

Továbbfejlesztés
Ha több érték van egy sorban a szövegfájlban:

            string[] veznev = new string[15];          
            string[] keresztnev = new string[15];
            StreamReader sr = new StreamReader("nev.txt");

            string[] atmeneti;
            i = 0;

            while (!sr.EndOfStream)
            {
                atmeneti = sr.ReadLine().Split(' ');
                veznev[i] = atmeneti[0];
                keresztnev[i] = atmeneti[1];
                i++;
            }

            sr2.Close();

2017. november 10., péntek

2017.11.10. Gyakorlás

További hátul tesztelő ciklussal megoldandó feladatok

3. Addig írjunk ki 100-tól kezdve páros számokat a képernyőre, amíg el nem érjük a 100 tízszeresét.

4. Addig írjuk ki a SPACE karaktertől kezdve az ASCII karaktereket a képernyőre egymás mellé, amíg el nem jutunk az utolsó lehetséges karakterig.

5. Addig növeljünk egy véletlen, 100 és 1000 közötti számot egy véletlen, 1 és 10 közötti számmal, amíg el nem érjük a 10000-et. Írjuk is ki az összes számot egymás mellé, szóközzel elválasztva.


További egymásba ágyazott ciklusos feladat

4. Mátrix feladat
- a képernyő első sorában jelenjenek meg zöld színű véletlen karakterek fekete háttéren minden második pozíción;
- töröljük le a képernyőt;
- az első sorban egy újabb, olyan módszerrel képzett sor jelenjen meg, mint az első; az előzőleg megjelenített sor (ugyanaz a karaktersorozat!) pedig jelenjen meg most a 2. sorban;
- ismételjük a fentieket addig, amíg tele nem lesz a képernyő;
- ismételjük tetszőleges számban, esetleg végtelenszer a teljes képernyőt;
Továbbfejlesztési lehetőség: minden sor véletlenedik karaktere majd legyen fényesebb a többinél.