C# szoftverfejlesztő vizsgafeladat: műkorcsolya

11.évf_c# C# programozás

Ebben a feladatban 2db csv fájlt kell beolvasni és feldolgozni, és 1db csv fájlt kell létrehozni.

Mindkét forrás fájl ugyanolyan szerkezetű, a versenyzők adatait tartalmazzák soronként. Minkettő fájlnak van fejléce, amivel nem kell most semmit csinálni, elég átugrani. Megoldandó probléma, hogy tizedesvessző helyett pontot tartalmaz mindkét csv, tehát le kell cserélni beolvasáskor tizedesvesszőre. (Replace(mit,mire)) Természetesen konvertálni kell double típusra is.
Az első feladatot osztály segítségével oldottuk meg. Felvettem egy osszPont nevű változót is, ami a versenyző összpontszámát fogja tárolni.

A második feladat egyszerű, csak a rovidprogram lista elemszámát kell kiíratni.

A harmadik feladat is egyszerű, sima eldöntés. Meg kell vizsgálni, van-e magyar versenyző a döntőben. Ha igen, akkor nem is folytatjuk tovább a keresést, kilépünk a for ciklusból.

A negyedik feladatban írtam egy függvényt, ami egy paramétert vár: a versenyző nevét, és az összpontszámot adja vissza.

Ötödik feladat első része sima adatbekérés, másik része megint egy eldöntés. Ha van adott nevű versenyző, akkor a hatos feladatban ki kell számolni és megjeleníteni az összpontszámát. Tehát a bekért nevet fogjuk hasonlítani a lista i-edik elemének nevéhez.

Hetes feladat: statisztika. Legegyszerűbb szótárral megvalósítani. Ha az adott ország már szerepel a szótárban, akkor növeljük a kulcshoz tartozó értéket, ha még nem szerepel, akkor hozzáadjuk a szótárhoz 1-es kezdőértékkel. Kiíratásnál figyeljünk, hogy csak azokat az országokat kell kiírani, ahonnan egynél több versenyző érkezett!

A nyolcadik feladatban ki kell számolni az összpontszámát minden versenyzőnek. Ehhez célszerű felvenni az osztálynál egy összpontszám tulajdonságot. Ezután végigmegyünk a lista elemein, felhasználjuk az osszPontSzam függvényt, és elmentjük az eredményt egy átmeneti egyednek, majd ennek értékét az eredeti egyedbe. A lista elemeit pontszám szerint kell rendezni, ehhez használhatunk LINQ-t, illetve lambda kifejezesét is. Mivel 11. évfolyamon még nincs LINQ, ezért nem azt használtam. Mivel csökkenő sorrend szüséges, ezért még egy Reverse() függvényt is alkalmazni kellett. A fájlba írás innentől már egyszerű, csak végig kell menni a listán, és kiírni fájlba. Mivel a StreamWriter, StreamReader alapértelmezetten utf8-as karakterkódot használ, ezért nem adtam meg külön a karakterkódolást.

Feladat:

Forrás fájlok:

Megoldás: