2023.12.19. Regisztráció!

Kérek mindenkit, hogy az MKIK-től érkezett e-mailt olvassa el és a megadott módon regisztráljon - december 22-ig. Ez kell ahhoz, hogy január 22-én versenyezni tudjatok. A jelszót jól jegyezzétek meg.
Ha nem kaptál e-mailt, a titkárságon jelezd.

Aki ma hiányzik, annak is szóljatok!

2023.12.18.-19. Helyettesítés

 Adatbázis feladat

A vizsgaremek adatbázisának a tervezése. Folytasd a megkezdett munkát, ne feledd a dokumentációt. Ha a tervező szoftverben úgy érzed, készen vagy, próbáld meg a phpMyAdmin felületen létrehozni az adatbázist, és felvinni mintaadatokat.

Programozás feladat

Be kell fejezni a legutóbbi két programot. Ha kész, akkor fejezd be a saját LINQ helpet is.

Tesztelés feladat

Önállóan olvasd el a Szoftvertesztelés (+kiemelések) 3.0 pdf-ből a következő részeket:

A kiemelések segítenek megérteni a lényeget.

További olvasnivaló:

Olvasd el az Agile Manifesto rövid magyar nyelvű összefoglalását  (és a 12 alapelvet) itt.

Olvasd el ezt a véleménycikket az agilis szoftverfejlesztés eltelt 20 évéről.


[Nem valósult meg.]

2023.12.11. Helyettesítéses órák - ma minden programozás

Be kell fejezni a LINQ helpet.
Be kell fejezni a vetélkedős feladatsort.
És itt a következő:

Választások

 Eszemiszom városában időközi helyhatósági választásokat írtak ki. A városban összesen 12345 szavazásra jogosult állampolgár van, akiket nyolc választókerületbe soroltak.

Minden választókerületben több jelölt is indul, de egy jelölt csak egy választókerületben indulhat. Egy választókerület szavazói az adott választókerületben induló jelöltek közül egy jelöltre adhatnak le szavazatot, de nem kötelező részt venniük a szavazáson. Minden választókerületben az a jelölt nyer, aki a legtöbb szavazatot kapja. (Feltételezheti, hogy egyetlen választókerületben sem alakult ki holtverseny.)

A jelöltek vagy egy párt támogatásával, vagy független jelöltként indulhatnak. Az idei évben a Gyümölcsevők Pártja (GYEP), a Húsevők Pártja (HEP), a Tejivók Szövetsége (TISZ) vagy a Zöldségevők Pártja (ZEP) támogatja a jelölteket. 

A szavazás eredményét a szavazatok.txt szóközökkel tagolt fájl tartalmazza, amelynek minden sorában egy-egy képviselőjelölt adatai láthatók. 

Például:

8 149 Zeller Zelma ZEP

6 63 Zsoldos Zsolt -

Az első két adat a választókerület sorszáma és a képviselőjelöltre leadott szavazatok száma. Ezt a jelölt vezeték- és utóneve, majd a jelöltet támogató párt hivatalos rövidítése követi. Független jelöltek esetében a párt rövidítése helyett egy kötőjel szerepel. Minden képviselőjelöltnek pontosan egy utóneve van.

Készítsen programot Valasztas néven, amely az alábbi kérdésekre válaszol!

Minden részfeladat feldolgozása során írja ki a képernyőre a részfeladat sorszámát,

(például: 2. feladat)! Ahol a felhasználótól kér be adatot, ott írja ki a képernyőre azt is, hogy milyen adatot vár! Az ékezetmentes kiírás is elfogadott.

1.     Olvassa be a szavazatok.txt fájl adatait, majd ezek felhasználásával oldja meg a következő feladatokat! Az adatfájlban legfeljebb 100 képviselőjelölt adatai szerepelnek.

2.     Hány képviselőjelölt indult a helyhatósági választáson? A kérdésre egész mondatban válaszoljon az alábbi mintához hasonlóan:

A helyhatósági választáson 92 képviselőjelölt indult.

