Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben



Hasonló dokumentumok
Klasszikus programozás Java nyelven

Klasszikus programozás Java nyelven

Objektumorientált programozás C# nyelven III.

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK

117. AA Megoldó Alfréd AA 117.

Objektumorientált programozás C# nyelven

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Objektumorientált programozás C# nyelven

C# feladatok gyűjteménye

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Mikrobiológiai leletfogadás az OSZIR rendszerbe

A WEB programozása - JSP1 dr.gál Tibor őszi félév

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

2.3. A C nyelv utasításai

Access adatbázis elérése OLE DB-n keresztül

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

INFORMATIKAI ALAPISMERETEK

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

INFORMATIKA EMELT SZINTŰ PRÓBAÉRETTSÉGI

INFORMATIKAI ALAPISMERETEK

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Segédanyag: Java alkalmazások gyakorlat

OOP: Java 8.Gy: Gyakorlás

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Kalapácsvetés 2016 szöveges

3. Gyakorlat Ismerkedés a Java nyelvvel

7. Strukturált típusok

Abstract osztályok és interface-ek. 7-dik gyakorlat

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Java gyakorlat feladatai e s megolda sai ( )

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Java programozási nyelv

C# osztályok. Krizsán Zoltán

PROGRAMOZÁS ALAPFELADATOK

Az új be- és kimenet könyvtár

5. modul - Adatbázis-kezelés

Adatexport útmutató Könyvvizsgálói program számára átadott adatok XML formátumban

OOP: Java 5.Gy: Osztály, referencia, konstruktor

BME MOGI Gépészeti informatika 4.

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

OOP: Java 8.Gy: Abstract osztályok, interfészek

KETTŐS KÖNYVELÉS PROGRAM CIVIL SZERVEZETEK RÉSZÉRE

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Országzászlók (2015. május 27., Sz14)

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Kombinatorika

4. Gy: JAVA osztályok

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

A TÁRKI ADATFELVÉTELEINEK DOKUMENTUMAI. Háztartás Monitor. A kutatás dokumentációja

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java és web programozás

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

OOP: Java 1.Gy: Java alapok

Programozás I gyakorlat. 5. Struktúrák

Programozás II. labor

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

JUHÁSZ TIBOR TÓTH BERTALAN KOLLEKCIÓK ALKALMAZÁSA A FELADATMEGOLDÁSOKBAN

JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Java programozási nyelv 10. rész Input/output kezelés

Kétszemélyes négyes sor játék

Klasszikus programozás Java nyelven

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

INFORMATIKAI ALAPISMERETEK

7. K: JAVA alapok Konzultáció

OOP: Java 4.Gy: Java osztályok

JAVA PROGRAMOZÁS 3.ELŐADÁS

Bánsághi Anna

MAGYAR POSTA BEFEKTETÉSI ZRT. e-befektetés. Felhasználói kézikönyv

I. A légfékrendszer időszakos vizsgálatához alkalmazható mérő-adatgyűjtő berendezés műszaki

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

C# gyorstalpaló. Készítette: Major Péter

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Matematikai és matematikai statisztikai alapismeretek

Információs Technológia

A Jáva programozási nyelv rejtelmei

Alkalmazott modul: Programozás

Gábor Dénes Számítástechnikai Emlékverseny 2012/2013 Alkalmazói kategória, IV. korcsoport 2. forduló

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

OOP: Java 7.Gy: Öröklődés, referenciák

TÁRGYI ESZKÖZ PROGRAM

Java Programozás 11. Ea: MVC modell

Paraméteres-, összesítı- és módosító lekérdezések

ábra 1 LabelPOINT 250 elektromos feliratozógép Címkekimeneti nyílás Vágóél LCD kijelző Bekapcsológomb

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Programozási nyelvek és módszerek Java Thread-ek

be/sfphpm /2015/mkosz

INFORMATIKA KÖZÉPSZINT%

KÖZÉPSZINTŰ GYAKORLATI VIZSGA

INFORMATIKAI ALAPISMERETEK


8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Objektumorientált programozás C# nyelven

Átírás:

Az emelt szintű informatika érettségi programozási feladatainak megoldása Java nyelven NetBeans IDE 8.1 környezetben Klement András 2016 Utolsó módosítás: 2016. május 25.

Tartalomjegyzék Tartalomjegyzék 2003 minta 1: Triatlon...3 2003 minta 2: Kugli... 12 2004 május: Személyazonosító jel... 19 2005 május: Lottó... 24 2005 október: Vigenère tábla... 34 2006 február: Telefonszámla... 42 2006 május: Fehérje... 50 2006 október: Zenei adók... 61 2007 május: SMS szavak... 73 2007 október: Foci... 81 2008 május: SMS... 89 2008 október: Robot... 100 2009 május: Lift... 108 2009 május idegennyelvű: Automata... 118 2009 október: Útépítés... 126 2010 május: Helyjegy... 134 2010 május idegennyelvű: Telek... 143 2010 október: Anagramma... 152 2011 május: Szójáték... 161 2011 május idegennyelvű: Rejtvény... 168 2011 október: Pitypang... 179 2012 május: Futár... 189 2012 május idegennyelvű: Törtek... 199 2012 október: Szín-kép... 205 2013 május: Választások... 216 2013 május idegennyelvű: Számok... 223 2013 október: Közúti ellenőrzés... 232 2014 május: IPv6... 241 2014 május idegennyelvű: Céllövészet... 252 2014 október: Nézőtér... 261 2015 május: Expedíció... 270 2015 május idegennyelvű: Latin táncok... 282 2015 október: Fej vagy írás... 291 2016 május: Ötszáz... 299 2016 május idegennyelvű: Zár... 312 Függelék: Alapvető algoritmusok Java nyelven... 319 Klemand 2.oldal 2016

2003 minta 1 Triatlon 2003 minta 1: Triatlon Egy triatlon versenyen a versenyzőknek a verseny folyamán egymás után kell először úszniuk, kerékpározniuk majd futniuk. Az győz, aki a legrövidebb idő alatt fejezi be a versenyt. Az egyes versenyzők adatai és időeredményei a triatlon.be fájlban találhatók. Az első sorban 0<N<100, versenyzők száma, a következő sorokban a versenyzők adatai a következők szerint szerepelnek: Például: Név Úszás idő Kerékpár idő Futás idő Gipsz Jakab 1345 2312 7988 Az elért időeredményeket másodpercekben tároljuk. 1. Olvassa be a triatlon.be fájlból az adatokat! 2. Írja ki az összesített időeredmények alapján az első három versenyző nevét a képernyőre! 3. Írja ki a képernyőre az első helyezett nevét és azt, hogy mekkora volt az átlagsebessége (km/h-ban) az úszásban, kerékpározásban és futásban, ha a távok a következők voltak: Úszás: 1,5 km, Kerékpározás:40 km, Futás: 10 km! 4. Konvertálja át a versenyzők végső időeredményeit óó:pp:ss formátumra (Óra:Perc:Másodperc). Mindegyik értéket két számjeggyel jelölje! 5. A versenyzők nevét és az átkonvertált, összesített időeredményét írja ki a triatlon.ki fájlba! 6. A fájlban a név mellett szerepeljen az időeredmény, például: Gipsz Jakab 03:14:05! 7. Mivel a közönség kíváncsi arra is, hogy az egyes számokat (azaz az úszást, kerékpározást, futást) kik nyerték, ezért a reszer.ki fájlba 3 versenyző nevét és átkonvertált, időeredményét kell kiírni. Az első név az úszás győztesének a neve és az úszásban elért ideje, a második sorban a kerékpározásban győztes neve és a kerekpározásban elért időeredménye, a harmadik sorban pedig a futásban legjobb időt elért versenyző neve és időeredménye szerepeljen! Ha többen ugyanazt az eredményt érték el valamelyik versenyszámban, akkor elég az egyikük nevét kiírni. Klemand 3.oldal 2016

2003 minta 1 Triatlon package emeltinfo2003mt1; import java.io.*; import java.util.*; /** * Triatlon * * @author Klemand */ public class EmeltInfo2003mt1 { public static void main(string[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("Az adatok beolvasása a triatlon.be fájlból "); /* Kivételkezelés nem kell az emeltszintű érettségin, de ekkor a throws IOException mindig kell a fájlhasználathoz! Ügyelni kell, hogy a beolvasandó fájl a projekt főkönyvtárában legyen!*/ System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("triatlon.be")); String sor; sor = behozatal.readline(); //Ha van UTF-8 azonosító a fájl elején, elhagyjuk a sor elejéről: if (sor.charat(0) == (char) 0xFEFF) { sor = sor.substring(1); int n = Integer.parseInt(sor); //Az egyes versenyzők adatainak beolvasása és átadása a tömblista konstruktorának String nevbe; int uszidobe; int keridobe; int futidobe; for (int i = 1; i <= n; i++) { nevbe = behozatal.readline(); uszidobe = Integer.parseInt(behozatal.readLine()); keridobe = Integer.parseInt(behozatal.readLine()); futidobe = Integer.parseInt(behozatal.readLine()); //Az add metódus hozzáad egy új rekordot a tömblistához. versenyzo.add(new VersenyzoTipus(nevBe, uszidobe, keridobe, futidobe)); behozatal.close(); final int rajtletszam = versenyzo.size(); //2. feladat System.out.println("A 2. feladat megoldása"); //Az összidők felvétele és kiszámítása a konstruktorban. System.out.println("Próbabeolvasás az összidőkkel:"); System.out.println("A beolvasott fájl " + rajtletszam + " versenyző eredményeit tartalmazza. \n"); for (int i = 1; i <= rajtletszam; i++) { System.out.println(i + ". versenyző: "); System.out.println("név: " + versenyzo.get(i - 1).nev); Klemand 4.oldal 2016

2003 minta 1 Triatlon System.out.println("úszásidő: " + versenyzo.get(i - 1).uszIdo); System.out.println("kerékpáridő: " + versenyzo.get(i - 1).kerIdo); System.out.println("futásidő: " + versenyzo.get(i - 1).futIdo); System.out.println("összidő: " + versenyzo.get(i - 1).osszIdo); System.out.println("Rendezés az összidők szerint: "); int i, j, min; //minimumkiválasztásos rendezés VersenyzoTipus asztal; for (i = 1; i <= rajtletszam; i++) { min = i; for (j = i + 1; j <= rajtletszam; j++) { if (versenyzo.get(j - 1).osszIdo < versenyzo.get(min - 1).osszIdo) { min = j; /*Csere: egyszerre cseréljük a versenyzőkhöz tartozó teljes rekordokat. A get metódus lekérdezi, a set beállítja a tömblista teljes rekordjait, ill. külön-külön azok mezőit is. */ asztal = versenyzo.get(i - 1); versenyzo.set(i - 1, versenyzo.get(min - 1)); versenyzo.set(min - 1, asztal); for (i = 1; i <= rajtletszam; i++) { System.out.println(i + ". helyezett: "); System.out.println("név: " + versenyzo.get(i - 1).nev); System.out.println("úszásidő: " + versenyzo.get(i - 1).uszIdo); System.out.println("kerékpáridő: " + versenyzo.get(i - 1).kerIdo); System.out.println("futásidő: " + versenyzo.get(i - 1).futIdo); System.out.println("összidő: " + versenyzo.get(i - 1).osszIdo); System.out.println("Az első három helyezett az összidők alapján: \n"); for (i = 1; i <= 3; i++) { System.out.println(i + ". : " + versenyzo.get(i - 1).nev + " (összideje: " + versenyzo.get(i - 1).osszIdo + " s.)"); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Az első helyezett átlagsebessége az egyes versenyszámokban \n"); double USZTAV = 1.5; //km double KERTAV = 40; //km double FUTTAV = 10; //km double uszv, kerv, futv; uszv = USZTAV * 3600 / versenyzo.get(0).uszido; kerv = KERTAV * 3600 / versenyzo.get(0).kerido; futv = FUTTAV * 3600 / versenyzo.get(0).futido; System.out.println("A győztes neve: " + versenyzo.get(0).nev); System.out.print("Átlagsebessége úszásban: "); System.out.printf("%.2f", uszv); System.out.println(" km/h"); System.out.printf("Átlagsebessége kerékpározásban: %.2f", kerv); System.out.println(" km/h"); System.out.printf("Átlagsebessége futásban: %.2f", futv); System.out.println(" km/h\n"); //plusz soremelés Klemand 5.oldal 2016

2003 minta 1 Triatlon //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Az időeredmények átkonvertálása "); //A konvertált összidők felvétele és kiszámítása függvénnyel a konstruktorban. System.out.println("Ellenőrzés: \n"); for (i = 1; i <= rajtletszam; i++) { System.out.println(versenyzo.get(i - 1).nev + " " + versenyzo.get(i - 1).osszIdoKonv); //5. és 6. feladat System.out.println("Az 5. és 6. feladat megoldása:"); System.out.println("Az átkonvertált időeredmények fájlba írása \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("triatlon.ki")); for (i = 1; i <= rajtletszam; i++) { kivitel.println(versenyzo.get(i - 1).nev + " " + versenyzo.get(i - 1).osszIdoKonv); kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n"); //7. feladat System.out.println("A 7. feladat megoldása:"); System.out.println("A versenyszámok győzteseinek fájlba írása \n"); int uszmin = 1; int kermin = 1; int futmin = 1; for (i = 2; i <= rajtletszam; i++) { if (versenyzo.get(i - 1).uszIdo < versenyzo.get(uszmin - 1).uszIdo) { uszmin = i; if (versenyzo.get(i - 1).kerIdo < versenyzo.get(kermin - 1).kerIdo) { kermin = i; if (versenyzo.get(i - 1).futIdo < versenyzo.get(futmin - 1).futIdo) { futmin = i; kivitel = new PrintWriter(new FileWriter("reszer.ki")); kivitel.println(versenyzo.get(uszmin - 1).nev + " " + idokonvertalas(versenyzo.get(uszmin - 1).uszIdo)); kivitel.println(versenyzo.get(kermin - 1).nev + " " + idokonvertalas(versenyzo.get(kermin - 1).kerIdo)); kivitel.println(versenyzo.get(futmin - 1).nev + " " + idokonvertalas(versenyzo.get(futmin - 1).futIdo)); kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n"); System.out.println("Ellenőrzés: az átkonvertált részeredmények \n"); for (i = 1; i <= rajtletszam; i++) { System.out.println(i + ". helyezett: "); System.out.println("név: " + versenyzo.get(i - 1).nev); System.out.println("úszásidő: " + idokonvertalas(versenyzo.get(i - 1).uszIdo)); System.out.println("kerékpáridő: " + idokonvertalas(versenyzo.get(i - 1).kerIdo)); System.out.println("futásidő: " + idokonvertalas(versenyzo.get(i - 1).futIdo)); System.out.println("összidő: " + idokonvertalas(versenyzo.get(i - 1).osszIdo)); Klemand 6.oldal 2016

2003 minta 1 Triatlon System.out.println("Az egyes versenyszámok győztesei: "); System.out.println(versenyzo.get(uszMin - 1).nev + " " + idokonvertalas(versenyzo.get(uszmin - 1).uszIdo)); System.out.println(versenyzo.get(kerMin - 1).nev + " " + idokonvertalas(versenyzo.get(kermin - 1).kerIdo)); System.out.println(versenyzo.get(futMin - 1).nev + " " + idokonvertalas(versenyzo.get(futmin - 1).futIdo)); //************************************************************ //A tömblista konstruktora static ArrayList<VersenyzoTipus> versenyzo = new ArrayList<>(); //A típus egy osztály, ezért nagybetűvel kezdődik! public static class VersenyzoTipus { private final String nev; private final int uszido; private final int kerido; private final int futido; private final int osszido; private final String osszidokonv; public VersenyzoTipus(String nevbe, int uszidobe, int keridobe, int futidobe) //konstruktor { nev = nevbe; uszido = uszidobe; kerido = keridobe; futido = futidobe; osszido = uszidobe + keridobe + futidobe; osszidokonv = idokonvertalas(osszido);//függvényhívás public static String idokonvertalas(int ido) { int ora, perc, mp; String orast, percst, mpst; mp = ido % 60; perc = (ido / 60) % 60; ora = ido / 3600; orast = Integer.toString(ora); if (orast.length() < 2) { orast = "0" + orast; percst = Integer.toString(perc); if (percst.length() < 2) { percst = "0" + percst; mpst = Integer.toString(mp); if (mpst.length() < 2) { mpst = "0" + mpst; return orast + ":" + percst + ":" + mpst; //visszaadott függvényérték Klemand 7.oldal 2016

2003 minta 1 Triatlon run: Az 1. feladat megoldása Az adatok beolvasása a triatlon.be fájlból A 2. feladat megoldása Próbabeolvasás az összidőkkel: A beolvasott fájl 6 versenyző eredményeit tartalmazza. 1. versenyző: név: Kiss Pál úszásidő: 1512 kerékpáridő: 4931 futásidő: 2952 összidő: 9395 2. versenyző: név: Nagy Péter úszásidő: 1452 kerékpáridő: 4992 futásidő: 3071 összidő: 9515 3. versenyző: név: Tóth Ödön úszásidő: 1570 kerékpáridő: 5112 futásidő: 2832 összidő: 9514 4. versenyző: név: Tóth Pál úszásidő: 1518 kerékpáridő: 5051 futásidő: 2891 összidő: 9460 5. versenyző: név: Pál Péter úszásidő: 1439 kerékpáridő: 4997 futásidő: 2951 összidő: 9387 6. versenyző: név: Péter Pál úszásidő: 1522 kerékpáridő: 5085 futásidő: 2925 összidő: 9532 Rendezés az összidők szerint: 1. helyezett: név: Pál Péter úszásidő: 1439 kerékpáridő: 4997 futásidő: 2951 összidő: 9387 2. helyezett: név: Kiss Pál úszásidő: 1512 kerékpáridő: 4931 futásidő: 2952 Klemand 8.oldal 2016

2003 minta 1 Triatlon összidő: 9395 3. helyezett: név: Tóth Pál úszásidő: 1518 kerékpáridő: 5051 futásidő: 2891 összidő: 9460 4. helyezett: név: Tóth Ödön úszásidő: 1570 kerékpáridő: 5112 futásidő: 2832 összidő: 9514 5. helyezett: név: Nagy Péter úszásidő: 1452 kerékpáridő: 4992 futásidő: 3071 összidő: 9515 6. helyezett: név: Péter Pál úszásidő: 1522 kerékpáridő: 5085 futásidő: 2925 összidő: 9532 Az első három helyezett az összidők alapján: 1. : Pál Péter (összideje: 9387 s.) 2. : Kiss Pál (összideje: 9395 s.) 3. : Tóth Pál (összideje: 9460 s.) A 3. feladat megoldása Az első helyezett átlagsebessége az egyes versenyszámokban A győztes neve: Pál Péter Átlagsebessége úszásban: 3,75 km/h Átlagsebessége kerékpározásban: 28,82 km/h Átlagsebessége futásban: 12,20 km/h A 4. feladat megoldása Az időeredmények átkonvertálása Ellenőrzés: Pál Péter 02:36:27 Kiss Pál 02:36:35 Tóth Pál 02:37:40 Tóth Ödön 02:38:34 Nagy Péter 02:38:35 Péter Pál 02:38:52 Az 5. és 6. feladat megoldása: Az átkonvertált időeredmények fájlba írása A fájlkiírás befejeződött. A 7. feladat megoldása: A versenyszámok győzteseinek fájlba írása A fájlkiírás befejeződött. Klemand 9.oldal 2016

2003 minta 1 Triatlon Ellenőrzés: az átkonvertált részeredmények 1. helyezett: név: Pál Péter úszásidő: 00:23:59 kerékpáridő: 01:23:17 futásidő: 00:49:11 összidő: 02:36:27 2. helyezett: név: Kiss Pál úszásidő: 00:25:12 kerékpáridő: 01:22:11 futásidő: 00:49:12 összidő: 02:36:35 3. helyezett: név: Tóth Pál úszásidő: 00:25:18 kerékpáridő: 01:24:11 futásidő: 00:48:11 összidő: 02:37:40 4. helyezett: név: Tóth Ödön úszásidő: 00:26:10 kerékpáridő: 01:25:12 futásidő: 00:47:12 összidő: 02:38:34 5. helyezett: név: Nagy Péter úszásidő: 00:24:12 kerékpáridő: 01:23:12 futásidő: 00:51:11 összidő: 02:38:35 6. helyezett: név: Péter Pál úszásidő: 00:25:22 kerékpáridő: 01:24:45 futásidő: 00:48:45 összidő: 02:38:52 Az egyes versenyszámok győztesei: Pál Péter 00:23:59 Kiss Pál 01:22:11 Tóth Ödön 00:47:12 BUILD SUCCESSFUL (total time: 1 second) Klemand 10.oldal 2016

2003 minta 1 Triatlon triatlon.ki: Pál Péter 02:36:27 Kiss Pál 02:36:35 Tóth Pál 02:37:40 Tóth Ödön 02:38:34 Nagy Péter 02:38:35 Péter Pál 02:38:52 reszer.ki: Pál Péter 00:23:59 Kiss Pál 01:22:11 Tóth Ödön 00:47:12 Klemand 11.oldal 2016

2003 minta 2 Kugli 2003 minta 2: Kugli A kugli játéknál 9 bábut állítanak fel egy négyzet alakú helyre, ezeket a bábukat egy golyóval lehet ledönteni. A játékosok egymás után dobnak. A játékszabály a következő: a játékosoknak legalább annyi bábut kell ledöntenie, mint amennyit az előtte dobó játékos ledöntött. Ha kevesebbet dönt le, akkor hibapontot kap. A játékos 2 hibapont után kiesik a játékból. A játékosok száma 5, és a játék 4 kör alatt ért véget. Az első játékos az első körben nem kaphat hibapontot, de a további körökben az előző kör utolsó dobáseredményéhez viszonyítják teljesítményét. A kugli játék körönkénti eredményeit az eredm1.txt, eredm2.txt, eredm3.txt, eredm4.txt fájlokban tároljuk. Minden fájlban a még versenyben lévő személyek nevét és a körben elért eredményét, a következőképpen: Versenyző neve Ledöntött bábuk száma Ha valaki kiesett a játékból, akkor a további körök eredményeit tároló fájlban a ledöntött bábuk száma sorban értékként 10 szerepel. Például: Gipsz Jakab 5 Kelep Elek 10 Kiss Géza 6 Nagy Péter 4 Kovács Éva 8 1. Olvassa be az eredm1.txt fájlból az adatokat! 2. A szabályok alapján állapítsa meg, hogy az első körben mely játékosok kaptak hibapontot. Ezek nevét írja ki a képernyőre! 3. Olvassa be az eredm2.txt, eredm3.txt és az eredm4.txt fájlokból az adatokat! 4. Számítsa ki, hogy a versenyzők a játék során külön-külön mennyi bábut döntöttek le, az eredményt írja ki a képernyőre! A kiírásnál a név mellett szerepeljen az elért eredmény! Például: Gipsz Jakab 24 Kelep Elek 12. 5. Írja ki a képernyőre a legtöbb pontot elért versenyző nevét és eredményét! 6. Állapítsa meg a fájlokban lévő adatok alapján a kiesett versenyzők nevét és azt, hogy melyik körben estek ki! A neveket és a kör számát írja ki a képernyőre! 7. Írja ki a képernyőre azoknak a versenyzőknek a nevét, akiknek sikerült 9 bábut eldönteniük a dobásukkal a játék során! A nevük mellett szerepeljen, hogy mely körökben érték el ezt az eredményt! (A név legfeljebb egyszer szerepeljen!) Klemand 12.oldal 2016

2003 minta 2 Kugli package emeltinfo2003mt2; import java.io.*; import java.util.*; /** * Kugli * * @author Klemand */ public class EmeltInfo2003mt2 { public static void main(string[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("Az adatok beolvasása az eredm1.txt fájlból \n"); int LSZ = 5; //A feladatban megadott String[] eredm = new String[4]; eredm[0] = "eredm1.txt"; eredm[1] = "eredm2.txt"; eredm[2] = "eredm3.txt"; eredm[3] = "eredm4.txt"; System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader(eredm[0])); String sor; sor = behozatal.readline(); //Ha van UTF-8 azonosító a fájl elején, elhagyjuk a sor elejéről: if (sor.charat(0) == (char) 0xFEFF) { sor = sor.substring(1); String nevbe; int kor1be; nevbe = sor; kor1be = Integer.parseInt(behozatal.readLine()); jatekos.add(new JatekosTipus(nevBe, kor1be)); //Az első játékost az UTF-8 azonosító miatt kellett külön kezelni. int i; for (i = 2; i <= LSZ; i++) { nevbe = behozatal.readline(); kor1be = Integer.parseInt(behozatal.readLine()); //Az add metódus hozzáad egy új rekordot a tömblistához. jatekos.add(new JatekosTipus(nevBe, kor1be)); behozatal.close(); System.out.println("A beolvasás ellenőrzése \n"); for (i = 1; i <= LSZ; i++) { System.out.println(i + ". játékos: "); System.out.println("név: " + jatekos.get(i - 1).nev); System.out.println("első kör: " + jatekos.get(i - 1).korok[0]); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Hibapontok az első körben \n"); Klemand 13.oldal 2016

2003 minta 2 Kugli for (i = 2; i <= LSZ; i++) { if (jatekos.get(i - 1).korok[0] < jatekos.get(i - 2).korok[0]) { jatekos.get(i - 1).hibaPont1++; for (i = 2; i <= LSZ; i++) { if (jatekos.get(i - 1).hibaPont1 > 0) { System.out.println(jatekos.get(i - 1).nev); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Az adatok beolvasása a többi txt fájlból \n"); for (int k = 2; k <= 4; k++) { behozatal = new BufferedReader(new FileReader(eredm[k - 1])); for (i = 1; i <= LSZ; i++) { behozatal.readline(); //A nevet most már csak átugorjuk jatekos.get(i - 1).korok[k - 1] = Integer.parseInt(behozatal.readLine()); behozatal.close(); System.out.println("A beolvasás ellenőrzése \n"); for (i = 1; i <= LSZ; i++) { System.out.println(i + ". játékos: "); System.out.println("név: " + jatekos.get(i - 1).nev); for (int k = 1; k <= 4; k++) { System.out.println(k + ". kör: " + jatekos.get(i - 1).korok[k - 1]); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Ledöntött bábuk száma \n"); for (i = 1; i <= LSZ; i++) { int k = 1; while ((k <= 4) && (jatekos.get(i - 1).korok[k - 1] < 10)) { /*Itt nagyon fontos, hogy a k<=4 feltétel kerüljön előre, mert így a k=5-öt már nem kapja meg a második felétel*/ jatekos.get(i - 1).osszDobas += jatekos.get(i - 1).korok[k - 1]; k++; for (i = 1; i <= LSZ; i++) { System.out.println(jatekos.get(i - 1).nev + " " + jatekos.get(i - 1).osszDobas); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("A legtöbb pontot elért versenyző \n"); int max = 1; for (i = 2; i <= LSZ; i++) { if (jatekos.get(i - 1).osszDobas > jatekos.get(max - 1).osszDobas) { max = i; System.out.println(jatekos.get(max - 1).nev + " " + jatekos.get(max - 1).osszDobas); Klemand 14.oldal 2016

2003 minta 2 Kugli //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A kiesett versenyzők és a kiesés köre \n"); for (i = 1; i <= LSZ; i++) { int k = 1; while ((k <= 4) && (jatekos.get(i - 1).korok[k - 1] < 10)) { //Itt is nagyon fontos a sorrend! k++; if (k <= 4) { jatekos.get(i - 1).kiesett = true; jatekos.get(i - 1).kieses = k - 1; for (i = 1; i <= LSZ; i++) { if (jatekos.get(i - 1).kiesett == true) { System.out.println(jatekos.get(i - 1).nev + " " + jatekos.get(i - 1).kieses); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A 9 pontos versenyzők és a 9 pontos körök \n"); for (i = 1; i <= LSZ; i++) { if ((jatekos.get(i - 1).korok[0] == 9) (jatekos.get(i - 1).korok[1] == 9) (jatekos.get(i - 1).korok[2] == 9) (jatekos.get(i - 1).korok[3] == 9)) { jatekos.get(i - 1).kilencPontos = true; for (i = 1; i <= LSZ; i++) { if (jatekos.get(i - 1).kilencPontos == true) { System.out.print(jatekos.get(i - 1).nev); for (int k = 1; k <= 4; k++) { if (jatekos.get(i - 1).korok[k - 1] == 9) { System.out.print(" " + k); //************************************************************ Klemand 15.oldal 2016

2003 minta 2 Kugli //A tömblista konstruktora static ArrayList<JatekosTipus> jatekos = new ArrayList<>(); public static class JatekosTipus { private final String nev; private int[] korok = new int[4]; private int osszdobas; private int hibapont1; private boolean kiesett; private int kieses; private boolean kilencpontos; //finalként utólag nem engedi az értéket módosítani public JatekosTipus(String nevbe, int kor1be) //konstruktor { nev = nevbe; korok[0] = kor1be; korok[1] = 0;//Kezdőértékek, futás közben állítjuk be a valódi értéküket korok[2] = 0; korok[3] = 0; osszdobas = 0; hibapont1 = 0; kiesett = false; kieses = 0; kilencpontos = false; Klemand 16.oldal 2016

2003 minta 2 Kugli run: Az 1. feladat megoldása Az adatok beolvasása az eredm1.txt fájlból A beolvasás ellenőrzése 1. játékos: név: Gipsz Jakab első kör: 8 2. játékos: név: Kelep Elek első kör: 9 3. játékos: név: Kiss Géza első kör: 7 4. játékos: név: Nagy Péter első kör: 7 5. játékos: név: Kovács Éva első kör: 6 A 2. feladat megoldása Hibapontok az első körben Kiss Géza Kovács Éva A 3. feladat megoldása Az adatok beolvasása a többi txt fájlból A beolvasás ellenőrzése 1. játékos: név: Gipsz Jakab 1. kör: 8 2. kör: 5 3. kör: 7 4. kör: 10 2. játékos: név: Kelep Elek 1. kör: 9 2. kör: 7 3. kör: 7 4. kör: 9 3. játékos: név: Kiss Géza 1. kör: 7 2. kör: 5 3. kör: 10 4. kör: 10 4. játékos: név: Nagy Péter 1. kör: 7 2. kör: 9 3. kör: 8 4. kör: 9 Klemand 17.oldal 2016

2003 minta 2 Kugli 5. játékos: név: Kovács Éva 1. kör: 6 2. kör: 8 3. kör: 10 4. kör: 10 A 4. feladat megoldása Ledöntött bábuk száma Gipsz Jakab 20 Kelep Elek 32 Kiss Géza 12 Nagy Péter 33 Kovács Éva 14 Az 5. feladat megoldása A legtöbb pontot elért versenyző Nagy Péter 33 A 6. feladat megoldása A kiesett versenyzők és a kiesés köre Gipsz Jakab 3 Kiss Géza 2 Kovács Éva 2 A 7. feladat megoldása A 9 pontos versenyzők és a 9 pontos körök Kelep Elek 1 4 Nagy Péter 2 4 BUILD SUCCESSFUL (total time: 0 seconds) Klemand 18.oldal 2016

2004 május Személyazonosító jel 2004 május: Személyazonosító jel Az ország állampolgárainak van egyedi azonosítójuk. Ez a személyazonosító jel. Az 1997. január 1-je után születetteknél ez a következőképpen néz ki. A személyazonosító jel 11 jegyű. Az első jegy a személy nemét jelöli, az alábbi táblázat alapján. 1997. január 1. és 1999. december 31. 1999. december 31. után született között született férfi nő férfi nő 1 2 3 4 A 2 7 számjegyek a születési év utolsó két jegyét, a születési hónapot és napot tartalmazza. A 8 10. számjegyek az azonos napon születettek születési sorszáma. A 11. jegy az első tíz jegyből képzett ellenőrző szám. Írjon olyan programot, amely végrehajtja az alábbi utasításokat! a) Kérje be egy személyazonosító jel első 10 jegyét! b) Írassa ki a képernyőre, a személyazonosító jel alapján, hogy az adott személy férfi vagy nő! c) Írassa ki a képernyőre, az adott személy születési sorszámát! d) Írassa ki a képernyőre, hogy hányadik születésnapja van ebben az évben a személynek! e) Kérjen be egy másik személyazonosító jelet is! (Szintén csak az első 10 jegyét!) f) Határozza meg, a két beadott személyazonosító jel alapján, hogy melyik személy idősebb! (Ha két ember ugyanakkor született, akkor a 8 10. jegy alapján döntse el, melyik az idősebb!) Az eredményt a képernyőn jelenítse meg! g) Mennyi a különbség a születési éveik között? Figyeljen a 1999. dec. 31. után születettekre is! Az eredményt írassa ki a képernyőre! h) A másodikként beadott személyazonosító jelből, számítsa ki a 11. jegyet és írassa ki a képernyőre a teljes személyazonosító jelet. A számítás a következő szabály alapján működik. A első tíz számjegy mindegyikét szorozzuk meg egy számmal. Mégpedig a 10. helyen állót eggyel, a 9. helyen állót kettővel és így tovább. Az így kapott szorzatokat adjuk össze. A kapott összeget osszuk el tizeneggyel. Az osztás maradéka lesz a 11. jegy. Kivéve, ha a maradék 10. Mert ekkor azt a születési sorszámot nem adják ki. Ebben az esetben írja ki, hogy hibás a születési sorszám! i) Mindkét korábban beadott személyazonosító jel első 10 jegyét írja a szemszam.txt fájlba! Klemand 19.oldal 2016

2004 május Személyazonosító jel package emeltinfo2004maj; import java.util.*; //számbeolvasáshoz import java.io.*;//szöveg beolvasásához /** * Személyazonosító jel * * @author Klemand */ public class EmeltInfo2004maj { public static void main(string[] args) throws IOException { //a) feladat //Az első személyi szám első 10 jegyének bekérése a billyentyűzetről System.out.println("Az a) feladat megoldása:"); System.out.println("Kérem az első személyi szám első tíz jegyét! "); String kod = kodbeolvasas(); int[] szemszam1 = new int[11]; for (int i = 1; i <= 10; i++) { szemszam1[i - 1] = Integer.parseInt(kod.substring(i - 1, i)); //Ellenőrzés (nem része a feladatnak) for (int i = 1; i <= 10; i++) { System.out.println("A megadott személyi szám " + i + ". számjegye: " + szemszam1[i - 1]); //b) feladat //A nem meghatározása a beírt személyi számból System.out.println("A b) feladat megoldása:"); if (szemszam1[0] % 2 == 1) { System.out.println("Az adott személy férfi."); else { System.out.println("Az adott személy nő."); //c) feladat //A születési sorszám kiíratása a képernyőre System.out.println("A c) feladat megoldása:"); System.out.println("Az adott személy születési sorszáma a beolvasott sztringből: " + kod.substring(7, 10)); int szulsorszam1 = 100 * szemszam1[7] + 10 * szemszam1[8] + szemszam1[9]; System.out.println("Vagy a személyi szám jegyeinek tömbjéből: " + szulsorszam1); //d) feladat //Hányadik születésnap int szulev1, aktev; System.out.println("A d) feladat megoldása:"); szulev1 = szulev(szemszam1); Calendar calendar = Calendar.getInstance(); aktev = calendar.get(calendar.year); System.out.println("Az adott személy születési éve: " + szulev1 + ", az idei év: " + aktev); System.out.println("Tehát idén " + (aktev - szulev1) + ". születésnapja van."); Klemand 20.oldal 2016

2004 május Személyazonosító jel //e) feladat //A második személyi szám első 10 jegyének bekérése a billyentyűzetről System.out.println("Az e) feladat megoldása:"); System.out.println("Kérem a második személyi szám első tíz jegyét! "); kod = kodbeolvasas(); int[] szemszam2 = new int[11]; for (int i = 1; i <= 10; i++) { szemszam2[i - 1] = Integer.parseInt(kod.substring(i - 1, i)); //Ellenőrzés (nem része a feladatnak) for (int i = 1; i <= 10; i++) { System.out.println("A megadott személyi szám " + i + ". számjegye: " + szemszam2[i - 1]); //f) feladat //Melyik idősebb? System.out.println("Az f) feladat megoldása:"); int szulev2; szulev2 = szulev(szemszam2); if (szulev1 < szulev2) { System.out.println("Az első személy az idősebb"); else if (szulev1 > szulev2) { System.out.println("A második személy az idősebb"); else { int i = 4; while (i<=10 && szemszam1[i - 1] == szemszam2[i - 1]) { i++; if (szemszam1[i - 1] < szemszam2[i - 1]) { System.out.println("Az első személy az idősebb"); else if (szemszam1[i - 1] > szemszam2[i - 1]) { System.out.println("A második személy az idősebb"); else { System.out.println("A két személyi szám nem lehet azonos!"); //g) feladat //Születési éveik közti különbség System.out.println("A g) feladat megoldása:"); System.out.println("A születési éveik közti különbség: " + (Math.abs(szulEv2 - szulev1))); //h) feladat //A második személyi szám 11. jegyének meghatározása //A valóságban az első jegyet szorozzák eggyel, nem a tizediket! //Így nem kapjuk meg pl. a saját személyi számunk utolsó jegyét! System.out.println("A h) feladat megoldása:"); int osszeg = 0; for (int i = 10; i >= 1; i--) { osszeg += szemszam2[i - 1] * (11 - i); int jegy = osszeg % 11; if (jegy!= 10) { System.out.print("A teljes második személyi szám: "); for (int i = 1; i <= 10; i++) { System.out.print(szemSzam2[i - 1]); System.out.println(jegy); Klemand 21.oldal 2016

2004 május Személyazonosító jel else { System.out.println("Hibás a születési sorszám!"); //i) feladat //A személyi számok első 10 jegyének kiíratása fájlba System.out.println("A h) feladat megoldása:"); System.out.println("A személyi számok első 10 jegyének kiíratása a szemszam.txt fájlba."); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("szemszam.txt")); for (int i = 1; i <= 10; i++) { kivitel.print(szemszam1[i - 1]); kivitel.println(); for (int i = 1; i <= 10; i++) { kivitel.print(szemszam2[i - 1]); kivitel.println(); kivitel.close(); System.out.println("A fájlkiírás befejeződött."); //************************************************************ public static String kodbeolvasas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readline(); public static int szulev(int[] szemszam) { if ((szemszam[0] <= 2)) { return 1900 + 10 * szemszam[1] + szemszam[2]; else { return 2000 + 10 * szemszam[1] + szemszam[2]; Klemand 22.oldal 2016

2004 május Személyazonosító jel run: Az a) feladat megoldása: Kérem az első személyi szám első tíz jegyét! 1991231999 A megadott személyi szám 1. számjegye: 1 A megadott személyi szám 2. számjegye: 9 A megadott személyi szám 3. számjegye: 9 A megadott személyi szám 4. számjegye: 1 A megadott személyi szám 5. számjegye: 2 A megadott személyi szám 6. számjegye: 3 A megadott személyi szám 7. számjegye: 1 A megadott személyi szám 8. számjegye: 9 A megadott személyi szám 9. számjegye: 9 A megadott személyi szám 10. számjegye: 9 A b) feladat megoldása: Az adott személy férfi. A c) feladat megoldása: Az adott személy születési sorszáma a beolvasott sztringből: 999 Vagy a személyi szám jegyeinek tömbjéből: 999 A d) feladat megoldása: Az adott személy születési éve: 1999, az idei év: 2016 Tehát idén 17. születésnapja van. Az e) feladat megoldása: Kérem a második személyi szám első tíz jegyét! 3000101001 A megadott személyi szám 1. számjegye: 3 A megadott személyi szám 2. számjegye: 0 A megadott személyi szám 3. számjegye: 0 A megadott személyi szám 4. számjegye: 0 A megadott személyi szám 5. számjegye: 1 A megadott személyi szám 6. számjegye: 0 A megadott személyi szám 7. számjegye: 1 A megadott személyi szám 8. számjegye: 0 A megadott személyi szám 9. számjegye: 0 A megadott személyi szám 10. számjegye: 1 Az f) feladat megoldása: Az első személy az idősebb A g) feladat megoldása: A születési éveik közti különbség: 1 A h) feladat megoldása: A teljes második személyi szám: 30001010018 A h) feladat megoldása: A személyi számok első 10 jegyének kiíratása a szemszam.txt fájlba. A fájlkiírás befejeződött. BUILD SUCCESSFUL (total time: 48 seconds) szemszam.txt: 1991231999 3000101001 Klemand 23.oldal 2016