3.     Kérje be egy képviselőjelölt vezetéknevét és utónevét, majd írja ki a képernyőre, hogy az illető hány szavazatot kapott! Ha a beolvasott név nem szerepel a nyilvántartásban, úgy

jelenjen meg a képernyőn az „Ilyen nevű képviselőjelölt nem szerepel

a nyilvántartásban!” figyelmeztetés! A feladat megoldása során feltételezheti, hogy nem indult két azonos nevű képviselőjelölt a választáson.


4.     Határozza meg, hányan adták le szavazatukat, és mennyi volt a részvételi arány! (A részvételi arány azt adja meg, hogy a jogosultak hány százaléka vett részt a szavazáson.) A részvételi arányt két tizedesjegy pontossággal, százalékos formában írja ki a képernyőre! 

Például:

A választáson 5001 állampolgár, a jogosultak 40,51%-a vett részt.

5.     Határozza meg és írassa ki a képernyőre az egyes pártokra leadott szavazatok arányát az összes leadott szavazathoz képest két tizedesjegy pontossággal! A független jelölteket együtt, „Független jelöltek” néven szerepeltesse!

Például:

Zöldségevők Pártja= 12,34%

Független jelöltek= 23,40%

6.     Melyik jelölt kapta a legkevesebb szavazatot? Jelenítse meg a képernyőn a képviselő vezeték- és utónevét, valamint az őt támogató párt rövidítését, vagy azt, hogy független! Ha több ilyen képviselő is van, akkor mindegyik adatai jelenjenek meg!

7.     Határozza meg, hogy a nyolcas választókerületben ki lett a képviselő! Írja ki a győztes vezeték- és utónevét, valamint az őt támogató párt rövidítését, vagy azt, hogy független egy-egy szóközzel elválasztva a kepviselok.txt nevű szöveges fájlba!


Forrásfájl tartalma:
5 19 Ablak Antal -
1 120 Alma Dalma GYEP
7 162 Bab Zsuzsanna ZEP
2 59 Barack Barna GYEP
6 73 Birs Helga GYEP
1 154 Bors Botond HEP
5 188 Brokkoli Gyula ZEP
6 29 Ceruza Zsombor -
4 143 Fasirt Ferenc HEP
8 157 Gomba Gitta TISZ
3 13 Halmi Helga -
2 66 Hold Ferenc -
7 34 Hurka Herold HEP
5 288 Joghurt Jakab TISZ
4 77 Kajszi Kolos GYEP
2 187 Kapor Karola ZEP
6 13 Karfiol Ede ZEP
6 187 Kefir Ilona TISZ
7 130 Kupa Huba -
8 98 Languszta Auguszta -
1 34 Lila Lilla -
1 56 Medve Rudolf -
5 67 Meggy Csilla GYEP
3 45 Moly Piroska -
4 221 Monitor Tibor -
8 288 Narancs Edmond GYEP
2 220 Oldalas Olga HEP
3 185 Pacal Kata HEP
1 199 Petrezselyem Petra ZEP
8 77 Pokol Vidor -
8 67 Ragu Ida HEP
3 156 Retek Etelka ZEP
7 129 Sajt Hajnalka TISZ
4 38 Simon Simon -
3 87 Szilva Szilvia GYEP
3 187 Tejes Attila TISZ
2 65 Tejfel Edit TISZ
4 39 Uborka Ubul ZEP
6 288 Vadas Marcell HEP
5 68 Vagdalt Edit HEP

Európai uniós országok

 1. Európai Uniós adatok 2004-ből (amikor Magyarország csatlakozott)[1]

 

ország

főváros

csatlakozás (melyik évben csatlakozott az Európai Unióhoz; ha még nem csatlakozott, akkor: „nem tag”)

szavazat (mennyi szavazata van az Európa Parlamentben – 0, vagy nagyobb)

váltás (az euróhoz képest az árfolyama)

pénznem (a pénznem megnevezése)

 

Albánia;Tirana;nem tag;0;145,2;ALL

Ausztria;Bécs;1995;10;1;EUR

Belarusz;Minszk;nem tag;0;2764,5;BYR

Belgium;Brüsszel;1957;12;1;EUR

Bosznia-Hercegovina;Szarajevo;nem tag;0;1,956;BAM

Bulgária;Szófia;nem tag;0;1,95;BGN

Ciprus;Nicosia;2004;4;0,59;CYP

Csehország;Prága;2004;12;33,13;CZK

Dánia;Koppenhága;1973;7;7,45;DKK

Észtország;Tallin;2004;4;15,65;EEK

Finnország;Helsinki;1995;7;1;EUR

Franciaország;Párizs;1957;29;1;EUR

Görögország;Athén;1981;12;1;EUR

Hollandia;Hága;1957;13;1;EUR

Horvátország;Zágráb;nem tag;0;7,67;HRK

Írország;Dublin;1973;7;1;EUR

Izland;Reykjavik;nem tag;0;86,84;ISK

Lengyelország;Varsó;2004;27;4,84;PLN

Lettország;Riga;2004;4;0,67;LVL

Litvánia;Vilnius;2004;7;3,45;LTL

Luxemburg;Luxembourg;1957;4;1;EUR

Macedónia;Skopje;nem tag;0;62,2;MKD

Magyarország;Budapest;2004;12;263;HUF

Málta;Valletta;2004;3;0,43;MTL

Moldova;Kisinyov;nem tag;0;16,18;MDL

Nagy-Britannia;London;1973;29;0,68;GBF

Németország;Berlin;1957;29;1;EUR

Norvégia;Oslo;nem tag;0;8,82;NOK

Olaszország;Róma;1957;29;1;EUR

Portugália;Lisszabon;1986;29;1;EUR

Románia;Bukarest;nem tag;0;40763;ROL

Spanyolország;Madrid;1986;27;1;EUR

Svájc;Bern;nem tag;0;1,58;CHF

Svédország;Stockholm;1995;10;9,15;SEK

Szerbia és Montenegro;Belgrád;nem tag;0;78,83;YUM

Szlovákia;Pozsony;2004;7;40,52;SKK

Szlovénia;Ljubjana;2004;4;237,1;SIT

Ukrajna;Kijev;nem tag;0;6,84;UAH

 

Feladatok

1. Írj egy függvényt, ami visszaadja az EU-tag országok neveit abc sorrendben. Az eredményt a főprogram írja ki.

2. Írj egy függvényt, ami megkeresi az eurót használó országokat. Ehhez a listát a főprogramban definiáld. Az országok neveit és fővárosait a főprogram listázza ki, majd az utolsó sorban írd ki, hogy hány ilyen országot találtál.

3. Írj egy függvényt, ami kiszámolja a nem eurót használó országok, illetve az eurót használó országok szavazatai átlagának arányát.

4. Írd ki egy új fájlba a 20-nál több szavazattal rendelkező, nem euró fizetőeszkőzű országok esetében, hogy százezer euró mennyit ér a saját fizetőeszközében. Az átváltáshoz írj egy propertyt. Ha nincs ilyen ország, adj hibaüzenetet. 



[1] Forrás: KSH

2023.11.06. Félévi eredmények

 Tanuló neve Oktatási azonosító Hálózatok I. Hálózatok I. gyakorlat Programozás Programozás gyakorlat Angol nyelv Magyar nyelv és irodalom Matematika Történelem

Alfreds Futterkiste 72123456789 5 5 2 2 3 3 3 4

Ana Trujillo Emparedados y helados 72987654321 5 5 2 1 5 2 2 2

Antonio Moreno Taquería 72321125698 4 3 1 1 3 2 2 2

Around the Horn 72921579631 3 3 1 1 3 2 2 2

Berglunds snabbköp 72951357846 4 4 2 2 3 3 2 3

Maria Anders 73258963147 3 4 2 2 5 3 2 3

Ana Trujillo 72359751486 5 5 4 4 4 4 3 4