2005 május Lottó 2005 május: Lottó Magyarországon 1957 óta lehet ötös lottót játszani. A játék lényege a következő: a lottószelvényeken 90 szám közül 5 számot kell a fogadónak megjelölnie. Ha ezek közül 2 vagy annál több megegyezik a kisorsolt számokkal, akkor nyer. Az évek során egyre többen hódoltak ennek a szerencsejátéknak és a nyeremények is egyre nőttek. Adottak a lottosz.dat szöveges állományban a 2003. év 51 hetének ötös lottó számai. Az első sorában az első héten húzott számok vannak, szóközzel elválasztva, a második sorban a második hét lottószámai vannak stb. Például: 37 42 44 61 62 18 42 54 83 89... 9 20 21 59 68 A lottószámok minden sorban emelkedő számsorrendben szerepelnek. Az állományból kimaradtak az 52. hét lottószámai. Ezek a következők voltak: 89 24 34 11 64. Készítsen programot a következő feladatok megoldására! 1. Kérje be a felhasználótól az 52. hét megadott lottószámait! 2. A program rendezze a bekért lottószámokat emelkedő sorrendbe! A rendezett számokat írja ki a képernyőre! 3. Kérjen be a felhasználótól egy egész számot 1-51 között! A bekért adatot nem kell ellenőrizni! 4. Írja ki a képernyőre a bekért számnak megfelelő sorszámú hét lottószámait, a lottosz.dat állományban lévő adatok alapján! 5. A lottosz.dat állományból beolvasott adatok alapján döntse el, hogy volt-e olyan szám, amit egyszer sem húztak ki az 51 hét alatt! A döntés eredményét (Van/Nincs) írja ki a képernyőre! 6. A lottosz.dat állományban lévő adatok alapján állapítsa meg, hogy hányszor volt páratlan szám a kihúzott lottószámok között! Az eredményt a képernyőre írja ki! 7. Fűzze hozzá a lottosz.dat állományból beolvasott lottószámok után a felhasználótól bekért, és rendezett 52. hét lottószámait, majd írja ki az összes lottószámot a lotto52.ki szöveges fájlba! A fájlban egy sorba egy hét lottószámai kerüljenek, szóközzel elválasztva egymástól! 8. Határozza meg a lotto52.ki állomány adatai alapján, hogy az egyes számokat hányszor húzták ki 2003-ban. Az eredményt írja ki a képernyőre a következő formában: az első sor első eleme az a szám legyen ahányszor az egyest kihúzták! Az első sor második eleme az az érték legyen, ahányszor a kettes számot kihúzták stb.! (Annyit biztosan tudunk az értékekről, hogy mindegyikük egyjegyű.) Klemand 24.oldal 2016