Antonio Moreno 72157358962 4 4 1 1 4 2 2 2

Thomas Hardy 73369852147 3 3 2 1 1 3 2 3

Christina Berglund 72336958621 5 4 4 4 5 3 3 4

Tilaa Thustu 72336487953 4 4 3 3 5 3 4 3

Nannim Ratul 72379164825 4 4 5 5 3 3 4 4

//1. feladat
//Írjunk függvényt, ami kiszámítja a jegyek átlagát tanulónként.Írjunk függvényt, ami kiszámítja az osztályátlagot, illetve a tantárgyankénti átlagot is.
//2. feladat: Programozás gyakorlatból megbukottak adatainak kiiratása.
//3. feladat: Írjunk függvényt, amivel keressük meg az első olyan embert, akinek hármasa van angol nyelvből, majd írjuk ki az adatait.
//4. feladat: Kérjük be a felhasználótól, melyik tanuló legjobb jegyét szeretné megtudni.
//Írjuk ki az adott tanuló legjobb eredményét függvénnyel.
//5. feladat: Egy új fájlba írjuk ki a fenti tanuló nevét és oktatási azonosítóját.

Terepjárók LINQ megoldás

 K. Levi megoldása alapján

using System;

using System.Collections.Generic;

using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TZ
{
    class Terepjaro
    {
        public string MarkaEsModell { get; set; }
        public int Evjarat { get; set; }
        public string UzemanyagTipus { get; set; }
        public double Tomeg { get; set; }
        public string HajtasTipus { get; set; }
        public string Kepesseg { get; set; }
        public double KgAtvaltFont {
            get => Tomeg * 2.20462;
        }

        public Terepjaro(string sor)
        {
            var adat = sor.Split(";");
            MarkaEsModell = adat[0];
            Evjarat = int.Parse(adat[1]);
            UzemanyagTipus = adat[2];
            Tomeg = double.Parse(adat[3]);
            HajtasTipus = adat[4];
            Kepesseg = adat[5];
        }

        public override string ToString()
        {
            return $"Márka és Modell: {MarkaEsModell}, " +
                $"Évjárat: {Evjarat}, " +
                $"Uzemanyag típus: {UzemanyagTipus}, " +
                $"Tömeg: {Tomeg}, " +
                $"Hajtás típus: {HajtasTipus}, " +
                $"Képesség: {Kepesseg}";
        }
    }
}


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

namespace Kozma_Levente_TZ_20231016
{
    class Program
    {
        private static readonly List<Terepjaro> terepjarok = new();
        private static List<Terepjaro> osszkereskesTerepjarok = new();
        static void Main(string[] args)
        {   //src mappában legyenek a fájlok
            using (StreamReader r = new(path: "terepjarok.txt"))
            {
                while (!r.EndOfStream)
                    terepjarok.Add(new Terepjaro(r.ReadLine()));
            }

            // 7. Feladat
            Console.WriteLine("7. Feladat");
            for (int i = 0; i < 3; i++)
                Console.WriteLine(terepjarok[i]);

            // 9. Feladat
            Console.WriteLine("9. Feladat");
            Console.WriteLine($"A Toyota terepjárók átlagos tömege: {TerepjaroTomegAtlag("Toyota")}");

            // 10. Feladat
            Console.WriteLine("10. Feladat");
            osszkereskesTerepjarok = terepjarok.Where(t => t.Evjarat > 2019 && t.HajtasTipus.Equals("Összkerékhajtás")).ToList();
            Console.WriteLine($"Összesen {OsszkerekesTerepjarokSzama()}db összkerekes terepjáró van 2019 után.");

            // 11. Feladat
            foreach (var i in LegkonyebbTerepjaro())
                Console.WriteLine(i);

            // 12. Feladat
            Console.WriteLine("12. Feladat");
            Console.WriteLine(HibridDizel());

            // 13. Feladat
            Console.WriteLine("13. Feladat");
            HajtasKereso("Összkerékhajtás").ForEach(t => Console.WriteLine(t)); //szép!

            // 15. Feladat
            using (StreamWriter w = new(path: "ujTerepjarok.txt"))
            {
                terepjarok.ForEach(t => w.WriteLine($"{t.MarkaEsModell};{t.Evjarat};{t.KgAtvaltFont}"));
            }

            // 16. Feladat
            var min = 0;
            var max = 0;
            LegkonyebbEsnehezebb(ref min, ref max);
            Console.WriteLine($"Legkönyebb terepjáró indexe: {min}, Legnehezebb {max}");
        }

        private static double TerepjaroTomegAtlag(string markaNev)
        {
            return Math.Round(terepjarok.Where(t => t.MarkaEsModell.Contains(markaNev)).Average(t => t.Tomeg));
        }

        private static int OsszkerekesTerepjarokSzama()
        {
            return osszkereskesTerepjarok.Count;
        }

        private static Terepjaro[] LegkonyebbTerepjaro()
        {
            return terepjarok
                .Where(t1 => t1.Tomeg.Equals(terepjarok.Min(t2 => t2.Tomeg)))
                .ToArray();
        }

        private static string HibridDizel()
        {
            var hibrid = terepjarok.Where(t1 => t1.UzemanyagTipus.Equals("Hibrid")).ToArray();
            var dizel = terepjarok.Where(t2 => t2.UzemanyagTipus.Equals("Dízel")).ToArray();

            var auto = hibrid.Where(h => h.Evjarat < dizel.Max(d => d.Evjarat)).FirstOrDefault();
            return auto == null ? "Nincs ilyen" : auto.ToString();
        }

        private static List<Terepjaro> HajtasKereso(string hajtas)
        {
            return terepjarok.Where(t => t.HajtasTipus.Equals(hajtas)).ToList();
            //vagy
            //return terepjarok.Where(t => t.HajtasTipus == hajtas).ToList();
        }

        private static void LegkonyebbEsnehezebb(ref int minS, ref int maxS)
        {
            var min = terepjarok.Min(t => t.Tomeg);
            var max = terepjarok.Max(t => t.Tomeg);

            for (int i = 0; i < terepjarok.Count; i++)
            {
                if (min == terepjarok[i].Tomeg) minS = i + 1;
                if (max == terepjarok[i].Tomeg) maxS = i + 1;
            }
        }
    }
}

Versenymotorok alap szintű megoldás

  namespace MotorokAlap

{
    class Motor
    {
        public string Gyarto { get; set; }
        public string Modell { get; set; }
        public int MaximalisSebesseg { get; set; }
        public double UzemanyagFogyasztas { get; set; }
        public int Hengerurtartalom { get; set; }
        public string KerekfelfuggesztésTipus { get; set; }

        public Motor(string sor)
        {
            string[] adatok = sor.Split(';');
            Gyarto = adatok[0];
            Modell = adatok[1];
            MaximalisSebesseg = int.Parse(adatok[2]);
            UzemanyagFogyasztas = double.Parse(adatok[3]);
            Hengerurtartalom = int.Parse(adatok[4]);
            KerekfelfuggesztésTipus = adatok[5];
        }

        public override string ToString()
        {
            return $"Gyártó: {Gyarto}\nModell: {Modell}\nMaximális Sebesség: {MaximalisSebesseg} km/h\nÜzemanyagfogyasztás: {UzemanyagFogyasztas} liter/100 km\nHengerűrtartalom: {Hengerurtartalom} cc\nKerékfelfüggesztés típusa: {KerekfelfuggesztésTipus}\n";
        }

        public double LiterbolGallonba()
        {
            return UzemanyagFogyasztas * 0.264172;
        }
    }
}


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