2005 május Lottó package emeltinfo2005maj; import java.io.*; import java.util.*; /** * Lottó * * @author Klemand */ public class EmeltInfo2005maj { public static void main(string[] args) throws IOException { System.setProperty("file.encoding", "UTF8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal= new BufferedReader(new FileReader("lottosz.dat")); int i, j, k; String elsosor; String sor; String[] daraboltsor; int[][] lottoszamok = new int[52][5]; elsosor = behozatal.readline(); //Ha van UTF-8 azonosító a fájl elején, elhagyjuk a sor elejéről: if (elsosor.charat(0) == (char) 0xFEFF) { elsosor = elsosor.substring(1); daraboltsor = elsosor.split(" "); for (j = 1; j <= 5; j++) { lottoszamok[0][j - 1] = Integer.parseInt(daraboltSor[j - 1]); for (i = 2; i <= 51; i++) { sor = behozatal.readline(); daraboltsor = sor.split(" "); for (j = 1; j <= 5; j++) { lottoszamok[i - 1][j - 1] = Integer.parseInt(daraboltSor[j - 1]); behozatal.close(); //Ellenőrzés System.out.println("Az utolsó 5 hét beolvasott lottószámai: "); for (i = 47; i <= 51; i++) { System.out.print(i + ". hét: "); for (j = 1; j <= 5; j++) { System.out.print(lottoSzamok[i - 1][j - 1] + " "); //1. feladat System.out.println("Az 1. feladat megoldása:"); Klemand 25.oldal 2016

2005 május Lottó /*A beírt számok ellenőrzése nélkül: System.out.println("Kérem az 52. hét megadott lottószámait (89 24 34 11 64) szóközökkel elválasztva!"); (Az érettsigin általában nem kell ellenőrizni a beírt adatokat, de ha nem számot írnánk be, vagy nem esne az [1;90] intervallumba, vagy 5-nél kevesebb számot írnánk be, akkor a program hibajelzéssel leállna.) bevitel(); for (j = 1; j <= 5; j++) { lottoszamok[51][j - 1] = Integer.parseInt(daraboltSor[j - 1]); */ //A beírt számok teljes ellenőrzésével: Van-e 5 megfelelő lottószám? int tipp; int db; int jodb = 0; boolean[] lotto = new boolean[90]; while (jodb < 5) { //Lottótörlés for (i = 1; i <= 90; i++) { lotto[i - 1] = false; jodb = 0; //Ne lehessen hozzáírni a korábbi hiányos bevitelhez! System.out.println("Kérem az 52. hét megadott lottószámait (89 24 34 11 64) szóközökkel elválasztva!"); //Azt nem ellenőrizzük, hogy valóban ezeket a számokat írjuk-e be. daraboltsor = beolvas(); db = daraboltsor.length; //Tömbnél length, szövegnél length()! for (j = 1; ((j <= db) && (jodb < 5)); j++) { try { tipp = Integer.parseInt(daraboltSor[j - 1]); if ((tipp < 1) (tipp > 90)) { System.out.println("Csak 1 és 90 közötti számot tippelhetsz!"); else if (lotto[tipp - 1]!= true) { //még nem volt ilyen szám lotto[tipp - 1] = true; //ez többet nem húzható ki! jodb++; //ciklusváltozó növelése lottoszamok[51][jodb - 1] = tipp; else { System.out.println("A " + tipp + " már szerepelt. "); catch (Exception e) { if (j <= db) { System.out.println(j + ". elem: " + daraboltsor[j - 1] + ", törölve, hibás számformátum! "); if (jodb < 5) { System.out.println("Kevés számot adtál meg!"); System.out.print("Az elfogadott beolvasott lottószámok: "); for (j = 1; j <= 5; j++) { System.out.print(lottoSzamok[51][j - 1] + " "); Klemand 26.oldal 2016

2005 május Lottó //2. feladat System.out.println("A 2. feladat megoldása:"); int min, asztal; for (j = 1; j <= 5; j++) { min = j; for (k = j + 1; k <= 5; k++) { if (lottoszamok[51][k - 1] < lottoszamok[51][min - 1]) { min = k; asztal = lottoszamok[51][j - 1];//elemcsere lottoszamok[51][j - 1] = lottoszamok[51][min - 1]; lottoszamok[51][min - 1] = asztal; System.out.print("Az 52. hét lottószámai nagyság szerint rendezve: "); for (j = 1; j <= 5; j++) { System.out.print(lottoSzamok[51][j - 1] + " "); //3. feladat //Egy hét sorszámának bekérése System.out.println("A 3. feladat megoldása:"); System.out.println("Kérem a vizsgált hét sorszámát 1 és 51 között! "); int het = hetbeolvasas(); //Ellenőrzés System.out.println("A hét sorszáma: " + het); //4. feladat //A bekért hét nyerőszámainak kiírása System.out.println("A 4. feladat megoldása:"); System.out.print("A(z) " + het + ". hét nyerőszámai: "); for (j = 1; j <= 5; j++) { System.out.print(lottoSzamok[het - 1][j - 1] + " "); System.out.println("\n"); //5. feladat //Volt-e olyan szám, amit egyszer sem húztak ki? System.out.println("Az 5. feladat megoldása:"); //Lottótörlés for (i = 1; i <= 90; i++) { lotto[i - 1] = false; //Az 51 hét során kihúzott számok for (i = 1; i <= 51; i++) { for (j = 1; j <= 5; j++) { lotto[lottoszamok[i - 1][j - 1] - 1] = true; Klemand 27.oldal 2016

2005 május Lottó //Eldöntés, keresés //A feladat csak az eldöntést kéri i = 1; while ((i <= 90) && (lotto[i - 1] == true)) { i++; if (i <= 90) { System.out.println("Volt olyan szám, amit egyszer sem húztak ki."); System.out.println("Az első ilyen szám a(z) " + i); else { System.out.println("Nem volt olyan szám, amit egyszer sem húztak ki."); //Megszámolás //A feladat csak az eldöntést kéri int egyszersemdb = 0; int[] egyszersem = new int[90]; for (i = 1; i <= 90; i++) { if (lotto[i - 1] == false) { egyszersem[egyszersemdb] = i; egyszersemdb++; System.out.print(egyszersemDb + " olyan szám volt, amit egyszer sem húztak ki: "); for (i = 1; i <= egyszersemdb; i++) { System.out.print(egyszerSem[i - 1] + " "); //6. feladat //Hányszor volt páratlan szám a kihúzott lottószámok között? System.out.println("Az 6. feladat megoldása:"); //Hivatalos megoldás: Hány páratlan szám volt összesen? int paratlanossz = 0; for (i = 1; i <= 51; i++) { for (j = 1; j <= 5; j++) { if (lottoszamok[i - 1][j - 1] % 2 == 1) { paratlanossz++; System.out.println("Összesen " + paratlanossz + " esetben volt a nyertes szám páratlan."); //Alternatív értelmezés: Hány héten szerepelt páratlan szám a kihúzottak között? int paratlanhet = 0; for (i = 1; i <= 51; i++) { j = 1; while ((j <= 5) && (lottoszamok[i - 1][j - 1] % 2 == 0)) { j++; if (j <= 5) { paratlanhet++; System.out.println(paratlanHet + " héten volt a nyertes számok között páratlan."); Klemand 28.oldal 2016

2005 május Lottó //7. feladat //Fájlkiírás System.out.println("A 7. feladat megoldása:"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("lotto52.ki")); for (i = 1; i <= 52; i++) { for (j = 1; j <= 5; j++) { kivitel.print(lottoszamok[i - 1][j - 1] + " "); kivitel.println(); kivitel.close(); System.out.println("A fájlkiírás befejeződött."); //8. feladat //Gyakorisági táblázat System.out.println("A 8. feladat megoldása a lottószámok tömb alapján: "); //Jó lenne az 5. feladathoz is. //dbtörlés int[] gyakorisag = new int[90]; for (i = 1; i <= 90; i++) { gyakorisag[i - 1] = 0; //Az 52 hét során kihúzott számok gyakorisága //A 11-é azért nem 0, mert az 52. héten kihúzták! for (i = 1; i <= 52; i++) { for (j = 1; j <= 5; j++) { gyakorisag[lottoszamok[i - 1][j - 1] - 1]++; //Kiírás for (i = 1; i <= 90; i++) { System.out.print(gyakorisag[i - 1] + " "); if (i % 15 == 0) { System.out.println("A 8. feladat megoldásaa lotto52.ki fájl alapján: "); //dbtörlés for (i = 1; i <= 90; i++) { gyakorisag[i - 1] = 0; //Az 52 hét során kihúzott számok gyakorisága behozatal = new BufferedReader(new FileReader("lotto52.ki")); /*A program csak az ékezetes fájlokat menti UTF-8 kódolással, de nem tesz ki a fájl elejére UTF-8 azonosítót.*/ Klemand 29.oldal 2016

2005 május Lottó for (i = 1; i <= 52; i++) { sor = behozatal.readline(); daraboltsor = sor.split(" "); for (j = 1; j <= 5; j++) { gyakorisag[integer.parseint(daraboltsor[j - 1]) - 1]++; behozatal.close(); //Kiírás for (i = 1; i <= 90; i++) { System.out.print(gyakorisag[i - 1] + " "); if (i % 15 == 0) { //9. feladat //Egyszer sem kihúzott prímek System.out.println("A 9. feladat megoldása:"); System.out.print("Egyszer sem kihúzott prímek: "); //Csak a 2-t és a páratlan számokat vizsgálom! if (gyakorisag[2-1] == 0) { System.out.println(2 + " "); for (i = 3; i <= 90; i += 2) { if ((primvizsg(i)) && (gyakorisag[i - 1] == 0)) { System.out.print(i + " "); System.out.println("\n"); //************************************************************ public static String[] beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readline().trim().split("\\s+"); /*Először eltávolítjuk a beolvasott szöveg széleiről a szóközöket, majd egy vagy több egymás melletti szóköz mentén feldaraboljuk*/ public static int hetbeolvasas() { int x = 0; do { try { System.out.println("1 <= hét <= 51"); Scanner szambill; szambill = new Scanner(System.in); x = szambill.nextint(); catch (Exception e) { System.out.println("Számot kérek!"); while ((x < 1) (x > 51)); return x; Klemand 30.oldal 2016

2005 május Lottó //Egy szám prím voltának eldöntése public static boolean primvizsg(int p) //logikai függvény { if (p == 2) { return (true); else { int q = 2; double h = Math.sqrt(p); while (q <= h && (p % q!= 0)) { if (q == 2) { q++; //ha 2, 1-gyel növeljük else { q += 2; //ha már páratlan, 2-vel növeljük return (q > h); Klemand 31.oldal 2016

2005 május Lottó run: Az utolsó 5 hét beolvasott lottószámai: 47. hét: 1 4 8 69 74 48. hét: 4 15 46 49 59 49. hét: 24 31 67 71 73 50. hét: 12 26 36 46 49 51. hét: 9 20 21 59 68 Az 1. feladat megoldása: Kérem az 52. hét megadott lottószámait (89 24 34 11 64) szóközökkel elválasztva! x 4 6-2 777 1. elem: x, törölve, hibás számformátum! Csak 1 és 90 közötti számot tippelhetsz! Csak 1 és 90 közötti számot tippelhetsz! Kevés számot adtál meg! Kérem az 52. hét megadott lottószámait (89 24 34 11 64) szóközökkel elválasztva! A számok: egy 89 3,14 3.14 89 24 Válogass! 89 34 99 0 11 64 77 33 1. elem: A, törölve, hibás számformátum! 2. elem: számok:, törölve, hibás számformátum! 3. elem: egy, törölve, hibás számformátum! 5. elem: 3,14, törölve, hibás számformátum! 6. elem: 3.14, törölve, hibás számformátum! A 89 már szerepelt. 9. elem: Válogass!, törölve, hibás számformátum! A 89 már szerepelt. Csak 1 és 90 közötti számot tippelhetsz! Csak 1 és 90 közötti számot tippelhetsz! Az elfogadott beolvasott lottószámok: 89 24 34 11 64 A 2. feladat megoldása: Az 52. hét lottószámai nagyság szerint rendezve: 11 24 34 64 89 A 3. feladat megoldása: Kérem a vizsgált hét sorszámát 1 és 51 között! 1 <= hét <= 51 28 A hét sorszáma: 28 A 4. feladat megoldása: A(z) 28. hét nyerőszámai: 4 56 74 77 89 Az 5. feladat megoldása: Volt olyan szám, amit egyszer sem húztak ki. Az első ilyen szám a(z) 11 4 olyan szám volt, amit egyszer sem húztak ki: 11 19 27 63 Az 6. feladat megoldása: Összesen 126 esetben volt a nyertes szám páratlan. 49 héten volt a nyertes számok között páratlan. A 7. feladat megoldása: A fájlkiírás befejeződött. A 8. feladat megoldása a lottószámok tömb alapján: 4 2 2 4 2 2 6 1 1 2 1 5 2 1 1 1 3 5 0 5 5 2 6 6 5 1 0 6 4 3 3 3 5 4 3 1 4 2 2 4 2 4 1 2 3 4 2 1 2 3 2 2 2 4 4 5 1 3 5 5 5 2 0 2 2 4 4 3 1 3 6 1 5 6 2 4 3 2 2 3 1 1 4 1 3 3 2 1 5 3 Klemand 32.oldal 2016

2005 május Lottó A 8. feladat megoldásaa lotto52.ki fájl alapján: 4 2 2 4 2 2 6 1 1 2 1 5 2 1 1 1 3 5 0 5 5 2 6 6 5 1 0 6 4 3 3 3 5 4 3 1 4 2 2 4 2 4 1 2 3 4 2 1 2 3 2 2 2 4 4 5 1 3 5 5 5 2 0 2 2 4 4 3 1 3 6 1 5 6 2 4 3 2 2 3 1 1 4 1 3 3 2 1 5 3 A 9. feladat megoldása: Egyszer sem kihúzott prímek: 19 BUILD SUCCESSFUL (total time: 3 minutes 57 seconds) lotto52.ki: 37 42 44 61 62 18 42 54 83 89 5 12 31 53 60 1 28 47 56 70 54 56 57 59 71 4 15 46 49 59 24 31 67 71 73 12 26 36 46 49 9 20 21 59 68 11 24 34 64 89 Klemand 33.oldal 2016

2005 október Vigenère tábla 2005 október: Vigenère tábla Már a XVI. században komoly titkosítási módszereket találtak ki az üzenetek elrejtésére. A század egyik legjobb kriptográfusának Blaise de Vigenère-nek a módszerét olvashatja a következőkben. A kódoláshoz egy táblázatot és egy ún. kulcsszót használt. A táblázatot a jobb oldali ábra tartalmazza. A tábla adatait a vtabla.dat fájlban találja a következő formában. ABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDE Készítsen programot kodol néven a következő feladatok végrehajtására! 1. Kérjen be a felhasználótól egy maximum 255 karakternyi, nem üres szöveget! A továbbiakban ez a nyílt szöveg. 2. Alakítsa át a nyílt szöveget, hogy a későbbi kódolás feltételeinek megfeleljen! A kódolás feltételei: A magyar ékezetes karakterek helyett ékezetmenteseket kell használni. (Például á helyett a; ő helyett o stb.) A nyílt szövegben az átalakítás után csak az angol ábécé betűi szerepelhetnek. A nyílt szöveg az átalakítás után legyen csupa nagybetűs. 3. Írja ki a képernyőre az átalakított nyílt szöveget! 4. Kérjen be a felhasználótól egy maximum 5 karakteres, nem üres kulcsszót! A kulcsszó a kódolás feltételeinek megfelelő legyen! (Sem átalakítás, sem ellenőrzés nem kell!) Alakítsa át a kulcsszót csupa nagybetűssé! 5. A kódolás első lépéseként fűzze össze a kulcsszót egymás után annyiszor, hogy az így kapott karaktersorozat (továbbiakban kulcsszöveg) hossza legyen egyenlő a kódolandó szöveg hosszával! Írja ki a képernyőre az így kapott kulcsszöveget! 6. A kódolás második lépéseként a következőket hajtsa végre! Vegye az átalakított nyílt szöveg első karakterét, és keresse meg a vtabla.dat fájlból beolvasott táblázat első oszlopában! Ezután vegye a kulcsszöveg első karakterét, és keresse meg a táblázat első sorában! Az így kiválasztott sor és oszlop metszéspontjában lévő karakter lesz a kódolt szöveg első karaktere. Ezt ismételje a kódolandó szöveg többi karakterével is! Klemand 34.oldal 2016

2005 október Vigenère tábla 7. Írja ki a képernyőre és a kodolt.dat fájlba a kapott kódolt szöveget! Példa: Nyílt szöveg: Ez a próba szöveg, amit kódolunk! Szöveg átalakítása: EZAPROBASZOVEGAMITKODOLUNK Kulcsszó: auto Kulcsszó nagybetűssé alakítása: AUTO Nyílt szöveg és kulcsszöveg együtt: E Z A P R O B A S Z O V E G A M I T K O D O L U N K A U T O A U T O A U T O A U T O A U T O A U T O A U Kódolt szöveg: E T T D R I U O S T H J E A T A I N D C D I E I N E Klemand 35.oldal 2016

2005 október Vigenère tábla package emeltinfo2005okt; import java.io.*; /** * Vignère tábla * * @author user */ public class EmeltInfo2005okt { public static void main(string[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("Ékezetes nyílt szöveg beolvasása a billentyűzetről \n"); System.out.println("Kérek egy max. 255 karakterből álló ékezetes szöveget!"); String bsor = szovegbevitel(); //Ellenőrzés: System.out.println("A beírt szöveg: " + bsor); System.out.println("Hossza: " + bsor.length() + " karakter \n"); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A nyílt szöveg átalakítása \n"); String ujsor; String betu; char karakter; ujsor = ""; for (int i = 1; i <= bsor.length(); i++) { betu = bsor.substring(i - 1, i); karakter = betu.charat(0); //Az ékezettelenítéshez karakter kell, a szövegalkotáshoz String. if (((karakter >= 'a') && (karakter <= 'z')) ((karakter >= 'A') && (karakter <= 'Z'))) { ujsor += betu; else { if ((betu.equals("á")) (betu.equals("á"))) { ujsor += "a"; if ((betu.equals("é")) (betu.equals("é"))) { ujsor += "e"; if ((betu.equals("í")) (betu.equals("í"))) { ujsor += "i"; if ((betu.equals("ó")) (betu.equals("ó"))) { ujsor += "o"; if ((betu.equals("ö")) (betu.equals("ö"))) { ujsor += "o"; if ((betu.equals("ő")) (betu.equals("ő"))) { ujsor += "o"; if ((betu.equals("ú")) (betu.equals("ú"))) { ujsor += "u"; if ((betu.equals("ü")) (betu.equals("ü"))) { ujsor += "u"; Klemand 36.oldal 2016

2005 október Vigenère tábla if ((betu.equals("ű")) (betu.equals("ű"))) { ujsor += "u"; ujsor = ujsor.touppercase(); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Az átalakított nyílt szöveg kiírása \n"); System.out.println("Az átalakított szöveg: " + ujsor); System.out.println("Hossza: " + ujsor.length() + " karakter \n"); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("A kulcsszó beolvasása a billentyűzetről \n"); System.out.println("Kérek egy max. 5 karakterből álló ékezetmentes szót!"); String kulcs = szovegbevitel(); //Ellenőrzés: System.out.println("A beírt kulcsszó: " + kulcs); System.out.println("Hossza: " + kulcs.length() + " karakter"); kulcs = kulcs.touppercase(); System.out.println("A nagybetűssé alakított kulcsszó: " + kulcs); System.out.println("Hossza: " + kulcs.length() + " karakter \n"); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("A kulcsszó-füzér megalkotása"); int k = kulcs.length(); String kulcsfuzer = ""; for (int i = 1; i <= ujsor.length(); i++) { if (i % k!= 0) { kulcsfuzer += kulcs.substring(i % k - 1, i % k); else { kulcsfuzer += kulcs.substring(k - 1, k); System.out.println("A kulcsszó-füzér: " + kulcsfuzer); System.out.println("Hossza: " + kulcsfuzer.length() + " karakter \n"); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("Fájlbeolvasás és a kódolás végrehajtása \n"); String[][] vtabla = new String[26][26]; System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("Vtabla.dat")); int i, j; String felsosor; felsosor = behozatal.readline(); //Ha van UTF-8 azonosító a fájl elején, elhagyjuk a sor elejéről: if (felsosor.charat(0) == (char) 0xFEFF) { felsosor = felsosor.substring(1); //Tudjuk, hogy a Vignère tábla konstans 26x26 méretű for (j = 1; j <= 26; j++) { vtabla[0][j - 1] = felsosor.substring(j - 1, j); Klemand 37.oldal 2016