namespace MotorokAlap
{
    class Program
    {
        static void Main()
        {
            List<Motor> motorok = new();
            using (StreamReader sr = new StreamReader(@"..\..\..\src\motorok.txt"))
            {
                while (!sr.EndOfStream)
                {
                    motorok.Add(new Motor(sr.ReadLine()));
                }
            }

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

            Console.WriteLine("9.\n");
            Console.WriteLine($"Átlagos sebesség: {Math.Round(AtlagSebesseg(motorok))} km/h");            

            Console.WriteLine("10.\n");
            List<Motor> yamahaLista = new();
            foreach (var motor in motorok)
            {
                if (motor.Gyarto == "Yamaha" && motor.Hengerurtartalom > 1000)
                {
                    yamahaLista.Add(motor);
                }
            }
            Console.WriteLine($"{Yamaha1000felett(yamahaLista)} 1000 cc fölötti Yamaha motor van.");
           

            Console.WriteLine("11.Legkisebb fogyasztású motorok:\n");
            var kicsi = LegkisebbFogyasztasuMotor(motorok);
            foreach (var motor in kicsi)
            {
                Console.WriteLine(motor);
            }

            Console.WriteLine("12.Honda motorok, melyeknek fogyasztása kisebb, mint a legnagyobb Suzuki modellé:\n");
            List<Motor> hondaSuzuki = HondaSuzuki(motorok);
            if (hondaSuzuki.Count == 0)
            {
                Console.WriteLine("Nincs olyan Honda motor, aminek a fogyasztása kisebb, mint a legnagyobb Suzuki modellé.");
            }
            else
            {
                Console.WriteLine(hondaSuzuki[0]);
            }

            Console.WriteLine("13.BMW márkájú motorok vagy 300 km/h feletti maximális sebességű motorok:\n");
            foreach (var item in KivalogatoBMW(motorok))
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("15.Fájlba írás\n");

            using (StreamWriter writer = new StreamWriter(@"..\..\..\src\motorok_gallon.txt"))
            {
                foreach (var motor in motorok)
                {
                    writer.WriteLine($"{motor.Gyarto};{motor.Modell};{motor.LiterbolGallonba()} gallon/100 km");
                }
            }
        }

        static double AtlagSebesseg(List<Motor> motorok)
        {
            double osszeg = 0;
            foreach (var motor in motorok)
            {
                osszeg += motor.MaximalisSebesseg;
            }
            return osszeg / motorok.Count;
        }

        static int Yamaha1000felett(List<Motor> yamaha)
        {
            return yamaha.Count;
        }

        static List<Motor> LegkisebbFogyasztasuMotor(List<Motor> motorok)
        {
            double minFogyasztas = motorok[0].UzemanyagFogyasztas;
            foreach (var motor in motorok)
            {
                if (motor.UzemanyagFogyasztas < minFogyasztas)
                {
                    minFogyasztas = motor.UzemanyagFogyasztas;
                }
            }

            List<Motor> kisFogyasztasuMotorok = new();
            foreach (var motor in motorok)
            {
                if (motor.UzemanyagFogyasztas == minFogyasztas)
                {
                    kisFogyasztasuMotorok.Add(motor);
                }
            }
            return kisFogyasztasuMotorok;
        }

        static List<Motor> HondaSuzuki(List<Motor> motorok)
        {
            Motor legnagyobbSuzuki = motorok[0];
            foreach (var motor in motorok)
            {
                if (motor.Gyarto == "Suzuki" && motor.Hengerurtartalom > legnagyobbSuzuki.Hengerurtartalom)
                {
                    legnagyobbSuzuki = motor;
                }
            }

            List<Motor> honda = new();
            foreach (var motor in motorok)
            {
                if (motor.Gyarto == "Honda" && motor.UzemanyagFogyasztas < legnagyobbSuzuki.UzemanyagFogyasztas)
                {
                    honda.Add(motor);
                }
            }
            return honda;
        }

        static List<Motor> KivalogatoBMW(List<Motor> motorok)
        {
            List<Motor> bmw = new();
            foreach (var motor in motorok)
            {
                if (motor.Gyarto == "BMW" || (motor.Gyarto != "BMW" && motor.MaximalisSebesseg > 300))
                {
                    bmw.Add(motor);
                }
            }
            return bmw;
        }        
    }
}

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