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
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 "); System.out.println(""); /* 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(""); } 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(""); } 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.)"); } System.out.println(""); //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); } System.out.println(""); //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 int int for
uszMin = 1; kerMin = 1; futMin = 1; (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)); System.out.println(""); }
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)); System.out.println(""); } //************************************************************ //A tömblista konstruktora static ArrayList
versenyzo = new ArrayList<>(); //A típus egy osztály, ezért nagybetűvel kezdődik! public static class VersenyzoTipus { private private private private private private
final final final final final final
String nev; int uszIdo; int kerIdo; int futIdo; int osszIdo; 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]); System.out.println(""); } //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); } } System.out.println(""); //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]); } System.out.println(""); } //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); } System.out.println(""); //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
System.out.println(""); //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); } } System.out.println(""); //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); } } System.out.println(""); } } System.out.println(""); } //************************************************************
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]); } System.out.println(""); //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ő."); } System.out.println(""); //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); System.out.println(""); //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."); System.out.println("");
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]); } System.out.println(""); //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!"); } } System.out.println(""); //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))); System.out.println(""); //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!"); } System.out.println(""); //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 } kivitel.println(); for (int i = 1; i <= 10; i++) kivitel.print(szemSzam2[i } kivitel.println();
{ - 1]);
{ - 1]);
kivitel.close(); System.out.println("A fájlkiírás befejeződött."); System.out.println(""); } //************************************************************ 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 3000101001 A megadott személyi szám A megadott személyi szám A megadott személyi szám A megadott személyi szám A megadott személyi szám A megadott személyi szám A megadott személyi szám A megadott személyi szám A megadott személyi szám A megadott személyi szám
szám első tíz jegyét! 1. számjegye: 3 2. számjegye: 0 3. számjegye: 0 4. számjegye: 0 5. számjegye: 1 6. számjegye: 0 7. számjegye: 1 8. számjegye: 0 9. számjegye: 0 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: "); System.out.println(""); 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] + " "); } System.out.println(""); } System.out.println(""); //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] + " "); } System.out.println("");
Klemand
26.oldal
2016
2005 május
Lottó
System.out.println(""); //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] + " "); } System.out.println(""); System.out.println(""); //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); System.out.println(""); //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."); } System.out.println(""); //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] + " "); } System.out.println(""); System.out.println(""); //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."); System.out.println(""); //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."); System.out.println("");
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."); System.out.println(""); //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(""); } } System.out.println(""); 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 behozatal = /*A program de nem tesz
Klemand
során kihúzott számok gyakorisága new BufferedReader(new FileReader("lotto52.ki")); csak az ékezetes fájlokat menti UTF-8 kódolással, ki a fájl elejére UTF-8 azonosítót.*/
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) { System.out.println(""); } } System.out.println(""); //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. 48. 49. 50. 51.
hét: hét: hét: hét: hét:
1 4 8 69 74 4 15 46 49 59 24 31 67 71 73 12 26 36 46 49 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 4 1 3 4 5 4
8. feladat megoldása a lottóSzámok tömb alapján: 2 2 4 2 2 6 1 1 2 1 5 2 1 1 3 5 0 5 5 2 6 6 5 1 0 6 4 3 3 5 4 3 1 4 2 2 4 2 4 1 2 3 2 1 2 3 2 2 2 4 4 5 1 3 5 5 2 0 2 2 4 4 3 1 3 6 1 5 6 2 3 2 2 3 1 1 4 1 3 3 2 1 5 3
Klemand
32.oldal
2016
2005 május A 4 1 3 4 5 4
8. feladat megoldásaa 2 2 4 2 2 6 1 1 2 1 5 3 5 0 5 5 2 6 6 5 1 0 3 5 4 3 1 4 2 2 4 2 4 2 1 2 3 2 2 2 4 4 5 1 2 0 2 2 4 4 3 1 3 6 1 3 2 2 3 1 1 4 1 3 3 2
Lottó lotto52.ki fájl alapján: 2 1 1 6 4 3 1 2 3 3 5 5 5 6 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(""); 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(""); 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
2005 október
Vigenère tábla
String fSor; for (i = 2; i <= 26; i++) { fSor = behozatal.readLine(); for (j = 1; j <= 26; j++) { vTabla[i - 1][j - 1] = fSor.substring(j - 1, j); } } //Ellenőrzés: System.out.println("A beolvasott kódtábla: "); for (i = 1; i <= 26; i++) { for (j = 1; j <= 26; j++) { System.out.print(vTabla[i - 1][j - 1]); } System.out.println("\n"); } //A kódolás String titkos; titkos = ""; for (int n = 1; n <= ujSor.length(); n++) { //A tábla sorának meghatározása i = (int) ujSor.substring(n - 1, n).charAt(0) - (int) 'A' + 1; //A tábla oszlopának meghatározása j = (int) kulcsFuzer.substring(n - 1, n).charAt(0) - (int) 'A' + 1; titkos += vTabla[i - 1][j - 1]; } //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A kódolt szöveg kiírása a képernyőre és szövegfájlba \n"); System.out.println("A kódolt szöveg: " + titkos); System.out.println("Hossza: " + titkos.length() + " karakter \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("kodolt.dat")); kivitel.println(titkos); kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n"); //Ellenőrzés: visszafejtés System.out.println("Ellenőrzés: visszafejtés"); System.out.println("A nyílt szöveg visszafejtése a kódolt szövegből \n"); String visszafejtett; visszafejtett = ""; for (int n = 1; n <= ujSor.length(); n++) { //A tábla oszlopát a kulcsfüzér aktuális betűje határozza meg j = (int) kulcsFuzer.substring(n - 1, n).charAt(0) - (int) 'A' + 1; /*Ebből az oszlopból kell kiválasztanunk a titkos szöveg aktuális betűjét, megkeresni, hogy melyik sorban van, annak az első eleme kell*/ i = 1; while ((titkos.substring(n - 1, n).equals(vTabla[i - 1][j - 1])) != true) { i++; } visszafejtett += vTabla[i - 1][0]; } System.out.println("A visszafejtett szöveg: " + visszafejtett); System.out.println("Hossza: " + visszafejtett.length() + " karakter \n"); } //************************************************************
Klemand
38.oldal
2016
2005 október
Vigenère tábla
public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); /*Ékezetes betűk beolvasásánál feltétlenül a magyar kódlapot kell használni! UTF-8: ű=téglalap Cp1252: ű=kalapos u */ return bill.readLine(); } }
Klemand
39.oldal
2016
2005 október
Vigenère tábla
run: Az 1. feladat megoldása Ékezetes nyílt szöveg beolvasása a billentyűzetről Kérek egy max. 255 karakterből álló ékezetes szöveget! Ötszáztíz gyűrődött bőrű, csúszó-mászó, hüllőszerű szörny tört elő a tajtékzó óceánból, s űzött tűzön-vízen át. A beírt szöveg: Ötszáztíz gyűrődött bőrű, csúszó-mászó, hüllőszerű szörny tört elő a tajtékzó óceánból, s űzött tűzön-vízen át. Hossza: 111 karakter A 2. feladat megoldása A nyílt szöveg átalakítása A 3. feladat megoldása Az átalakított nyílt szöveg kiírása Az átalakított szöveg: OTSZAZTIZGYURODOTTBORUCSUSZOMASZOHULLOSZERUSZORNYTORTELOATAJTEKZOOCEANBOLSUZOTTTUZONVIZENAT Hossza: 91 karakter A 4. feladat megoldása A kulcsszó beolvasása a billentyűzetről Kérek egy max. 5 karakterből álló ékezetmentes szót! piros A beírt kulcsszó: piros Hossza: 5 karakter A nagybetűssé alakított kulcsszó: PIROS Hossza: 5 karakter Az 5. feladat megoldása A kulcsszó-füzér megalkotása k 5 A kulcsszó-füzér: PIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSPIROSP Hossza: 91 karakter A 6. feladat megoldása Fájlbeolvasás és a kódolás végrehajtása A beolvasott kódtábla: ABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABC EFGHIJKLMNOPQRSTUVWXYZABCD FGHIJKLMNOPQRSTUVWXYZABCDE GHIJKLMNOPQRSTUVWXYZABCDEF HIJKLMNOPQRSTUVWXYZABCDEFG IJKLMNOPQRSTUVWXYZABCDEFGH JKLMNOPQRSTUVWXYZABCDEFGHI
Klemand
40.oldal
2016
2005 október
Vigenère tábla
KLMNOPQRSTUVWXYZABCDEFGHIJ LMNOPQRSTUVWXYZABCDEFGHIJK MNOPQRSTUVWXYZABCDEFGHIJKL NOPQRSTUVWXYZABCDEFGHIJKLM OPQRSTUVWXYZABCDEFGHIJKLMN PQRSTUVWXYZABCDEFGHIJKLMNO QRSTUVWXYZABCDEFGHIJKLMNOP RSTUVWXYZABCDEFGHIJKLMNOPQ STUVWXYZABCDEFGHIJKLMNOPQR TUVWXYZABCDEFGHIJKLMNOPQRS UVWXYZABCDEFGHIJKLMNOPQRST VWXYZABCDEFGHIJKLMNOPQRSTU WXYZABCDEFGHIJKLMNOPQRSTUV XYZABCDEFGHIJKLMNOPQRSTUVW YZABCDEFGHIJKLMNOPQRSTUVWX ZABCDEFGHIJKLMNOPQRSTUVWXY A 7. feladat megoldása A kódolt szöveg kiírása a képernyőre és szövegfájlba A kódolt szöveg: DBJNSOBZNYNCICVDBKPGGCTGMHHFASHHFVMATFGRTZLGRDZEMLDZKSDDIKOBIMBNGDKVOFQWCGMOWKHLJHFBNXHVBSI Hossza: 91 karakter A fájlkiírás befejeződött. Ellenőrzés: visszafejtés A nyílt szöveg visszafejtése a kódolt szövegből A visszafejtett szöveg: OTSZAZTIZGYURODOTTBORUCSUSZOMASZOHULLOSZERUSZORNYTORTELOATAJTEKZOOCEANBOLSUZOTTTUZONVIZENAT Hossza: 91 karakter BUILD SUCCESSFUL (total time: 9 seconds)
kodolt.dat: DBJNSOBZNYNCICVDBKPGGCTGMHHFASHHFVMATFGRTZLGRDZEMLDZKSDDIKOBIMBNGDKVOFQWCGMOWKHLJHFBNXHVBSI
Klemand
41.oldal
2016
2006 február
Telefonszámla
2006 február: Telefonszámla Egy új szolgáltatás keretében ki lehet kérni a napi telefonbeszélgetéseink listáját. A listát egy fájlban küldik meg, amelyben a következő adatok szerepelnek: hívás kezdete, hívás vége, hívott telefonszám. A hívás kezdete és vége óra, perc, másodperc formában szerepel. Például: 6 15 0 6 19 0
Óra
395682211
Telefonszám
9 58 15 10 3 53
Óra
114571155
perc
perc
mperc
Óra
perc
mperc
mperc
Óra
perc
mperc
Telefonszám
A hívások listája időben rendezett módon tartalmazza az adatokat, és szigorúan csak egy napi adatot, azaz nincsenek olyan beszélgetések, amelyeket előző nap kezdtek vagy a következő napon fejeztek be. Továbbá az elmúlt időszak statisztikái alapján tudjuk, hogy a napi hívások száma nem haladja meg a kétszázat. A telefonálás díjait a következő táblázat foglalja össze.
Hívásirány
Vezetékes Mobil társaság
Csúcsidőben 700 - 1800 (Ft/perc)
Csúcsidőn kívül 000 – 700 és 1800 – 2400 (Ft/perc)
30
15
69,175
46,675
További fontos információk:
•
A csúcsidő reggel 7:00:00-kor, a csúcsidőn kívüli időszak pedig 18:00:00-kor kezdődik. A díjazás számításakor az számít, hogy mikor kezdte az illető a beszélgetést. (Például: ha 17:55-kor kezdett egy beszélgetést, de azt 18:10-kor fejezte be, akkor is csúcsidőbeli díjakkal kell számlázni.)
• •
Minden megkezdett perc egy egész percnek számít. Minden telefonszám elején egy kétjegyű körzetszám, illetve mobil hívószám található. A mobil hívószámok: 39, 41, 71 kezdődnek, minden egyéb szám vezetékes hívószámnak felel meg.
A következő feladatokat oldja meg egy program segítségével! A programot mentse szamla néven!
1. Kérjen be a felhasználótól egy telefonszámot! Állapítsa meg a program segítségével, hogy a telefonszám mobil-e vagy sem! A megállapítást írja ki a képernyőre!
2. Kérjen be továbbá egy hívás kezdeti és hívás vége időpontot óra perc másodperc formában! A két időpont alapján határozza meg, hogy a számlázás szempontjából hány perces a beszélgetés! A kiszámított időtartamot írja ki a képernyőre!
Klemand
42.oldal
2016
2006 február
Telefonszámla
3. Állapítsa meg a hivasok.txt fájlban lévő hívások időpontja alapján, hogy hány számlázott percet telefonált a felhasználó hívásonként! A kiszámított számlázott perceket írja ki a percek.txt fájlba a következő formában! perc telefonszám
4. Állapítsa meg a hivasok.txt fájl adatai alapján, hogy hány hívás volt csúcsidőben és csúcsidőn kívül! Az eredményt jelenítse meg a képernyőn!
5. A hivasok.txt fájlban lévő időpontok alapján határozza meg, hogy hány percet beszélt a felhasználó mobil számmal és hány percet vezetékessel! Az eredményt jelenítse meg a képernyőn!
6. Összesítse a hivasok.txt fájl adatai alapján, mennyit kell fizetnie a felhasználónak a csúcsdíjas hívásokért! Az eredményt a képernyőn jelenítse meg!
Klemand
43.oldal
2016
2006 február
Telefonszámla
package emeltinfo2006feb; import java.io.*; import java.util.*; /** * Telefonszámla * * @author Klemand */ public class EmeltInfo2006feb { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("Egy billentyűzetről bekért telefonszám jellegének meghatározása \n"); System.out.println("Kérem a telefonszámot!"); String telefonSzam = telefonSzamBeolvasas(); String jelleg = jellegMeghat(telefonSzam); System.out.println("A megadott telefonszám: " + jelleg); System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A hívásidő kiszámítása a bekért időpontok alapján \n"); System.out.println("Kérem a hívás kezdetének időpontját óra perc másodperc formátumban"); System.out.println("szóközökkel elválasztva!"); String[] kezdet = idoPontBeolvasas(); int kIdo = idoMeghat(kezdet); System.out.println("Kérem a hívás végének időpontját óra perc másodperc formátumban"); System.out.println("szóközökkel elválasztva!"); String[] veg = idoPontBeolvasas(); int vIdo = idoMeghat(veg); int hivasIdoMp = vIdo - kIdo; int hivasIdo = hivasIdoMeghat(hivasIdoMp); System.out.println("A hívásidő a számlázás szempontjából: " + hivasIdo + " perc. \n"); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Az adatok beolvasása a hivasok.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("hivasok.txt")); String elsoSor; String sor; String[] daraboltSor; //Ügyeljünk rá, hogy a darabolt szöveg String tömb! String hivottSzam; 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(" "); hivottSzam = behozatal.readLine(); hivas.add(new HivasTipus(daraboltSor, hivottSzam));
Klemand
44.oldal
2016
2006 február
Telefonszámla
while ((sor = behozatal.readLine()) != null) { daraboltSor = sor.split(" "); hivottSzam = behozatal.readLine(); hivas.add(new HivasTipus(daraboltSor, hivottSzam)); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése "); System.out.println("Az utolsó 5 hívás: \n"); for (int i = hivas.size() - 4; i <= hivas.size(); i++) { System.out.print(i + ". hívás kezdete: "); System.out.print(hivas.get(i - 1).kOra + " " + hivas.get(i - 1).kPerc + " " + hivas.get(i - 1).kMp); System.out.println(""); System.out.print(i + ". hívás vége: "); System.out.print(hivas.get(i - 1).vOra + " " + hivas.get(i - 1).vPerc + " " + hivas.get(i - 1).vMp); System.out.println(""); System.out.print(i + ". hívott szám: "); System.out.println(hivas.get(i - 1).hivottSzam); System.out.println(""); } for (int i = 1; i <= hivas.size(); i++) { hivasIdoMp = hivas.get(i - 1).vOra * 3600 + hivas.get(i - 1).vPerc * 60 + hivas.get(i - 1).vMp - hivas.get(i - 1).kOra * 3600 - hivas.get(i - 1).kPerc * 60 - hivas.get(i - 1).kMp; hivas.get(i - 1).hivasIdo = hivasIdoMeghat(hivasIdoMp); } System.out.println("A hívásidők kiírása a percek.txt fájlba \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("percek.txt")); for (int i = 1; i <= hivas.size(); i++) { kivitel.println(hivas.get(i - 1).hivasIdo + " " + hivas.get(i - 1).hivottSzam); } kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n"); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Hívások száma csúcsidőben és csúcsidőn kívül \n"); for (int i = 1; i <= hivas.size(); i++) { if (hivas.get(i - 1).kOra > 6 && hivas.get(i - 1).kOra < 18) { hivas.get(i - 1).csucsIdo = true; } } int csucsDb = 0; int kivulDb = 0; for (int i = 1; i <= hivas.size(); i++) { if (hivas.get(i - 1).csucsIdo == true) { csucsDb++; } else { kivulDb++; } } System.out.println("Csúcsidőben: " + csucsDb); System.out.println("Csúcsidőn kívül: " + kivulDb); System.out.println("");
Klemand
45.oldal
2016
2006 február
Telefonszámla
//5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("A hívásidő kiszámítása mobil, ill. vezetékes hívásoknál \n"); for (int i = 1; i <= hivas.size(); i++) { hivas.get(i - 1).jelleg = jellegMeghat(hivas.get(i - 1).hivottSzam); } int mobilIdo = 0; int vezetekesIdo = 0; for (int i = 1; i <= hivas.size(); i++) { if (hivas.get(i - 1).jelleg.equals("mobil")) { mobilIdo += hivas.get(i - 1).hivasIdo; } else { vezetekesIdo += hivas.get(i - 1).hivasIdo; } } System.out.println("Mobil szám: " + mobilIdo + " perc"); System.out.println("Vezetékes szám: " + vezetekesIdo + " perc"); System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("Hívásdíj csúcsidőben \n"); double mobilCsucsTarifa = 69.175; double vezetekesCsucsTarifa = 30; double csucsDij = 0; for (int i = 1; i <= hivas.size(); i++) { if (hivas.get(i - 1).csucsIdo == true) { if (hivas.get(i - 1).jelleg.equals("mobil")) { csucsDij += hivas.get(i - 1).hivasIdo * mobilCsucsTarifa; } else { csucsDij += hivas.get(i - 1).hivasIdo * vezetekesCsucsTarifa; } } } System.out.printf("A felhasználónak a csúcsidős hívásokért %.2f", csucsDij); System.out.println(" Ft-ot kell fizetnie. \n"); } //************************************************************ public static String telefonSzamBeolvasas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine(); } public static String jellegMeghat(String telSzam) throws IOException { if (telSzam.substring(0, 2).equals("39") || telSzam.substring(0, 2).equals("41") || telSzam.substring(0, 2).equals("79")) { return "mobil"; } else { return "vezetékes"; } }
Klemand
46.oldal
2016
2006 február
Telefonszámla
public static String[] idoPontBeolvasas() 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 idoMeghat(String[] ido) { int ora = Integer.parseInt(ido[0]); int perc = Integer.parseInt(ido[1]); int mp = Integer.parseInt(ido[2]); return ora * 3600 + perc * 60 + mp;//Az időt másodpercben számítjuk a nap kezdetétől } public static int hivasIdoMeghat(int idoMp) { if (idoMp % 60 == 0) { return idoMp / 60; //Egészosztás, csak az egészrészt adja meg! } else { return idoMp / 60 + 1; //A megkezdett perceket felfelé kerekítjük } } //A tömblista konstruktora static ArrayList hivas = new ArrayList<>(); public static class HivasTipus { private private private private private private private private private private
final int kOra; final int kPerc; final int kMp; final int vOra; final int vPerc; final int vMp; final String hivottSzam; int hivasIdo; boolean csucsIdo; String jelleg;
public HivasTipus(String[] idokBe, String hivottSzamBe) //konstruktor { kOra = Integer.parseInt(idokBe[0]); kPerc = Integer.parseInt(idokBe[1]); kMp = Integer.parseInt(idokBe[2]); vOra = Integer.parseInt(idokBe[3]); vPerc = Integer.parseInt(idokBe[4]); vMp = Integer.parseInt(idokBe[5]); hivottSzam = hivottSzamBe; hivasIdo = 0; //Kezdőértékek, futás közben állítjuk be a valódi értéküket csucsIdo = false; jelleg = ""; } } }
Klemand
47.oldal
2016
2006 február
Telefonszámla
run: Az 1. feladat megoldása Egy billentyűzetről bekért telefonszám jellegének meghatározása Kérem a telefonszámot! 411234567 A megadott telefonszám: mobil A 2. feladat megoldása A hívásidő kiszámítása a bekért időpontok alapján Kérem a hívás kezdetének időpontját óra perc másodperc formátumban szóközökkel elválasztva! 8 6 2 Kérem a hívás végének időpontját óra perc másodperc formátumban szóközökkel elválasztva! 08 08 03 A hívásidő a számlázás szempontjából: 3 perc. A 3. feladat megoldása Az adatok beolvasása a hivasok.txt fájlból A beolvasás ellenőrzése Az utolsó 5 hívás: 81. hívás kezdete: 22 44 46 81. hívás vége: 22 46 25 81. hívott szám: 263134032 82. hívás kezdete: 22 58 34 82. hívás vége: 23 3 20 82. hívott szám: 712272350 83. hívás kezdete: 23 19 4 83. hívás vége: 23 28 50 83. hívott szám: 713563064 84. hívás kezdete: 23 47 11 84. hívás vége: 23 48 43 84. hívott szám: 682524752 85. hívás kezdete: 23 58 2 85. hívás vége: 23 59 48 85. hívott szám: 484566325 A hívásidők kiírása a percek.txt fájlba A fájlkiírás befejeződött. A 4. feladat megoldása Hívások száma csúcsidőben és csúcsidőn kívül Csúcsidőben: 63 Csúcsidőn kívül: 22 Az 5. feladat megoldása A hívásidő kiszámítása mobil, ill. vezetékes hívásoknál Mobil szám: 53 perc Vezetékes szám: 293 perc
Klemand
48.oldal
2016
2006 február
Telefonszámla
A 6. feladat megoldása Hívásdíj csúcsidőben A felhasználónak a csúcsidős hívásokért 8807,93 Ft-ot kell fizetnie. BUILD SUCCESSFUL (total time: 44 seconds) percek.txt: 2 5 5 8 9 …
392712621 442407028 712676212 297241726 565866886
Klemand
49.oldal
2016
2006 május
Fehérje
2006 május: Fehérje A fehérjék óriás molekulák, amelyeknek egy része az élő szervezetekben végbemenő folyamatokat katalizálják. Egy-egy fehérje aminosavak százaiból épül fel, melyek láncszerűen kapcsolódnak egymáshoz. A természetben a fehérjék fajtája több millió. Minden fehérje húszféle aminosav különböző mennyiségű és sorrendű összekapcsolódásával épül fel. Az alábbi táblázat tartalmazza az aminosavak legfontosabb adatait, a megnevezéseket és az őket alkotó atomok számát (az aminosavak mindegyike tartalmaz szenet, hidrogént, oxigént és nitrogént, néhányban kén is van): Neve
Rövidítés
Betűjele
C
H
O
N
S
Glicin
Gly
G
2
5
2
1
0
Alanin
Ala
A
3
7
2
1
0
Arginin
Arg
R
6
14
2
4
0
Fenilalanin
Phe
F
9
11
2
1
0
Cisztein
Cys
C
3
7
2
1
1
Triptofán
Trp
W
11
12
2
2
0
Valin
Val
V
5
11
2
1
0
Leucin
Leu
L
6
13
2
1
0
Izoleucin
Ile
I
6
13
2
1
0
Metionin
Met
M
5
11
2
1
1
Prolin
Pro
P
5
9
2
1
0
Szerin
Ser
S
3
7
3
1
0
Treonin
Thr
T
4
9
3
1
0
Aszparagin
Asn
N
4
8
3
2
0
Glutamin
Gln
Q
5
10
3
2
0
Tirozin
Tyr
Y
9
11
3
1
0
Hisztidin
His
H
6
9
2
3
0
Lizin
Lys
K
6
14
2
2
0
Aszparaginsav
Asp
D
4
7
4
1
0
Glutaminsav
Glu
E
5
9
4
1
0
Készítsen programot feherje néven, ami megoldja a következő feladatokat! Ügyeljen arra, hogy a program forráskódját a megadott helyre mentse! 1. Töltse be az aminosav.txt fájlból az aminosavak adatait! A fájlban minden adat külön sorban található, a fájl az aminosavak nevét nem tartalmazza. Ha az adatbetöltés nem sikerül, vegye fel a fenti táblázat alapján állandóként az első öt adatsort, és azzal dolgozzon! Az első néhány adat: Gly G 2 5 2
Klemand
50.oldal
2016
2006 május
Fehérje
1 0 Ala A 3 7 2 1 0 …
2. Határozza meg az aminosavak relatív molekulatömegét, ha a szén atomtömege 12, a hidrogéné 1, az oxigéné 16, a nitrogéné 14 és a kén atomtömege 32! Például a Glicin esetén a relatív molekulatömeg 2·12 + 5·1 + 2·16 + 1·14 + 0·32 = 75. A következő feladatok eredményeit írja képernyőre, illetve az eredmeny.txt fájlba! A kiírást a feladat sorszámának feltüntetésével kezdje (például: 4. feladat)!
3. Rendezze növekvő sorrendbe az aminosavakat a relatív molekulatömeg szerint! Írja ki a képernyőre és az eredmeny.txt fájlba az aminosavak hárombetűs azonosítóját és a molekulatömeget! Az azonosítót és hozzátartozó molekulatömeget egy sorba, szóközzel elválasztva írja ki!
4. A bsa.txt a BSA nevű fehérje aminosav sorrendjét tartalmazza – egybetűs jelöléssel. (A fehérjelánc legfeljebb 1000 aminosavat tartalmaz.) Határozza meg a fehérje összegképletét (azaz a C, H, O, N és S számát)! A meghatározásánál vegye figyelembe, hogy az aminosavak összekapcsolódása során minden kapcsolat létrejöttekor egy vízmolekula (H2O) lép ki! Az összegképletet a képernyőre és az eredmeny.txt fájlba az alábbi formában írja ki: Például: C 16321 H 34324 O 4234 N 8210 S 2231 (Amennyiben a bsa.txt beolvasása sikertelen, helyette tárolja a G,A,R,F,C betűjeleket tízszer egymás után és a feladatokat erre a „láncra” oldja meg!)
5. A fehérjék szekvencia szerkezetét hasításos eljárással határozzák meg. Egyes enzimek bizonyos aminosavak után kettéhasítják a fehérjemolekulát. Például a Kimotripszin enzim a Tirozin (Y), Fenilalanin (W) és a Triptofán (F) után hasít. Határozza meg, és írja ki képernyőre a Kimotripszin enzimmel széthasított BSA lánc leghosszabb darabjának hosszát és az eredeti láncban elfoglalt helyét (első és utolsó aminosavának sorszámát)! A kiíráskor nevezze meg a kiírt adatot, például: „kezdet helye:”!
6. Egy másik enzim (a Factor XI) az Arginin (R) után hasít, de csak akkor, ha Alinin (A) vagy Valin (V) követi. Határozza meg, hogy a hasítás során keletkező első fehérjelánc részletben hány Cisztein (C) található! A választ teljes mondatba illesztve írja ki a képernyőre!
Klemand
51.oldal
2016
2006 május
Fehérje
package emeltinfo2006maj; import java.io.*; import java.util.*; /** * Fehérje * * @author Klemand */ public class EmeltInfo2006maj { 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 aminosav.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("aminosav.txt")); String elsoSor; String sor; 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); } String rov = elsoSor; String jel = behozatal.readLine(); int c12 = Integer.parseInt(behozatal.readLine()); int h1 = Integer.parseInt(behozatal.readLine()); int o16 = Integer.parseInt(behozatal.readLine()); int n14 = Integer.parseInt(behozatal.readLine()); int s32 = Integer.parseInt(behozatal.readLine()); aminosav.add(new AminosavTipus(rov, jel, c12, h1, o16, n14, s32)); while ((sor = behozatal.readLine())!= null) { rov = sor; jel = behozatal.readLine(); c12 = Integer.parseInt(behozatal.readLine()); h1 = Integer.parseInt(behozatal.readLine()); o16 = Integer.parseInt(behozatal.readLine()); n14 = Integer.parseInt(behozatal.readLine()); s32 = Integer.parseInt(behozatal.readLine()); aminosav.add(new AminosavTipus(rov, jel, c12, h1, o16, n14, s32)); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése "); System.out.println("Az aminosavak: \n"); for (int i = 1; i <= aminosav.size(); i++) { System.out.printf("%2d", i); //A sorszámkiírás szélességének beállítása System.out.print(". aminosav rövidítése: " + aminosav.get(i - 1).rov + ", "); System.out.printf("atomjainak száma: C %2d", aminosav.get(i - 1).c12); System.out.printf(" H %2d", aminosav.get(i - 1).h1); //Az atomszámok kiírásának szélességét is beállítjuk System.out.printf(" O %2d", aminosav.get(i - 1).o16);
Klemand
52.oldal
2016
2006 május
Fehérje System.out.printf(" N %2d", aminosav.get(i - 1).n14); System.out.printf(" S %2d", aminosav.get(i - 1).s32); System.out.println("");
} System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A relatív molekulatömegek meghatározása \n"); for (int i = 1; i <= aminosav.size(); i++) { aminosav.get(i - 1).molTomeg = aminosav.get(i - 1).c12 * 12 + aminosav.get(i - 1).h1 * 1 + aminosav.get(i - 1).o16 * 16 + aminosav.get(i - 1).n14 * 14 + aminosav.get(i - 1).s32 * 32; } //Ellenőrzés System.out.println("A relatív molekulatömegek: "); for (int i = 1; i <= aminosav.size(); i++) { System.out.print(aminosav.get(i - 1).rov + " " + aminosav.get(i - 1).molTomeg); System.out.println(""); } System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); //A relatív molekulatömegek szerinti rendezés int i, j, min; //minimumkiválasztásos rendezés AminosavTipus asztal; for (i = 1; i <= aminosav.size(); i++) { min = i; for (j = i + 1; j <= aminosav.size(); j++) { if (aminosav.get(j - 1).molTomeg < aminosav.get(min - 1).molTomeg) { 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 = aminosav.get(i - 1); aminosav.set(i - 1, aminosav.get(min - 1)); aminosav.set(min - 1, asztal); } System.out.println("Az aminosavak relatív molekulatömeg szerint rendezve:"); for (i = 1; i <= aminosav.size(); i++) { System.out.println(aminosav.get(i - 1).rov + " " + aminosav.get(i - 1).molTomeg); } System.out.println(""); System.out.println("Kiírás az eredmeny.txt fájlba \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("eredmeny.txt")); kivitel.println("A 3. feladat megoldása"); for (i = 1; i <= aminosav.size(); i++) { kivitel.println(aminosav.get(i - 1).rov + " " + aminosav.get(i - 1).molTomeg); } kivitel.println(""); kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n");
Klemand
53.oldal
2016
2006 május
Fehérje
//4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("A bsa.txt fájl beolvasása"); String[] bsa = new String[1000]; int bsaDb = 0; behozatal = new BufferedReader(new FileReader("bsa.txt")); 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); } bsaDb++; bsa[bsaDb - 1] = elsoSor; while ((sor = behozatal.readLine())!= null) { bsaDb++; bsa[bsaDb - 1] = sor; } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése "); System.out.println("Az aminosavak száma: " + bsaDb); System.out.println("Az utolsó 5 aminosav: \n"); for (i = bsaDb - 4; i <= bsaDb; i++) { System.out.println(i + ". " + bsa[i - 1]); } System.out.println(""); System.out.println("A BSA összegképletének meghatározása: "); int c12Db = 0; int h1Db = 0; int o16Db = 0; int n14Db = 0; int s32Db = 0; for (i = 1; i <= bsaDb; i++) { j = 1; while (aminosav.get(j - 1).jel.equals(bsa[i - 1]) == false) { j++; } c12Db += aminosav.get(j - 1).c12; h1Db += aminosav.get(j - 1).h1; o16Db += aminosav.get(j - 1).o16; n14Db += aminosav.get(j - 1).n14; s32Db += aminosav.get(j - 1).s32; } //A vízmolekulák kilépésének beszámítása h1Db -= 2 * (bsaDb - 1); o16Db -= bsaDb - 1; System.out.println("C " + c12Db + " H " + h1Db + " O " + o16Db + " N " + n14Db + " S " + s32Db); System.out.println(""); System.out.println("Kiírás az eredmeny.txt fájlba \n"); kivitel = new PrintWriter(new FileWriter("eredmeny.txt", true)); kivitel.println("A 4. feladat megoldása"); kivitel.println("C " + c12Db + " H " + h1Db + " O " + o16Db + " N " + n14Db + " S " + s32Db); kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n");
Klemand
54.oldal
2016
2006 május
Fehérje
//5. feladat System.out.println("Az 5. feladat megoldása \n"); int darabKezd = 1; int darabVeg; int darabHossz; int maxDarabKezd = 1; int maxDarabVeg = 1; int maxDarabHossz = 1; i = 1; while (i <= bsaDb) { if (bsa[i - 1].equals("Y") || bsa[i - 1].equals("W") || bsa[i - 1].equals("F")) { darabVeg = i; darabHossz = darabVeg - darabKezd + 1; if (darabHossz > maxDarabHossz) { maxDarabKezd = darabKezd; maxDarabVeg = darabVeg; maxDarabHossz = darabHossz; } i++; darabKezd = i; } else { i++; } } darabVeg = bsaDb; darabHossz = darabVeg - darabKezd + 1; if (darabHossz > maxDarabHossz) { maxDarabKezd = darabKezd; maxDarabVeg = darabVeg; maxDarabHossz = darabHossz; } System.out.println("A Kimotripszin enzimmel széthasított BSA lánc leghosszabb darabja: "); System.out.println("Kezdete: " + maxDarabKezd + ". aminosav: " + bsa[maxDarabKezd - 1]); System.out.println("Vége: " + maxDarabVeg + ". aminosav: " + bsa[maxDarabVeg - 1]); System.out.println("Hossza: " + maxDarabHossz); System.out.println(""); //Ellenőrzés System.out.println("Ellenőrzés"); System.out.println("A leghosszabb darab előtti hasító aminosav: " + bsa[maxDarabKezd - 2]); System.out.println("A leghosszabb darab: "); for (i = maxDarabKezd; i <= maxDarabVeg; i++) { System.out.print(bsa[i - 1] + " "); } System.out.println("\n"); System.out.println("A hasító aminosavak: "); for (i = 1; i <= bsaDb; i++) { if (bsa[i - 1].equals("Y") || bsa[i - 1].equals("W") || bsa[i - 1].equals("F")) { System.out.println(i + ". " + bsa[i - 1]); } } System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása \n"); System.out.println("A Ciszteinek számának meghatározása a a Factor XI első hasítási láncában \n"); int ciszteinDb = 0; i = 1; while (i < bsaDb && (bsa[i - 1].equals("R") && (bsa[i].equals("A") || bsa[i].equals("V"))) == false) { if (bsa[i - 1].equals("C")) { ciszteinDb++; }
Klemand
55.oldal
2016
2006 május
Fehérje
i++; } System.out.println("Az első hasítási láncban " + ciszteinDb + " Cisztein található. \n"); //Ellenőrzés System.out.println("Ellenőrzés"); i = 1; while (i < bsaDb && (bsa[i - 1].equals("R") && (bsa[i].equals("A") || bsa[i].equals("V"))) == false) { System.out.print(i + ". " + bsa[i - 1]); if (bsa[i - 1].equals("C")) { System.out.println(" Cisztein"); } else { System.out.println(""); } i++; } System.out.println(i + ". " + bsa[i - 1]); System.out.println(""); System.out.println(i + 1 + ". " + bsa[i]); System.out.println(""); } //************************************************************ //A tömblista konstruktora static ArrayList aminosav = new ArrayList<>(); public static class AminosavTipus { private private private private private private private private
final String rov; final String jel; final int c12; final int h1; final int o16; final int n14; final int s32; int molTomeg;
public AminosavTipus(String rovBe, String jelBe, int c12Be, int h1Be, int o16Be, int n14Be, int s32Be) //konstruktor { rov = rovBe; jel = jelBe; c12 = c12Be; h1 = h1Be; o16 = o16Be; n14 = n14Be; s32 = s32Be; molTomeg = 0;//Kezdőértékek, futás közben állítjuk be a valódi értéküket } } }
}
Klemand
56.oldal
2016
2006 május
Fehérje
run: Az 1. feladat megoldása Az adatok beolvasása az aminosav.txt fájlból A beolvasás ellenőrzése Az aminosavak: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav aminosav
rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése: rövidítése:
Gly, Ala, Arg, Phe, Cys, Trp, Val, Leu, Ile, Met, Pro, Ser, Thr, Asn, Gln, Tyr, His, Lys, Asp, Glu,
atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak atomjainak
száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma: száma:
C C C C C C C C C C C C C C C C C C C C
2 3 6 9 3 11 5 6 6 5 5 3 4 4 5 9 6 6 4 5
H H H H H H H H H H H H H H H H H H H H
5 7 14 11 7 12 11 13 13 11 9 7 9 8 10 11 9 14 7 9
O O O O O O O O O O O O O O O O O O O O
2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 2 2 4 4
N N N N N N N N N N N N N N N N N N N N
1 1 4 1 1 2 1 1 1 1 1 1 1 2 2 1 3 2 1 1
S S S S S S S S S S S S S S S S S S S S
0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
A 2. feladat megoldása A relatív molekulatömegek meghatározása A relatív molekulatömegek: Gly 75 Ala 89 Arg 174 Phe 165 Cys 121 Trp 204 Val 117 Leu 131 Ile 131 Met 149 Pro 115 Ser 105 Thr 119 Asn 132 Gln 146 Tyr 181 His 155 Lys 146 Asp 133 Glu 147 A 3. feladat megoldása Az aminosavak relatív molekulatömeg szerint rendezve: Gly 75 Ala 89 Ser 105 Pro 115 Val 117 Thr 119 Cys 121 Leu 131 Ile 131
Klemand
57.oldal
2016
2006 május Asn Asp Gln Lys Glu Met His Phe Arg Tyr Trp
Fehérje
132 133 146 146 147 149 155 165 174 181 204
Kiírás az eredmeny.txt fájlba A fájlkiírás befejeződött. A 4. feladat megoldása A bsa.txt fájl beolvasása A beolvasás ellenőrzése Az aminosavak száma: 581 Az utolsó 5 aminosav: 577. 578. 579. 580. 581.
Q T A L A
A BSA összegképletének meghatározása: C 2923 H 4594 O 895 N 778 S 39 Kiírás az eredmeny.txt fájlba A fájlkiírás befejeződött. Az 5. feladat megoldása A Kimotripszin enzimmel széthasított BSA lánc leghosszabb darabja: Kezdete: 261. aminosav: I Vége: 306. aminosav: F Hossza: 46 Ellenőrzés A leghosszabb darab előtti hasító aminosav: Y A leghosszabb darab: I C D N Q D T I S S K L K E C C D K P L L E K S H C I A E V E K D A I P E N L P P L T A D F A hasító aminosavak: 11. F 19. F 27. F 30. Y 36. F 48. F 69. F 83. Y 100. F 124. F 131. F 132. W 135. Y 137. Y 145. Y 146. F
Klemand
147. 153. 154. 158. 162. 203. 211. 220. 225. 260. 306. 316. 323. 327. 329. 331. 338.
Y Y Y Y F F W F F Y F Y F F Y Y Y
350. 367. 371. 392. 398. 400. 408. 449. 485. 494. 499. 504. 506. 548. 551. 565.
58.oldal
Y Y F F Y F Y Y F Y F F F F F F
2016
2006 május
Fehérje
A 6. feladat megoldása A Ciszteinek számának meghatározása a a Factor XI első hasítási láncában Az első hasítási láncban 12 Cisztein található. Ellenőrzés 1. D 2. T 3. H 4. K 5. S 6. E 7. I 8. A 9. H 10. R 11. F 12. K 13. D 14. L 15. G 16. E 17. E 18. H 19. F 20. K 21. G 22. L 23. V 24. L 25. I 26. A 27. F 28. S 29. Q 30. Y 31. L 32. Q 33. Q 34. C Cisztein 35. P 36. F 37. D 38. E 39. H 40. V 41. K 42. L 43. N 44. E 45. L 46. T 47. E 48. F 49. A 50. K 51. T 52. C Cisztein
53. V 54. A 55. D 56. E 57. S 58. H 59. A 60. G 61. C Cisztein 62. E 63. K 64. S 65. L 66. H 67. T 68. L 69. F 70. G 71. D 72. E 73. L 74. C Cisztein 75. K 76. V 77. A 78. S 79. L 80. R 81. E 82. T 83. Y 84. G 85. D 86. M 87. A 88. D 89. C Cisztein 90. C Cisztein 91. E 92. Q 93. E 94. P 95. E 96. R 97. N 98. E 99. C Cisztein 100. F 101. L 102. S 103. H 104. K
105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156.
D D S P D L P K L K P D P N T L C Cisztein D E F K A D E K K F W G K Y L Y E I A R R H P Y F Y A P E L L Y Y A N
157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206.
K Y N G V F Q E C C Q A E D K G A C L L P K I E T M R E K V L A S S A R Q R L R C A S I Q K F G E R
Cisztein Cisztein
Cisztein
Cisztein
207. A
BUILD SUCCESSFUL (total time: 0 seconds)
Klemand
59.oldal
2016
2006 május
Fehérje
eredmeny.txt: A 3. feladat megoldása Gly 75 Ala 89 Ser 105 Pro 115 Val 117 Thr 119 Cys 121 Leu 131 Ile 131 Asn 132 Asp 133 Gln 146 Lys 146 Glu 147 Met 149 His 155 Phe 165 Arg 174 Tyr 181 Trp 204 A 4. feladat megoldása C 2923 H 4594 O 895 N 778 S 39
Klemand
60.oldal
2016
2006 október
Zenei adók
2006 október: Zenei adók A rádióhallgatás ma már egyre inkább zene vagy hírek hallgatására korlátozódik. Ez a feladat három, folyamatosan zenét sugárzó adóról szól, azok egyetlen napi műsorát feldolgozva. A reklám elkerülése érdekében az adókat nevük helyett egyetlen számmal azonosítottuk. A musor.txt állomány első sorában az olvasható, hogy hány zeneszám (z<=1000) szólt aznap a rádiókban, majd ezt z darab sor követi. Minden sor négy, egymástól egyetlen szóközzel elválasztott adatot tartalmaz: a rádió sorszámát, amit a szám hossza követ két egész szám (perc és másodperc) formában, majd a játszott szám azonosítója szerepel, ami a szám előadójából és címéből áll. A rádió sorszáma az 1, 2, 3 számok egyike. Az adás minden adón 0 óra 0 perckor kezdődik. Egyik szám sem hosszabb 30 percnél, tehát a perc értéke legfeljebb 30, a másodperc pedig legfeljebb 59 lehet. A szám azonosítója legfeljebb 50 karakter hosszú, benne legfeljebb egy kettőspont szerepel, ami az előadó és a cím között található. A számok az elhangzás sorrendjében szerepelnek az állományban, tehát a később kezdődő szám későbbi sorban található. Az állományban minden zeneszám legfeljebb egyszer szerepel. Például: 677 1 5 2 3 3 2 3 3 …
3 Deep Purple:Bad Attitude 36 Eric Clapton:Terraplane Blues 46 Eric Clapton:Crazy Country Hop 25 Omega:Ablakok
Készítsen programot zene néven, amely az alábbi kérdésekre válaszol! Ügyeljen arra, hogy a program forráskódját a megadott helyre mentse! 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:). Ha a billentyűzetről olvas be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár. Az adatszerkezet készítése során vegye figyelembe az Ön által használt programozási környezetben az adatok tárfoglalási igényét!
1. Olvassa be a musor.txt állományban talált adatokat, s annak felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, akkor a forrás első 10 sorának adatait jegyezze be a programba, s úgy oldja meg a következő feladatokat!
2. Írja a képernyőre, hogy melyik csatornán hány számot lehetett meghallgatni! 3. Adja meg, mennyi idő telt el az első Eric Clapton szám kezdete és az utolsó Eric Clapton szám vége között az 1. adón! Az eredményt óra:perc:másodperc formában írja a képernyőre!
4. Amikor az „Omega:Legenda” című száma elkezdődött, Eszter rögtön csatornát váltott. Írja a képernyőre, hogy a szám melyik adón volt hallható, és azt, hogy a másik két adón milyen számok szóltak ekkor. Mivel a számok a kezdés időpontja szerint növekvő sorrendben vannak, így a másik két adón már elkezdődött a számok lejátszása. Feltételezheti, hogy a másik két adón volt még adás.
Klemand
61.oldal
2016
2006 október
Zenei adók
5. Az egyik rádióműsorban sms-ben, telefonon, de akár képeslapon is kérhető szám. Ám a sokszor csak odafirkált kéréseket olykor nehéz kibetűzni. Előfordul, hogy csak ennyi olvasható: „gaoaf”, tehát ezek a betűk biztosan szerepelnek, mégpedig pontosan ebben a sorrendben. Annyi biztos, hogy először a szerző neve szerepel, majd utána a szám címe. Olvassa be a billentyűzetről a felismert karaktereket, majd írja a keres.txt állományba azokat a számokat, amelyek ennek a feltételnek megfelelnek. Az állomány első sorába a beolvasott karaktersorozat, majd utána soronként egy zeneszám azonosítója kerüljön! A feladat megoldása során ne különböztesse meg a kis- és a nagybetűket!
6. Az 1. adón változik a műsor szerkezete: minden számot egy rövid, egyperces bevezető előz majd meg, és műsorkezdéstől minden egész órakor 3 perces híreket mondanak. Természetesen minden szám egy részletben hangzik el továbbra is, közvetlenül a bevezető perc után. Így ha egy szám nem fejeződne be a hírekig, el sem kezdik, az üres időt a műsorvezető tölti ki. Írja a képernyőre óra:perc:másodperc formában, hogy mikor lenne vége az adásnak az új műsorszerkezetben!
Klemand
62.oldal
2016
2006 október
Zenei adók
package emeltinfo2006okt; import java.io.*; import java.util.*; /** * Zenei adók * * @author Klemand */ public class EmeltInfo2006okt { 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 musor.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("musor.txt")); String elsoSor; 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); } int n = Integer.parseInt(elsoSor.trim()); //Vigyázni kell, egy szóközt tettek a szám után, le kell vágni! /*Ha tudjuk, hogy a fájl első sora csak a fájl sorainak számát tartalmazza, és tömblistába olvasunk be, át is ugorhatnánk az első soron, hiszen a tömblista méretét nem kell előre megadnunk, és bármikor lekérdezhetjük. És akkor nem kellene az UTF-8 azonosítóval törődni. Viszont figyelni kellene, hogy mikor érünk a fájl végére.*/ String sor; int ado; int perc; int mp; String azonosito; for (int i = 1; i <= n; i++) { sor = behozatal.readLine(); //Mivel az azonosítóban is vannak szóközök, nekem kell feldarabolnom! ado = Integer.parseInt(sor.substring(0, sor.indexOf(" "))); sor = sor.substring(sor.indexOf(" ") + 1); //kezdőindextől végig perc = Integer.parseInt(sor.substring(0, sor.indexOf(" "))); sor = sor.substring(sor.indexOf(" ") + 1); mp = Integer.parseInt(sor.substring(0, sor.indexOf(" "))); azonosito = sor.substring(sor.indexOf(" ") + 1); musor.add(new MusorTipus(ado, perc, mp, azonosito)); } behozatal.close();
Klemand
63.oldal
2016
2006 október
Zenei adók
int i, j, k; //Ellenőrzés System.out.println("A beolvasás ellenőrzése"); System.out.println("A beolvasott fájl az első sora szerint " + n + " műsorszámot tartalmaz."); System.out.println("A műsor tömblistája " + musor.size() + " műsorszámot tartalmaz."); System.out.println("Az utolsó 3 műsorszám: "); for (i = musor.size() - 2; i <= musor.size(); i++) { System.out.print(i + ". szám hossza: " + musor.get(i - 1).perc + " perc "); System.out.println(musor.get(i - 1).mp + " másodperc"); System.out.println(i + ". szám azonosítója: " + musor.get(i - 1).azonosito); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Az egyes csatornákon hallható dalok száma: \n"); int db1 = 0; int db2 = 0; int db3 = 0; for (i = 1; i <= n; i++) { switch (musor.get(i - 1).ado) { case 1: db1++; break; case 2: db2++; break; case 3: db3++; break; default: ; } } System.out.println("1. adó: " + db1); System.out.println("2. adó: " + db2); System.out.println("3. adó: " + db3); System.out.println("Összesen: " + (db1 + db2 + db3)); System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Az első Eric Clapton dal kezdete és az utolsó Eric Clapton dal "); System.out.print("vége között eltelt idő az 1. csatornán: "); //A int int int
Klemand
dalok kezdési időpontjának meghatározása az egyes adókon a nap kezdete óta másodpercben mérve kezdet1 = 0; kezdet2 = 0; kezdet3 = 0;
64.oldal
2016
2006 október
Zenei adók
for (i = 1; i <= n; i++) { switch (musor.get(i - 1).ado) { case 1: musor.get(i - 1).kezdet = kezdet1; //aktuális kezdet kezdet1 = kezdet1 + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; //az aktuális szám vége lesz a következő kezdete break; case 2: musor.get(i - 1).kezdet = kezdet2; kezdet2 = kezdet2 + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; break; case 3: musor.get(i - 1).kezdet = kezdet3; kezdet3 = kezdet3 + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; break; default: ; } } int elsoKezd = 0; int utolsoVeg = 86400; //Ha nem volt, akkor 1 teljes nap lesz az eredmény i = 1; while (i <= n && ((musor.get(i - 1).ado == 1) && (musor.get(i - 1).azonosito.split(":")[0].equals("Eric Clapton") == true)) == false) { i++; } if (i <= n) { elsoKezd = musor.get(i - 1).kezdet; utolsoVeg = elsoKezd + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; for (j = i + 1; j <= musor.size(); j++) { if (musor.get(j - 1).azonosito.split(":")[0].equals("Eric Clapton")) { utolsoVeg = musor.get(j - 1).kezdet + musor.get(j - 1).perc * 60 + musor.get(j - 1).mp; } } } System.out.println(idoKonvertalas(utolsoVeg - elsoKezd)); System.out.print("(Az első kezdete: " + idoKonvertalas(elsoKezd)); System.out.println(", az utolsó vége: " + idoKonvertalas(utolsoVeg) + ")"); System.out.println(""); //Ellenőrzés System.out.println("Ellenőrzés"); System.out.println("Kezdési időpontok: "); for (i = 1; i <= 8; i++) { System.out.print(i + ". szám adója: " + musor.get(i - 1).ado + ", kezdete: " + idoKonvertalas(musor.get(i - 1).kezdet)); System.out.println(", azonosítója: " + musor.get(i - 1).azonosito); } System.out.println("..."); for (i = musor.size() - 7; i <= musor.size(); i++) { System.out.print(i + ". szám adója: " + musor.get(i - 1).ado + ", kezdete: " + idoKonvertalas(musor.get(i - 1).kezdet)); System.out.println(", azonosítója: " + musor.get(i - 1).azonosito); } System.out.println("");
Klemand
65.oldal
2016
2006 október
Zenei adók
//4. feladat System.out.println("A 4. (módosított) feladat megoldása"); System.out.println("Add meg egy szám azonosítóját! Pl. Omega:Legenda "); String musorSzam = szovegBevitel(); System.out.println("Melyik adón játszották a következő számot: " + musorSzam + "?"); int melyik1 = 0; int mikor1 = 0; i = 1; while (i <= n && musor.get(i - 1).azonosito.equals(musorSzam) == false) { i++; } if (i <= n) { melyik1 = musor.get(i - 1).ado; mikor1 = musor.get(i - 1).kezdet; } if (melyik1 > 0) { System.out.println("Adó: " + melyik1); System.out.println("Kezdési időpont: " + idoKonvertalas(mikor1)); System.out.println(""); System.out.println("Mit játszottak ennek kezdete előtt utoljára a másik két adón? \n"); int melyik2 = 2; int mikor2; int befejezes2; i = n; do { i--; } while (i >= 1 && ((musor.get(i - 1).kezdet >= mikor1) || (musor.get(i - 1).ado == melyik1))); if (i >= 1) { melyik2 = musor.get(i - 1).ado; mikor2 = musor.get(i - 1).kezdet; befejezes2 = mikor2 + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; System.out.println("Adó: " + melyik2); System.out.println("Kezdési időpont: " + idoKonvertalas(mikor2)); System.out.println("Játszott szám: " + musor.get(i - 1).azonosito); System.out.println("Befejezési időpont: " + idoKonvertalas(befejezes2)); if (befejezes2 >= mikor1) { System.out.println("Az adón még tart a műsor."); } else { System.out.println("Az adón már befejeződött a műsor."); } System.out.println(""); }
Klemand
66.oldal
2016
2006 október
Zenei adók
//Megyünk tovább, keressük a harmadik adót int befejezes3; do { i--; } while (i >= 1 && ((musor.get(i - 1).ado == melyik1) || (musor.get(i - 1).ado == melyik2))); if (i >= 1) { befejezes3 = musor.get(i - 1).kezdet + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; System.out.println("Adó: " + musor.get(i - 1).ado); System.out.println("Kezdési időpont: " + idoKonvertalas(musor.get(i - 1).kezdet)); System.out.println("Játszott szám: " + musor.get(i - 1).azonosito); System.out.println("Befejezési időpont: " + idoKonvertalas(befejezes3)); if (befejezes3 >= mikor1) { System.out.println("Az adón még tart a műsor."); } else { System.out.println("Az adón már befejeződött a műsor."); } System.out.println(""); } } else { System.out.println("A megadott számot egyik adón sem játszották. \n"); } //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Adj meg egy karaktersorozatot! Pl. gaoaf "); System.out.println("A program kiírja a keres.txt fájlba, hogy mely számokban szerepelnek a megadott karakterek"); System.out.println("a megadott sorrendben, ha a kis- és a nagybetűk között nem teszünk különbséget. \n"); String foszlany = szovegBevitel(); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("keres.txt")); kivitel.println(foszlany); foszlany = foszlany.toLowerCase(); char karakterek[] = new char[foszlany.length()]; for (i = 1; i <= foszlany.length(); i++) { karakterek[i - 1] = foszlany.charAt(i - 1); } for (i = 1; i <= musor.size(); i++) { if (benneVan(karakterek, musor.get(i - 1).azonosito)) { kivitel.println(musor.get(i - 1).azonosito); } } kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n"); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("Új műsorstruktúra az 1. adón \n"); //A dalok új kezdési időpontjának meghatározása az 1. adón a nap kezdete óta másodpercben mérve int veg1 = 0; int ora = 0; for (i = 1; i <= n; i++) { switch (musor.get(i - 1).ado) { case 1: kezdet1 = veg1;
Klemand
67.oldal
2016
2006 október
Zenei adók veg1 = kezdet1 + 60 + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; if (veg1 > (ora + 1) * 3600) { //ha a számnak nem lenne vége a hírekig ora++; kezdet1 = ora * 3600 + 180; //akkor csak a hírek után kezdődik veg1 = kezdet1 + 60 + musor.get(i - 1).perc * 60 + musor.get(i - 1).mp; } musor.get(i - 1).kezdetUj = kezdet1; break; case 2: //Az eredeti algoritmus átültetését szemlélteti a szerkezet meghagyása break; case 3: break; default: ;
} } String befejezes = idoKonvertalas(veg1); System.out.println("Az új műsorszerkezetben az 1. adó műsorának befejezése: " + befejezes); System.out.println(""); //Ellenőrzés System.out.println("A műsorszámok kezdése az 1. adón a régi és az új rend szerint: \n"); for (i = 1; i <= 40; i++) { if (musor.get(i - 1).ado == 1) { System.out.println(i + ". " + musor.get(i - 1).azonosito + " " + idoKonvertalas(musor.get(i - 1).kezdet) + " / " + idoKonvertalas(musor.get(i - 1).kezdetUj)); } } System.out.println("..."); for (i = n - 7; i <= n; i++) { if (musor.get(i - 1).ado == 1) { System.out.println(i + ". " + musor.get(i - 1).azonosito + " " + idoKonvertalas(musor.get(i - 1).kezdet) + " / " + idoKonvertalas(musor.get(i - 1).kezdetUj)); } } System.out.println(""); } //************************************************************ //A tömblista konstruktora static ArrayList<MusorTipus> musor = new ArrayList<>(); public static class MusorTipus { private private private private private private
final int ado; final int perc; final int mp; final String azonosito; int kezdet; int kezdetUj;
public MusorTipus(int adoBe, int percBe, int mpBe, String azonositoBe) //konstruktor { ado = adoBe; perc = percBe; mp = mpBe; azonosito = azonositoBe; kezdet = 0; //Futás közben állítja be a program a valós értéket kezdetUj = 0; } }
Klemand
68.oldal
2016
2006 október
Zenei adók
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 } public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket } public static boolean benneVan(char[] kar, String cim) { cim = cim.toLowerCase(); int m = kar.length; char k; int hossz = cim.length(); char c; int ii = 1;//i-t nem használhatom, a küldő ciklus használja! boolean talalt = true; while (ii <= m && talalt) { k = kar[ii - 1]; int jj = 1; while (jj <= hossz && cim.charAt(jj - 1) != k) { jj++; } if (jj <= hossz) { cim = cim.substring(jj); hossz = cim.length(); ii++; } else { talalt = false; } } return talalt; } }
Klemand
69.oldal
2016
2006 október
Zenei adók
run: Az 1. feladat megoldása Az adatok beolvasása az musor.txt fájlból A beolvasás ellenőrzése A beolvasott fájl az első sora szerint 677 műsorszámot tartalmaz. A műsor tömblistája 677 műsorszámot tartalmaz. Az utolsó 3 műsorszám: 675. szám hossza: 5 perc 28 másodperc 675. szám azonosítója: Omega:Hazafele 676. szám hossza: 5 perc 0 másodperc 676. szám azonosítója: Frank Zappa:Pick Me, I'm Clean 677. szám hossza: 2 perc 35 másodperc 677. szám azonosítója: Eric Clapton:Last Fair Deal Gone Down A 2. feladat megoldása Az egyes csatornákon hallható dalok száma: 1. adó: 232 2. adó: 215 3. adó: 230 Összesen: 677 A 3. feladat megoldása Az első Eric Clapton dal kezdete és az utolsó Eric Clapton dal vége között eltelt idő az 1. csatornán: 17:51:12 (Az első kezdete: 00:05:03, az utolsó vége: 17:56:15) Ellenőrzés Kezdési időpontok: 1. szám adója: 1, kezdete: 00:00:00, azonosítója: Deep Purple:Bad Attitude 2. szám adója: 2, kezdete: 00:00:00, azonosítója: Eric Clapton:Terraplane Blues 3. szám adója: 3, kezdete: 00:00:00, azonosítója: Eric Clapton:Crazy Country Hop 4. szám adója: 3, kezdete: 00:02:46, azonosítója: Omega:Ablakok 5. szám adója: 2, kezdete: 00:03:36, azonosítója: Eric Clapton:Catch Me If You Can 6. szám adója: 1, kezdete: 00:05:03, azonosítója: Eric Clapton:Willie And The Hand Jive 7. szám adója: 3, kezdete: 00:06:11, azonosítója: Omega:A szamuzott 8. szám adója: 2, kezdete: 00:07:59, azonosítója: Eric Clapton:Old love ... 670. szám adója: 3, kezdete: 17:28:03, azonosítója: AC/DC:Overdose 671. szám adója: 1, kezdete: 17:28:28, azonosítója: Omega:Ballada a fegyverkovacs fiarol 672. szám adója: 1, kezdete: 17:32:55, azonosítója: AC/DC:Two's Up 673. szám adója: 3, kezdete: 17:34:12, azonosítója: Eric Clapton:Hold Me Lord 674. szám adója: 1, kezdete: 17:38:16, azonosítója: Eric Clapton:I Can Wait 675. szám adója: 1, kezdete: 17:43:12, azonosítója: Omega:Hazafele 676. szám adója: 1, kezdete: 17:48:40, azonosítója: Frank Zappa:Pick Me, I'm Clean 677. szám adója: 1, kezdete: 17:53:40, azonosítója: Eric Clapton:Last Fair Deal Gone Down A 4. (módosított) feladat megoldása Add meg egy szám azonosítóját! Pl. Omega:Legenda Omega:Lena Melyik adón játszották a következő számot: Omega:Lena? Adó: 1 Kezdési időpont: 06:35:27 Mit játszottak ennek kezdete előtt utoljára a másik két adón? Adó: 3 Kezdési időpont: 06:33:29 Játszott szám: Eric Clapton:Tearing Us Apart Befejezési időpont: 06:37:43 Az adón még tart a műsor.
Klemand
70.oldal
2016
2006 október
Zenei adók
Adó: 2 Kezdési időpont: 06:31:47 Játszott szám: Deep Purple:The Gypsy Befejezési időpont: 06:35:47 Az adón még tart a műsor. Az 5. feladat megoldása Adj meg egy karaktersorozatot! Pl. gaoaf A program kiírja a keres.txt fájlba, hogy mely számokban szerepelnek a megadott karakterek a megadott sorrendben, ha a kis- és a nagybetűk között nem teszünk különbséget. zEnE A fájlkiírás befejeződött. A 6. feladat megoldása Új műsorstruktúra az 1. adón Az új műsorszerkezetben az 1. adó műsorának befejezése: 23:44:41 A műsorszámok kezdése az 1. adón a régi és az új rend szerint: 1. Deep Purple:Bad Attitude 00:00:00 / 00:00:00 6. Eric Clapton:Willie And The Hand Jive 00:05:03 / 00:06:03 9. Deep Purple:Don't Make Me Happy 00:08:30 / 00:10:30 11. Eric Clapton:Crosscut Saw 00:13:25 / 00:16:25 15. Eric Clapton:Bad Love 00:16:54 / 00:20:54 17. Deep Purple:Mad Dog 00:22:01 / 00:27:01 20. Omega:Torekeny lendulet 00:26:36 / 00:32:36 23. AC/DC:Evil Walks 00:30:45 / 00:37:45 27. Eric Clapton & B.B. King:Help The Poor 00:35:08 / 00:43:08 30. Omega:Holdfeny-negyed 00:40:15 / 00:49:15 33. Eric Clapton:Just LIke A Prisoner 00:44:33 / 01:03:00 37. AC/DC:Night Prowler 00:50:02 / 01:09:29 40. AC/DC:Night Of The Long Knives 00:56:18 / 01:16:45 ... 671. Omega:Ballada a fegyverkovacs fiarol 17:28:28 / 23:10:54 672. AC/DC:Two's Up 17:32:55 / 23:16:21 674. Eric Clapton:I Can Wait 17:38:16 / 23:22:42 675. Omega:Hazafele 17:43:12 / 23:28:38 676. Frank Zappa:Pick Me, I'm Clean 17:48:40 / 23:35:06 677. Eric Clapton:Last Fair Deal Gone Down 17:53:40 / 23:41:06 BUILD SUCCESSFUL (total time: 42 seconds)
Klemand
71.oldal
2016
2006 október
Zenei adók
keres.txt fájl: zEnE Omega:Az egben lebegok csarnoka Frank Zappa:Envelopes Frank Zappa:For The Young Sophisticate Frank Zappa:The man From Utopia Meets Mary Frank Zappa:Brown Shoes Don't Make It Omega:Az uzenet Frank Zappa:The Dangerous Kitchen Omega:Ha en szel lehetnek Omega:Megszentelt vilag Omega:Tizenhat evesen Omega:Szemkozt a rozsaszinnel Frank Zappa:Tinsel Town Rebellion Omega:Szeretnek visszamenni hozzad Omega:Szomoru tortenet Frank Zappa:Dance Contest Frank Zappa:I Come From Nowhere Frank Zappa:We Are Not Alone
Klemand
72.oldal
2016
2007 május
SMS szavak
2007 május: SMS szavak Napjainkban a kommunikáció egy elterjedt formája az SMS-küldés. Az SMS-küldésre alkalmas telefonok prediktív szövegbevitellel segítik az üzenetek megírását. Ennek használatakor a szavakat úgy tudjuk beírni, hogy a telefon számbillentyűjén található betűknek megfelelő számokat kell beírnunk. A számok és betűk megfeleltetését az alábbi táblázat mutatja:
Ha meg szeretnénk jeleníteni az „ablak” szót, akkor a 22525 kódot kell beírnunk. A telefon a tárolt szótára alapján a kódhoz kikeresi a megfelelő szót. Ha több szóhoz is azonos kód tartozik, akkor a kódhoz tartozó összes szót felkínálja választásra. Egy ilyen szógyűjteményt talál a szavak.txt fájlban. A fájlról a következőket tudjuk:
• • • • •
Legfeljebb 600 szó található benne. Minden szó külön sorban található. A szavak hossza maximum 15 karakter. A szavak mindegyike csak az angol ábécé kisbetűit tartalmazza. Minden szó legfeljebb egyszer szerepel.
Írjon sms néven programot, ami a szógyűjtemény felhasználásával megoldja az alábbi feladatokat!
1. Kérjen be a felhasználótól egy betűt, és adja meg, hogy milyen kód (szám) tartozik hozzá! Az eredményt írassa a képernyőre!
2. Kérjen be a felhasználótól egy szót, és határozza meg, hogy milyen számsorral lehet ezt a telefonba bevinni! Az eredményt írassa a képernyőre!
3. Olvassa be a szavak.txt fájlból a szavakat, és a továbbiakban azokkal dolgozzon! Ha nem tudja az állományból beolvasni az adatokat, akkor az állományban található „b” kezdőbetűs szavakat gépelje be a programba, és azokkal oldja meg a feladatokat!
4. Határozza meg és írassa a képernyőre, hogy melyik a leghosszabb tárolt szó! Amennyiben több azonos hosszúságú van, elegendő csak az egyiket megjeleníteni. Adja meg ennek a szónak a hosszát is!
5. Határozza meg és írassa a képernyőre, hogy hány rövid szó található a fájlban! Rövid szónak tekintjük a legfeljebb 5 karakterből álló szavakat.
6. Írassa a kodok.txt állományba a szavak.txt fájlban található szavaknak megfelelő számkódokat! Minden szónak feleljen meg egy számkód, és minden számkód külön sorba kerüljön!
Klemand
73.oldal
2016
2007 május
SMS szavak
7. Kérjen be a felhasználótól egy számsort, és határozza meg, hogy melyik szó tartozhat hozzá! Amennyiben több szó is megfelelő, akkor mindegyiket írassa ki! (Teszteléshez használhatja például a 225 számsort, mivel ehhez egynél több szó tartozik a szógyűjteményben.)
8. Határozza meg, hogy a szógyűjteményben mely kódokhoz tartozik több szó is! Írassa ki a képernyőre ezeket a szavakat a kódjukkal együtt egymás mellé az alábbi mintának megfelelően (a szavak sorrendje ettől eltérhet): baj : 225; bal : 225; arc : 272; apa : 272; eb : 32; fa : 32; dal : 325; fal : 3 25; eltesz : 358379; elvesz : 358379; fojt : 3658; folt : 3658; ...
9. Határozza meg, hogy melyik kódnak megfelelő szóból van a legtöbb! Írassa ki a képernyőre a kódot, és a kódhoz tartozó összes tárolt szót! Ha több kódhoz is azonos számú szó tartozik, akkor elegendő ezen kódok közül csak az egyikkel foglalkozni.
Klemand
74.oldal
2016
2007 május
SMS szavak
package emeltinfo2007maj; import java.io.*; import java.util.*; /** * SMS szavak * * @author Klement András és Pataki Péter */ public class EmeltInfo2007maj { public static void main(String[] args) throws IOException { //1. feladat System.out.println("1. feladat"); System.out.println("----------"); System.out.print("Kérek egy betűt, és megmondom hányas számot kell hozzá megnyomni: "); String betu = beolv(); String kod = kodol(betu); System.out.println(kod); //2. feladat System.out.println(""); System.out.println("2. feladat"); System.out.println("----------"); System.out.print("Egy (ékezet nélküli) szó átalaktása gombkódokra: "); String szo = beolv(); String szokod = ""; for (int i = 1; i <= szo.length(); i++) { szokod = szokod + kodol(szo.substring(i - 1, i)); } System.out.println("A(z) " + szo + " kódja: " + szokod); //3. feladat System.out.println(""); System.out.println("3. feladat"); System.out.println("----------"); BufferedReader behoz; behoz = new BufferedReader(new FileReader("szavak.txt")); String sor; while ((sor = behoz.readLine()) != null) { szavak.add(new SzavakTipus(sor)); } // ELLENŐRZÉS System.out.println("A beolvasás ellenőrzése (utolsó 5 szó):"); for (int i = szavak.size() - 4; i <= szavak.size(); i++) { System.out.println(szavak.get(i - 1).szo + " " + szavak.get(i - 1).kod); } //4. feleadat System.out.println(""); System.out.println("4. feladat"); System.out.println("----------"); System.out.print("A leghosszabb szó: "); int hosszu = 1;
Klemand
75.oldal
2016
2007 május
SMS szavak
for (int i = 2; i <= szavak.size(); i++) { if (szavak.get(i - 1).szo.length() > szavak.get(hosszu - 1).szo.length()) { hosszu = i; } } System.out.println(szavak.get(hosszu - 1).szo); //5. feladat System.out.println(""); System.out.println("5. feladat"); System.out.println("----------"); System.out.print("Rövid szavak száma: "); int db = 0; for (int i = 1; i <= szavak.size(); i++) { if (szavak.get(i - 1).szo.length() <= 5) { db++; } } System.out.println(db); //6. feladat System.out.println(""); System.out.println("6. feladat"); System.out.println("----------"); System.out.print("Szavak kódjainak kiírása fájlba "); PrintWriter ki; ki = new PrintWriter(new FileWriter("kodok.txt")); for (int n = 1; n <= szavak.size(); n++) { szo = szavak.get(n - 1).szo; szokod = ""; for (int i = 1; i <= szo.length(); i++) { szokod = szokod + kodol(szo.substring(i - 1, i)); } szavak.get(n - 1).kod = szokod; ki.println(szokod); } ki.close(); //7. feladat System.out.println(""); System.out.println("7. feladat"); System.out.println("----------"); System.out.print("Kérek egy számsort: "); String szamsor = beolv(); for (int i = 1; i <= szavak.size(); i++) { if (szavak.get(i - 1).kod.equals(szamsor)) { System.out.print(szavak.get(i - 1).szo + " "); } } System.out.println("");
Klemand
76.oldal
2016
2007 május
SMS szavak
//8. feladat System.out.println(""); System.out.println("8. feladat"); System.out.println("----------"); System.out.print(""); for (int i = 1; i <= szavak.size(); i++) { //keresés int j = 1; while ((j <= kodok.size()) && (szavak.get(i - 1).kod.equals(kodok.get(j - 1).kod) == false)) { j++; } if (j <= kodok.size()) { kodok.get(j - 1).darab++; } else { int dbk = 1; kodok.add(new KodokTipus(szavak.get(i - 1).kod, dbk)); } } // ELLENŐRZÉS System.out.println("Ellenőrzés (utolsó 5 kód): "); for (int i = kodok.size() - 4; i <= kodok.size(); i++) { System.out.println(kodok.get(i - 1).kod + " " + kodok.get(i - 1).darab); } System.out.println(""); int dbsz = 0; for (int i = 1; i <= kodok.size(); i++) { if (kodok.get(i - 1).darab > 1) { for (int j = 1; j <= szavak.size(); j++) { if (szavak.get(j - 1).kod.equals(kodok.get(i - 1).kod)) { System.out.print(szavak.get(j - 1).szo + " : " + szavak.get(j - 1).kod + "; "); } } dbsz++; if ((dbsz % 3) == 0) { System.out.println(""); } } } System.out.println(""); //9. feladat System.out.println(""); System.out.println("9. feladat"); System.out.println("----------"); System.out.print(" "); int legtobb = 1; for (int i = 1; i <= kodok.size(); i++) { if (kodok.get(i - 1).darab > legtobb) { legtobb = i; } } for (int j = 1; j <= szavak.size(); j++) { if (szavak.get(j - 1).kod.equals(kodok.get(legtobb - 1).kod)) { System.out.print(szavak.get(j - 1).szo + " "); } } System.out.println("\n"); }
Klemand
77.oldal
2016
2007 május
SMS szavak
//************************************************************ //Beolvasás public static String beolv() throws IOException { BufferedReader olvaso; olvaso = new BufferedReader(new InputStreamReader(System.in)); String be; be = olvaso.readLine(); be = be.toLowerCase(); // nagybetűből kisbetűt csinál mindenképpen return be; //a be-t adja vissza } // Kódol public static String kodol(String betu) { switch (betu) { case "a": return "2"; case "b": return "2"; case "c": return "2"; case "d": return "3"; case "e": return "3"; case "f": return "3"; case "g": return "4"; case "h": return "4"; case "i": return "4"; case "j": return "5"; case "k": return "5"; case "l": return "5"; case "m": return "6"; case "n": return "6"; case "o": return "6"; case "p": return "7"; case "q": return "7"; case "r": return "7"; case "s": return "7"; case "t": return "8"; case "u": return "8"; case "v": return "8"; case "w": return "9"; case "x": return "9"; case "y":
Klemand
78.oldal
2016
2007 május
SMS szavak return "9"; case "z": return "9"; default: return "Rossz karakter";
} } //Tömblisták //Szavak static ArrayList<SzavakTipus> szavak = new ArrayList<>(); public static class SzavakTipus { private final String szo; private String kod; public SzavakTipus(String sor) { szo = sor; kod = "üres"; } } //Kódok static ArrayList kodok = new ArrayList<>(); public static class KodokTipus { private String kod; private int darab; public KodokTipus(String kodbe, int db) { kod = kodbe; darab = db; } } }
Klemand
79.oldal
2016
2007 május
SMS szavak
run: 1. feladat ---------Kérek egy betűt, és megmondom hányas számot kell hozzá megnyomni: x 9 2. feladat ---------Egy (ékezet nélküli) szó átalaktása gombkódokra: informatika A(z) informatika kódja: 46367628452 3. feladat ---------A beolvasás ellenőrzése (utolsó 5 szó): viszket üres vizes üres von üres zab üres zseb üres 4. feladat ---------A leghosszabb szó: megfeledkezik 5. feladat ---------Rövid szavak száma: 279 6. feladat ---------Szavak kódjainak kiírása fájlba 7. feladat ---------Kérek egy számsort: 52527 kakas kalap 8. feladat ---------Ellenőrzés (utolsó 5 kód): 8479538 1 84937 1 866 1 922 1 9732 1 apa : 272; arc : 272; baj : 225; bal : 225; dal : 325; fal : 325; eb : 32; fa : 32; eltesz : 358379; elvesz : 358379; fojt : 3658; folt : 3658; garas : 42727; harap : 42727; hasas : 42727; guba : 4822; huba : 4822; haj : 425; hal : 425; kakas : 52527; kalap : 52527; kap : 527; kar : 527; lap : 527; koma : 5662; lomb : 5662; kos : 567; lop : 567; mar : 627; nap : 627; puha : 7842; ruha : 7842; raj : 725; rak : 725; szakad : 792523; szalad : 792523; takar : 82527; vakar : 82527; tejes : 83537; teker : 83537; tesz : 8379; vesz : 8379; tettes : 838837; tetves : 838837; vaj : 825; vak : 825; 9. feladat ---------apa arc BUILD SUCCESSFUL (total time: 28 seconds) kodok.txt: 22525 2276627 23 244 244632566 …
Klemand
80.oldal
2016
2007 október
Foci
2007 október: Foci Perec város sportéletében fontos szerepet játszanak a fiatalok nagypályás labdarúgó mérkőzései. Tavasszal minden csapat minden csapattal pontosan egy mérkőzést játszott. A folyamatosan vezetett eredménylista azonban eltűnt, így csak a mérkőzések jegyzőkönyvei álltak rendelkezésre. A jegyzőkönyveket ismételten feldolgozták, ehhez első lépésként a meccs.txt állományba bejegyeztek néhány adatot. Önnek ezzel az állománnyal kell dolgoznia. A meccs.txt állomány első sorában az állományban tárolt mérkőzések száma található. Alatta minden sorban egy-egy mérkőzés adatai olvashatók. Egy mérkőzést 7 adat ír le. Az első megadja, hogy a mérkőzést melyik fordulóban játszották le. A második a hazai, a harmadik a vendégcsapat góljainak száma a mérkőzés végén, a negyedik és ötödik a félidőben elért gólokat jelöli. A hatodik szöveg a hazai csapat neve, a hetedik a vendégcsapat neve. Az egyes adatokat egyetlen szóköz választja el egymástól. A sor végén nincs szóköz. A csapatok és a fordulók száma nem haladja meg a 20, a mérkőzések száma pedig a 400 értéket. Egy csapat sem rúgott meccsenként 9 gólnál többet. A csapatok neve legfeljebb 20 karakter hosszú, a névben nincs szóköz. Például: 112 14 1 2 0 2 Agarak Ovatosak 5 4 0 1 0 Erosek Agarak 4 0 2 0 2 Ijedtek Hevesek 8 1 1 0 0 Ijedtek Nyulak 8 3 2 3 1 Lelkesek Bogarak 13 0 1 0 1 Fineszesek Csikosak 2 1 0 0 0 Pechesek Csikosak 1 4 0 2 0 Csikosak Kedvesek 9 2 0 0 0 Nyulak Lelkesek 6 0 2 0 0 Ovatosak Nyulak Az 2. sor mutatja, hogy a 14. fordulóban az otthon játszó Agarakat az Óvatosak 2-1-re megverték úgy, hogy a félidőben már vezettek 2-0-ra. Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját mentse foci néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie.) 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:). Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár!
Klemand
81.oldal
2016
2007 október
Foci
1. Olvassa be a meccs.txt állományban talált adatokat, s annak felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, az első 10 mérkőzés adatait jegyezze be a programba és dolgozzon azzal!
2. Kérje be a felhasználótól egy forduló számát, majd írja a képernyőre a bekért forduló mérkőzéseinek adatait a következő formában: Edes-Savanyu: 2-0 (1-0)! Soronként egy mérkőzést tüntessen fel! A különböző sorokban a csapatnevek ugyanazon a pozíción kezdődjenek! Például: Edes-Savanyu: 2-0 (1-0) Ijedtek-Hevesek: 0-2 (0-2) ... 3. Határozza meg, hogy a bajnokság során mely csapatoknak sikerült megfordítaniuk az állást a második félidőben! Ez azt jelenti, hogy a csapat az első félidőben vesztésre állt ugyan, de sikerült a mérkőzést megnyernie. A képernyőn soronként tüntesse fel a forduló sorszámát és a győztes csapat nevét!
4. Kérje be a felhasználótól egy csapat nevét, és tárolja el! A következő két feladat megoldásához ezt a csapatnevet használja! Ha nem tudta beolvasni, használja a Lelkesek csapatnevet!
5. Határozza meg, majd írja ki, hogy az adott csapat összesen hány gólt lőtt és hány gólt kapott! Például: lőtt: 23 kapott: 12
6. Határozza meg, hogy az adott csapat otthon melyik fordulóban kapott ki először és melyik csapattól! Ha egyszer sem kapott ki (ilyen csapat például a Bogarak), akkor „A csapat otthon veretlen maradt.” szöveget írja a képernyőre!
7. Készítsen statisztikát, amely megadja, hogy az egyes végeredmények hány alkalommal fordultak elő! Tekintse egyezőnek a fordított eredményeket (például 4-2 és 2-4)! A nagyobb számot mindig előre írja! Az elkészült listát a stat.txt állományban helyezze el! Például: 2-1: 18 darab 4-0: 2 darab 2-0: 19 darab ...
Klemand
82.oldal
2016
2007 október
Foci
package emeltinfo2007okt; import java.io.*; import java.util.*; /** * Foci * * @author Klemand */ public class EmeltInfo2007okt { 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 musor.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("meccs.txt")); String elsoSor; 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); } int n = Integer.parseInt(elsoSor.trim()); //Ha esetleg felesleges szóköz lenne a végén, levágjuk String[] daraboltSor; for (int i = 1; i <= n; i++) { daraboltSor = behozatal.readLine().split(" "); foci.add(new FociTipus(daraboltSor)); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); System.out.println("A beolvasott fájl az első sora szerint " + n + " mérkőzést tartalmaz."); System.out.println("A foci tömblista " + foci.size() + " mérkőzést tartalmaz. \n"); System.out.println("Az utolsó 3 mérkőzés: \n"); for (int i = foci.size() - 2; i <= foci.size(); i++) { System.out.println(i + ". mérkőzés adatai: forduló: " + foci.get(i - 1).fordulo); System.out.println("A hazai gólok száma: " + foci.get(i - 1).hgol); System.out.println("A vendégcsapat góljainak száma: " + foci.get(i - 1).vgol); System.out.println("A hazai gólok száma félidőben: " + foci.get(i - 1).fhgol); System.out.println("A vendégcsapat góljainak száma félidőben: " + foci.get(i - 1).fvgol); System.out.println("A hazai csapat neve: " + foci.get(i - 1).hazai); System.out.println("A vendégcsapat neve: " + foci.get(i - 1).vendeg); System.out.println(""); } System.out.println("");
Klemand
83.oldal
2016
2007 október
Foci
//2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Egy billentyűzetről bekért forduló adatai \n"); System.out.print("Kérem egy forduló sorszámát! "); System.out.println(""); int ford = Integer.parseInt(beolvas()); for (int i = 1; i <= n; i++) { if (foci.get(i - 1).fordulo == ford) { System.out.print(foci.get(i - 1).hazai + "-" + foci.get(i - 1).vendeg + ": "); System.out.print(foci.get(i - 1).hgol + "-" + foci.get(i - 1).vgol + " ("); System.out.println(foci.get(i - 1).fhgol + "-" + foci.get(i - 1).fvgol + ")"); } } System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("A második félidőben fordító cspatok: \n"); for (int i = 1; i <= n; i++) { if ((foci.get(i - 1).hgol - foci.get(i - 1).vgol) * (foci.get(i - 1).fhgol - foci.get(i - 1).fvgol) < 0) { System.out.print(foci.get(i - 1).fordulo + " "); if (foci.get(i - 1).hgol - foci.get(i - 1).vgol > 0) { System.out.println(foci.get(i - 1).hazai); } else { System.out.println(foci.get(i - 1).vendeg); } } } System.out.println(""); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Egy csapat nevének bekérése: \n"); System.out.println("Kérem egy csapat nevét!"); String csapat = beolvas(); System.out.println(""); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: "); System.out.println("A beolvasott csapat neve: " + csapat); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("A beolvasott csapat lőtt és kapott góljainak meghatározása: \n"); int lott = 0; int kapott = 0; for (int i = 1; i <= n; i++) { if (foci.get(i - 1).hazai.equals(csapat)) { lott += foci.get(i - 1).hgol; kapott += foci.get(i - 1).vgol; } if (foci.get(i - 1).vendeg.equals(csapat)) { lott += foci.get(i - 1).vgol; kapott += foci.get(i - 1).hgol; } } System.out.println(csapat + " lőtt: " + lott + " kapott: " + kapott); System.out.println("");
Klemand
84.oldal
2016
2007 október
Foci
//6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A beolvasott csapat kitől kapott ki először otthon? \n"); //Nem elég a tömlistában az első hazai vereség megkeresése, mert nincs fordulók szerint rendezve! int mikor = 1000; //irreálisan nagy fordulószám megadása kezdőértéknek int sorszam = 0; for (int i = 1; i <= n; i++) { if (foci.get(i - 1).hazai.equals(csapat) && (foci.get(i - 1).hgol - foci.get(i - 1).vgol) < 0) { if (foci.get(i - 1).fordulo < mikor) { mikor = foci.get(i - 1).fordulo; sorszam = i; } } } if (mikor < 1000) { System.out.println("Forduló: " + foci.get(sorszam - 1).fordulo + " " + foci.get(sorszam - 1).vendeg); } else { System.out.println("A csapat otthon veretlen maradt."); } System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A végeredmények statisztikája: \n"); //Az eredmények felvétele a foci tömblistába for (int i = 1; i <= n; i++) { foci.get(i - 1).eredmeny = eredmenyMeghat(foci.get(i - 1).hgol, foci.get(i - 1).vgol); } for (int i = 1; i <= n; i++) { int j = 1; while ((j <= eredmenyek.size()) && !(foci.get(i - 1).eredmeny.equals(eredmenyek.get(j - 1).eredmeny))) { j++; } if (j <= eredmenyek.size()) { eredmenyek.get(j - 1).darab++; } else { eredmenyek.add(new EredmenyekTipus(foci.get(i - 1).eredmeny, 1)); } } // ELLENŐRZÉS System.out.println("Ellenőrzés: "); for (int i = 1; i <= eredmenyek.size(); i++) { System.out.println(eredmenyek.get(i - 1).eredmeny + ": " + eredmenyek.get(i - 1).darab + " darab"); } System.out.println(""); //A statisztika fájlba írása PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("stat.txt")); for (int i = 1; i <= eredmenyek.size(); i++) { kivitel.println(eredmenyek.get(i - 1).eredmeny + ": " + eredmenyek.get(i - 1).darab + " darab");
Klemand
85.oldal
2016
2007 október
Foci
} kivitel.close(); System.out.println("A stat.txt fájl kiírása befejeződött. \n"); } //************************************************************ //A tömblista konstruktora static ArrayList foci = new ArrayList<>(); public static class FociTipus { private private private private private private private private
final int fordulo; final int hgol; final int vgol; final int fhgol; final int fvgol; final String hazai; final String vendeg; String eredmeny;
public FociTipus(String[] fociBe) //konstruktor { fordulo = Integer.parseInt(fociBe[0]); hgol = Integer.parseInt(fociBe[1]); vgol = Integer.parseInt(fociBe[2]); fhgol = Integer.parseInt(fociBe[3]); fvgol = Integer.parseInt(fociBe[4]); hazai = fociBe[5]; vendeg = fociBe[6]; eredmeny = ""; } } public static String beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine(); } public static String eredmenyMeghat(int hgol, int vgol) { String er = ""; return er + Math.max(hgol, vgol) + "-" + Math.min(hgol, vgol); } static ArrayList<EredmenyekTipus> eredmenyek = new ArrayList<>(); public static class EredmenyekTipus { private String eredmeny; private int darab; public EredmenyekTipus(String eredm, int db) { eredmeny = eredm; darab = db; } } }
Klemand
86.oldal
2016
2007 október
Foci
run: Az 1. feladat megoldása Az adatok beolvasása az musor.txt fájlból A beolvasás ellenőrzése: A beolvasott fájl az első sora szerint 112 mérkőzést tartalmaz. A műsor tömblistája 112 mérkőzést tartalmaz. Az utolsó 3 mérkőzés: 110. mérkőzés adatai: forduló: 4 A hazai gólok száma: 2 A vendégcsapat góljainak száma: 2 A hazai gólok száma félidőben: 0 A vendégcsapat góljainak száma félidőben: 2 A hazai csapat neve: Pechesek A vendégcsapat neve: Bogarak 111. mérkőzés adatai: forduló: 8 A hazai gólok száma: 3 A vendégcsapat góljainak száma: 1 A hazai gólok száma félidőben: 3 A vendégcsapat góljainak száma félidőben: 1 A hazai csapat neve: Erosek A vendégcsapat neve: Hevesek 112. mérkőzés adatai: forduló: 12 A hazai gólok száma: 2 A vendégcsapat góljainak száma: 0 A hazai gólok száma félidőben: 0 A vendégcsapat góljainak száma félidőben: 0 A hazai csapat neve: Hevesek A vendégcsapat neve: Fineszesek
A 2. feladat megoldása Egy billentyűzetről bekért forduló adatai Kérem egy forduló sorszámát! 10 Gyoztesek-Csikosak: 2-4 (0-2) Darabosak-Nyulak: 1-0 (0-0) Agarak-Bogarak: 0-0 (0-0) Lelkesek-Kedvesek: 1-0 (0-0) Hevesek-Jelmezesek: 1-0 (0-0) Erosek-Fineszesek: 1-1 (1-1) Mereszek-Ovatosak: 0-0 (0-0) Ijedtek-Pechesek: 2-0 (0-0) A 3. feladat megoldása A második félidőben fordító cspatok: 8 Jelmezesek 7 Bogarak 11 Ijedtek 14 Kedvesek 7 Lelkesek A 4. feladat megoldása Egy csapat nevének bekérése: Kérem egy csapat nevét! Hevesek
Klemand
87.oldal
2016
2007 október
Foci
A beolvasás ellenőrzése: A beolvasott csapat neve: Hevesek Az 5. feladat megoldása A beolvasott csapat lőtt és kapott góljainak meghatározása: Hevesek lőtt: 20 kapott: 15 A 6. feladat megoldása A beolvasott csapat kitől kapott ki először otthon? Forduló: 1 Pechesek A 7. feladat megoldása A végeredmények statisztikája: Ellenőrzés: 2-1: 18 darab 4-0: 2 darab 2-0: 19 darab 1-1: 5 darab 3-2: 5 darab 1-0: 26 darab 3-1: 10 darab 4-2: 2 darab 3-0: 3 darab 4-3: 2 darab 0-0: 7 darab 3-3: 1 darab 2-2: 8 darab 4-1: 3 darab 5-1: 1 darab A stat.txt fájl kiírása befejeződött. BUILD SUCCESSFUL (total time: 19 seconds) stat.txt: 2-1: 4-0: 2-0: 1-1: 3-2: 1-0: 3-1: 4-2: 3-0: 4-3: 0-0: 3-3: 2-2: 4-1: 5-1:
18 darab 2 darab 19 darab 5 darab 5 darab 26 darab 10 darab 2 darab 3 darab 2 darab 7 darab 1 darab 8 darab 3 darab 1 darab
Klemand
88.oldal
2016
2008 május
SMS
2008 május: SMS Esemes Ernő szenvedélyes SMS-küldő, ezért a MaMobil nevű cég tesztelésre kérte fel. Ehhez egy új, kézreálló telefont adnak, amelynek tesztüzemben egyetlen hátránya, hogy legfeljebb az először érkező 10 darab, egyenként legfeljebb 100 karakteres üzenetet tud eltárolni. Ha ettől több üzenet van, akkor azokat korlátlan számban a szolgáltató őrzi meg a hangpostához hasonlóan, tehát azokhoz csak bizonyos díj fejében juthat hozzá. Az üzenetek nem tartalmazhatnak ékezetes karaktereket. Az sms.txt állomány első sorában az a k szám olvasható, amely megadja, hogy hány üzenet érkezett a készülékre a mai napon. Az érkező üzenetek száma legalább egy, de nem haladja meg a 100 darabot. Minden üzenethez 2 sor tartozik. Az első sor szerkezete a következő: először az érkezés órája (szám), érkezés perce (szám), telefonszám (pontosan 9 jegyű szám), a másodikban pedig az üzenet (legfeljebb 100 karakternyi szöveg) található. Az állományban az üzenetek számát követően k×2 sor szerepel. Az üzenetek érkezési idő szerint növekvően rendezettek. Például: 30 9 11 123456789 Szia, mikor jossz? 9 13 434324223 Nem kerek ebedet! 9 14 434324223 Hova menjek erted? 9 20 123456789 Hozd el a mintas pulcsimat! 9 21 434324223 Nyertünk a palyazaton! … Készítsen programot sms néven, amely az alábbi kérdésekre válaszol! Ügyeljen arra, hogy a program forráskódját a megadott helyre mentse! 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: )
1. Olvassa be az sms.txt állományban talált adatokat, s annak felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, akkor a benne található adatok közül az első tíz üzenet adatait jegyezze be a programba, s úgy oldja meg a feladatokat!
2. A fájlban tárolt utolsó üzenet érkezésekor melyik üzenet a legfrissebb a telefon memóriájában? Írja az üzenet szövegét a képernyőre!
3. Adja meg a leghosszabb és a legrövidebb üzenetek adatait! Ha több azonos hosszúságú üzenet van, akkor elegendő csak egyet-egyet megadnia! A képernyőn óra, perc, telefonszám, üzenet formában jelenítse meg az adatokat!
Klemand
89.oldal
2016
2008 május
SMS
4. Készítsen karakterhossz szerinti statisztikát: 1-20, 21-40, 41-60, 61-80, 81-100! Az intervallumok mellé a hozzájuk tartozó üzenetek darabszámát írja, mint eredményt a képernyőre!
5. Ha Ernő minden óra 0. percében elolvasná a memóriában lévő üzeneteket (az éppen ekkor érkező üzeneteket nem látja), majd ki is törölné, akkor hány olyan üzenet lenne, amelynek elolvasásához fel kellene hívnia a szolgáltatót? Írja ezt a számot a képernyőre! (Az üzeneteket először 1, utoljára 24 órakor olvassa el.)
6. Ernő barátnője gyakran küld sms-t az 123456789-es számról. Mennyi volt a leghosszabb idő, amennyi eltelt két üzenete között? Ha legfeljebb 1 üzenet érkezett tőle, akkor írja ki, hogy „nincs elegendő üzenet”, egyébként pedig adja meg a leghosszabb időtartamot óra perc alakban!
7. Egy üzenet véletlenül késett. Olvassa be a billentyűzetről ennek az sms-nek az adatait, majd tárolja el a memóriában a többihez hasonlóan!
8. Az smski.txt állományban készítsen egy listát az üzenetekről telefonszám szerinti csoportosításban, telefonszám szerint növekvő sorrendben! Egy csoporthoz tartozó első sorban a feladó telefonszáma szerepeljen! Az alatta lévő sorokban a feladás ideje, majd a tőle újabb szóközzel elválasztva az üzenet szövege szerepeljen!
Klemand
90.oldal
2016
2008 május
SMS
package emeltinfo2008maj; import java.io.*; import java.util.*; /** * SMS * * @author Klemand */ public class EmeltInfo2008maj { 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 sms.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("sms.txt")); String elsoSor; 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); } int n = Integer.parseInt(elsoSor.trim()); //Ha esetleg felesleges szóköz lenne a végén, levágjuk int i, j; String[] daraboltSor; String sor; for (i = 1; i <= n; i++) { daraboltSor = behozatal.readLine().split(" "); sor = behozatal.readLine(); sms.add(new SmsTipus(daraboltSor, sor)); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); System.out.println("A beolvasott fájl az első sora szerint " + n + " SMS-t tartalmaz."); System.out.println("Az sms tömblista " + sms.size() + " SMS-t tartalmaz. \n"); System.out.println("Az utolsó 3 SMS: \n"); for (i = sms.size() - 2; i <= sms.size(); i++) { System.out.println(i + ". SMS adatai: óra: " + sms.get(i - 1).ora); System.out.println("Perc: " + sms.get(i - 1).perc); System.out.println("Telefonszám: " + sms.get(i - 1).telszam); System.out.println("Üzenet: " + sms.get(i - 1).uzenet); System.out.println(""); } System.out.println("");
Klemand
91.oldal
2016
2008 május
SMS
//2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Az utolsó üzenet érkezésekor a legfrissebb üzenet a memóriában: \n"); int KAPACITAS = 10; if (sms.size() < KAPACITAS) { System.out.println(sms.get(sms.size() - 1).uzenet); } else { System.out.println(sms.get(KAPACITAS - 1).uzenet); } System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("A leghosszabb és a legrövidebb üzenet: \n"); int lh = 1; int lr = 1; for (i = 1; i <= sms.size(); i++) { if (sms.get(i - 1).uzenet.length() > sms.get(lh - 1).uzenet.length()) lh = i; } if (sms.get(i - 1).uzenet.length() < sms.get(lr - 1).uzenet.length()) lr = i; } } System.out.println("A leghosszabb üzenet adatai: "); System.out.println(sms.get(lh - 1).ora + " óra " + sms.get(lh - 1).perc + System.out.println("telefonszám: " + sms.get(lh - 1).telszam + ", üzenet: + sms.get(lh - 1).uzenet); System.out.println(""); System.out.println("A legrövidebb üzenet adatai: "); System.out.println(sms.get(lr - 1).ora + " óra " + sms.get(lr - 1).perc + System.out.println("telefonszám: " + sms.get(lr - 1).telszam + ", üzenet: + sms.get(lr - 1).uzenet); System.out.println("");
{
{
" perckor: "); "
" perckor: "); "
//4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Karakterhossz szerinti statisztika: \n"); int int int int int
db1 = 0; db21 = 0; db41 = 0; db61 = 0; db81 = 0;
for (i = 1; i <= sms.size(); i++) { if (sms.get(i - 1).uzenet.length() > 80) { db81++; } else if (sms.get(i - 1).uzenet.length() > 60) { db61++; } else if (sms.get(i - 1).uzenet.length() > 40) { db41++; } else if (sms.get(i - 1).uzenet.length() > 20) { db21++; } else { db1++; }
Klemand
92.oldal
2016
2008 május
SMS
} System.out.println(" 1 - 20: System.out.println("21 - 40: System.out.println("41 - 60: System.out.println("61 - 80: System.out.println("81 -100: System.out.println("");
" " " " "
+ + + + +
db1); db21); db41); db61); db81);
//5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Törlés minden órában: \n"); //1. megoldás System.out.println("Első megoldás: számlálás óráról órára while ciklussal \n"); int int int i =
szolgDb1 = 0; oraDb = 0; ora = 1; 1;
while (i <= sms.size() && ora <= 24) { while (i <= sms.size() && (sms.get(i - 1).ora == ora - 1)) { //mindig az előzó órát vizsgáljuk oraDb++; i++; } if (oraDb > KAPACITAS) { szolgDb1 += (oraDb - KAPACITAS); } ora++; oraDb = 0; //minden órában töröljük az SMS-eket } System.out.println("A szolgáltatónál maradó üzenetek száma: " + szolgDb1); System.out.println(""); //Második megoldás System.out.println("Második megoldás: számlálás az sms-ek feladási óráival indexelt vektorban \n"); int[] orakDb = new int[24]; for (i = 1; i <= sms.size(); i++) { orakDb[sms.get(i - 1).ora]++; } int szolgDb2 = 0; for (i = 1; i <= 24; i++) { // System.out.println(i-1 + "-tól " + i + "-ig " + orakDb[i-1] + " darab"); if (orakDb[i - 1] > 10) { szolgDb2 += orakDb[i - 1] - 10; } } System.out.println("A szolgáltatónál maradó üzenetek száma: " + szolgDb2); System.out.println("");
Klemand
93.oldal
2016
2008 május
SMS
//6. feladat System.out.println("A 6. feladat megoldása"); System.out.print("A leghosszabb idő, amíg Ernőt békén hagyta a barátnője: \n"); int leghosszabb = -1; //irreális kezdőértékek int elozo; int hossz = -1; i = 1; while ((i <= sms.size()) && (sms.get(i - 1).telszam != 123456789)) { i++; } if (i <= sms.size()) { elozo = sms.get(i - 1).ora * 60 + sms.get(i - 1).perc; for (j = i + 1; j <= sms.size(); j++) { if (sms.get(j - 1).telszam == 123456789) { hossz = (sms.get(j - 1).ora * 60 + sms.get(j - 1).perc) - elozo; if (hossz > leghosszabb) { leghosszabb = hossz; } elozo = sms.get(j - 1).ora * 60 + sms.get(j - 1).perc; } } if (hossz == -1) { System.out.println("Nincs elegendő üzenet."); } else { System.out.println((int) leghosszabb / 60 + " óra " + leghosszabb % 60 + " perc "); } System.out.println(""); } else { System.out.println("Nincs elegendő üzenet."); } //7. feladat System.out.println("A 7. feladat megoldása"); System.out.print("Egy elkallódott SMS beolvasása a billentyűzetről "); System.out.println("és hozzáadása a tömblistához \n"); System.out.println("Kérem az SMS adatait!"); System.out.print("Add meg az órát, a precet és a telefonszámot szóközökkel elválasztva!"); daraboltSor = beolvas().trim().split("\\s+"); System.out.print("Add meg az üzenetet! "); sor = beolvas().trim(); sms.add(new SmsTipus(daraboltSor, sor)); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); System.out.println("Az sms tömblista eredetileg " + n + " SMS-t tartalmazott. \n"); System.out.println("Most " + sms.size() + " SMS-t tartalmaz. \n"); System.out.println("Az utolsó 3 SMS: \n"); for (i = sms.size() - 2; i <= sms.size(); i++) { System.out.println(i + ". SMS adatai: óra: " + sms.get(i - 1).ora); System.out.println("Perc: " + sms.get(i - 1).perc); System.out.println("Telefonszám: " + sms.get(i - 1).telszam); System.out.println("Üzenet: " + sms.get(i - 1).uzenet); System.out.println(""); } System.out.println("");
Klemand
94.oldal
2016
2008 május
SMS
//8. feladat System.out.println("A 8. feladat megoldása"); System.out.print("Lista az üzenetekről telefonszám szerinti csoportosításban "); System.out.println("az smski.txt állományban \n"); /*A lista rendezése telefonszám szerint A minimumkiválasztásos rendezés nem őrzi meg az időpont szerinti alrendezést! Ilyenkor célszerű beillesztéses rendezést alkalmazni: */ SmsTipus asztal; for (i = 2; i <= sms.size(); i++) { j = i - 1; while (j >= 1 && (sms.get(j - 1).telszam > sms.get(j).telszam)) { asztal = sms.get(j - 1); sms.set(j - 1, sms.get(j)); sms.set(j, asztal); j--; } } //Ellenőrzés System.out.println("A rendezés ellenőrzése: \n"); System.out.println("Az sms tömblista " + sms.size() + " SMS-t tartalmaz. \n"); int telszam = -1; //irreális kezdőérték for (i = 1; i <= sms.size(); i++) { if (sms.get(i - 1).telszam != telszam) { System.out.println(sms.get(i - 1).telszam); telszam = sms.get(i - 1).telszam; } System.out.println(" " + sms.get(i - 1).ora + " " + sms.get(i - 1).perc + " " + sms.get(i - 1).uzenet); } System.out.println(""); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("smski.txt")); telszam = -1; //irreális kezdőérték for (i = 1; i <= sms.size(); i++) { if (sms.get(i - 1).telszam != telszam) { kivitel.println(sms.get(i - 1).telszam); telszam = sms.get(i - 1).telszam; } kivitel.println(" " + sms.get(i - 1).ora + " " + sms.get(i - 1).perc + " " + sms.get(i - 1).uzenet); } kivitel.close(); System.out.println("Az smski.txt fájl kiírása befejeződött. \n"); } //************************************************************
Klemand
95.oldal
2016
2008 május
SMS
//A tömblista konstruktora static ArrayList<SmsTipus> sms = new ArrayList<>(); public static class SmsTipus { private private private private
final final final final
int ora; int perc; int telszam; String uzenet;
public SmsTipus(String[] smsBe, String uzBe) //konstruktor { ora = Integer.parseInt(smsBe[0]); perc = Integer.parseInt(smsBe[1]); telszam = Integer.parseInt(smsBe[2]); uzenet = uzBe; } } public static String beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine(); } }
Klemand
96.oldal
2016
2008 május
SMS
run: Az 1. feladat megoldása Az adatok beolvasása az .txt fájlból A beolvasás ellenőrzése: A beolvasott fájl az első sora szerint 30 SMS-t tartalmaz. Az sms tömblista 30 SMS-t tartalmaz. Az utolsó 3 SMS: 28. SMS adatai: óra: 12 Perc: 3 Telefonszám: 434324223 Üzenet: Lesz egy londoni ut, erdekel? 29. SMS adatai: óra: 12 Perc: 44 Telefonszám: 854655455 Üzenet: Hany napra kersz szallast? 30. SMS adatai: óra: 12 Perc: 48 Telefonszám: 123456789 Üzenet: A szinhaz ugrott, csotores van!
A 2. feladat megoldása Az utolsó üzenet érkezésekor a legfrissebb üzenet a memóriában: Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb! A 3. feladat megoldása A leghosszabb és a legrövidebb üzenet: A leghosszabb üzenet adatai: 9 óra 40 perckor: telefonszám: 434325432, üzenet: A nyelvvizsgadra mennyi potlekot kapsz? Nekem meg nem fizettek egy fillert sem. :-( A legrövidebb üzenet adatai: 11 óra 36 perckor: telefonszám: 434324223, üzenet: Kesz a kocsi! A 4. feladat megoldása Karakterhossz szerinti statisztika: 1 21 41 61 81
- 20: - 40: - 60: - 80: -100:
5 17 2 5 1
Az 5. feladat megoldása Törlés minden órában: Első megoldás: számlálás óráról órára while ciklussal A szolgáltatónál maradó üzenetek száma: 3 Második megoldás: számlálás az sms-ek feladási óráival indexelt vektorban A szolgáltatónál maradó üzenetek száma: 3
Klemand
97.oldal
2016
2008 május
SMS
A 6. feladat megoldása A leghosszabb idő, amíg Ernőt békén hagyta a barátnője: 1 óra 27 perc A 7. feladat megoldása Egy elkallódott SMS beolvasása a billentyűzetről és hozzáadása a tömblistához Kérem az SMS adatait! Add meg az órát, a precet és a telefonszámot szóközökkel elválasztva!2 30 123456780 Add meg az üzenetet! A különc műlábú gépírónő üzeni, hogy jól jelentek meg az ékezetes betűk a tegnapi SMS-edben. A beolvasás ellenőrzése: Az sms tömblista eredetileg 30 SMS-t tartalmazott. Most 31 SMS-t tartalmaz. Az utolsó 3 SMS: 29. SMS adatai: óra: 12 Perc: 44 Telefonszám: 854655455 Üzenet: Hany napra kersz szallast? 30. SMS adatai: óra: 12 Perc: 48 Telefonszám: 123456789 Üzenet: A szinhaz ugrott, csotores van! 31. SMS adatai: óra: 2 Perc: 30 Telefonszám: 123456780 Üzenet: A különc műlábú gépírónő üzeni, hogy jól jelentek meg az ékezetes betűk a tegnapi SMS-edben. A 8. feladat megoldása Lista az üzenetekről telefonszám szerinti csoportosításban az smski.txt állományban A rendezés ellenőrzése: Az sms tömblista 31 SMS-t tartalmaz. 123456780 3 30 A különc műlábú gépírónő üzeni, hogy jól jelentek meg az ékezetes betűk a tegnapi SMS-edben. 123456789 9 11 Szia, mikor jossz? 9 20 Hozd el a mintas pulcsimat! 10 8 Hol vagy mar olyan sokaig? Varlak! 11 14 Este szinhazba megyunk, ugye tudod? 11 21 Holnap jonnek Agiek! 12 48 A szinhaz ugrott, csotores van! 231287556 10 25 Tibi megjott, majd hivd fel delben! 343567452 9 16 Nem erek oda idoben. Hivd fel a fonokot es ments ki! 434324223 9 13 Nem kerek ebedet! 9 14 Hova menjek erted? 9 21 Nyertunk a palyazaton! 9 45 A gep nem bootol be. Aramot kap, de a monitoron nem jelenik meg semmi. 9 53 Elvesztetted a fogadast! :-) 11 22 Utalhatod a penzt a lakasert! 11 36 Kesz a kocsi! 11 50 No mi van, akarsz focizni?
Klemand
98.oldal
2016
2008 május
SMS
12 3 Lesz egy londoni ut, erdekel? 434325432 9 40 A nyelvvizsgadra mennyi potlekot kapsz? Nekem meg nem fizettek egy fillert sem. :-( 434325632 9 46 Hova tetted a palyazati urlapot? Mar fel oraja keressuk. 435435345 11 19 A megrendelt konyve megerkezett. 454343545 10 12 Add fel postan meg ma a palyazatot! 545345345 11 3 Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb! 545432542 9 51 Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb! 545453345 11 1 Potyara jottem, az ugyfel nem volt itt. 565643244 10 44 Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb! 654647445 11 29 Erdekli Ont egy telefon? A vezetek nelkuli telefon most a legolcsobb! 853556565 11 4 Sot, az urge visszalepett. 854655455 11 11 Hova szallitsam a butort? 11 13 Mikor kezdodik a meccs? A jegyet veszed? 12 44 Hany napra kersz szallast? Az smski.txt fájl kiírása befejeződött. BUILD SUCCESSFUL (total time: 1 minute 32 seconds)
smski.txt: 123456780 3 30 A különc műlábú gépírónő kérdezi, hogy jól jelennek-e meg az ékezetes betűk az SMS-ben. 123456789 9 11 Szia, mikor jossz? 9 20 Hozd el a mintas pulcsimat! 10 8 Hol vagy mar olyan sokaig? Varlak! 11 14 Este szinhazba megyunk, ugye tudod? 11 21 Holnap jonnek Agiek! 12 48 A szinhaz ugrott, csotores van! 231287556 10 25 Tibi megjott, majd hivd fel delben! 343567452 9 16 Nem erek oda idoben. Hivd fel a fonokot es ments ki! 434324223 9 13 Nem kerek ebedet! 9 14 Hova menjek erted? 9 21 Nyertunk a palyazaton! 9 45 A gep nem bootol be. Aramot kap, de a monitoron nem jelenik meg semmi. 9 53 Elvesztetted a fogadast! :-) 11 22 Utalhatod a penzt a lakasert! 11 36 Kesz a kocsi! 11 50 No mi van, akarsz focizni? 12 3 Lesz egy londoni ut, erdekel? 434325432 9 40 A nyelvvizsgadra mennyi potlekot kapsz? Nekem meg nem fizettek egy fillert sem. :-( 434325632 9 46 Hova tetted a palyazati urlapot? Mar fel oraja keressuk. 435435345 11 19 A megrendelt konyve megerkezett. …
Klemand
99.oldal
2016
2008 október
Robot
2008 október: Robot Gáborék iskolai szakkörön robotot építenek. Már elkészítettek egy olyan változatot, amelyik sík terepen kellő pontossággal vezérelhető. A robot a memóriájába előre betáplált programok egyikét hajtja végre. A robot jelenleg csak az E, K, D, N utasításokat érti, amelyek a négy égtáj (sorrendben: észak, kelet, dél, nyugat) irányában tett 1 centiméteres elmozdulást eredményezik. A robotba táplált programokat a program.txt állományban rögzítettük. Az állomány első sorában a betáplált programok száma található, amely legfeljebb 100. Alatta soronként egy-egy program olvasható. Egy sor legfeljebb 200 karakter hosszúságú, benne az E, K, D, N karakterek mint utasítások találhatók. A sorok nem tartalmaznak szóközt. Például: program.txt 12 ENNNDKENDND ENNDDDDENDENDEEDDNNKED ... A 2. sorban az első betáplált program utasításai vannak. Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját robot néven mentse! Minden részfeladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például 2. feladat: Kérem az utasítássor sorszámát!)!
1. Olvassa be a program.txt állományban talált adatokat, s azok felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, az állomány első 10 sorának adatait jegyezze be a programba és dolgozzon azzal!
2. Kérje be egy utasítássor számát, majd írja a képernyőre, hogy: a. Egyszerűsíthető-e az utasítássorozat! Az egyszerűsíthető, illetve nem egyszerűsíthető választ írja a képernyőre! (Egy utasítássort egyszerűsíthetőnek nevezünk, ha van benne két szomszédos, ellentétes irányt kifejező utasításpár, hiszen ezek a párok elhagyhatók. Ilyen ellentétes utasításpár az ED, DE, KN, NK.)
b. Az utasítássor végrehajtását követően legkevesebb mennyi E vagy D és K vagy N utasítással lehetne a robotot a kiindulási pontba visszajuttatni! A választ a következő formában jelenítse meg: 3 lépést kell tenni az ED, 4 lépést a KN tengely mentén.
c. Annak végrehajtása során hányadik lépést követően került (légvonalban) legtávolabb a robot a kiindulási ponttól és mekkora volt ez a távolság! A távolságot a lépés sorszámát követően 3 tizedes pontossággal írja a képernyőre!
Klemand
100.oldal
2016
2008 október
Robot
3. A robot a mozgáshoz szükséges energiát egy beépített akkuból nyeri. A robot 1 centiméternyi távolság megtételéhez 1 egység, az irányváltásokhoz és az induláshoz 2 egység energiát használ. Ennek alapján az EKK utasítássor végrehajtásához 7 egység energia szükséges. A szakkörön használt teljesen feltöltött kis kapacitású akkuból 100, a nagykapacitásúból 1000 egységnyi energia nyerhető ki. Adja meg azon utasítássorokat, amelyek végrehajtásához a teljesen feltöltött kis kapacitású akku is elegendő! Írja a képernyőre egymástól szóközzel elválasztva az utasítássor sorszámát és a szükséges energia mennyiségét! Minden érintett utasítássor külön sorba kerüljön!
4. Gáborék továbbfejlesztették az utasításokat értelmező programot. Az új, jelenleg még tesztelés alatt álló változatban a több, változatlan irányban tett elmozdulást helyettesítjük az adott irányban tett elmozdulások számával és az irány betűjével. Tehát például a DDDKDD utasítássor leírható rövidített 3DK2D formában is. Az önállóan álló utasításnál az 1-es számot nem szabad kiírni! Hozza létre az ujprog.txt állományt, amely a program.txt állományban foglalt utasítássorozatokat az új formára alakítja úgy, hogy az egymást követő azonos utasításokat minden esetben a rövidített alakra cseréli! Az ujprog.txt állományba soronként egy utasítássor kerüljön, a sorok ne tartalmazzanak szóközt!
5. Sajnos a tesztek rámutattak arra, hogy a program új verziója még nem tökéletes, ezért vissza kell térni az utasítássorok leírásának régebbi változatához. Mivel a szakkörösök nagyon bíztak az új változatban, ezért néhány utasítássort már csak ennek megfelelően készítettek el. Segítsen ezeket visszaírni az eredeti formára! Az ismétlődések száma legfeljebb 200 lehet! Kérjen be egy új formátumú utasítássort, majd írja a képernyőre régi formában!
Klemand
101.oldal
2016
2008 október
Robot
package emeltinfo2008okt; import java.io.*; /** * Robot * * @author Klemand */ public class EmeltInfo2008okt { 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 program.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("program.txt")); String elsoSor; 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); } int n = Integer.parseInt(elsoSor.trim()); //Ha esetleg felesleges szóköz lenne a végén, levágjuk String[] program = new String[n]; int i, j; for (i = 1; i <= n; i++) { program[i - 1] = behozatal.readLine(); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: "); System.out.println("A beolvasott fájl az első sora szerint " + n + " programot tartalmaz."); System.out.println("Az első 3 program: \n"); for (i = 1; i <= 3; i++) { System.out.println(i + ". program: " + program[i - 1]); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.print("Kérlek, add meg egy program sorszámát! "); int ssz = Integer.parseInt(beolvas().trim()); System.out.println("");
Klemand
102.oldal
2016
2008 október
Robot
//2. a. feladat System.out.println("A 2. a. feladat megoldása"); System.out.println("Egyszerűsíthető-e az utasítássorozat? "); int hossz = program[ssz - 1].length(); i = 1; while (i <= hossz - 1 && !joParos(program[ssz - 1].substring(i - 1, i + 1))) { i++; } if (i <= hossz - 1) { System.out.println("A program egyszerűsíthető."); } else { System.out.println("A program nem egyszerűsíthető."); } System.out.println(""); System.out.println("Másik megoldás: "); if ((program[ssz - 1].contains("ED")) || (program[ssz - 1].contains("DE")) || (program[ssz - 1].contains("KN")) || (program[ssz - 1].contains("NK"))) { //contains: tartalmazás System.out.println("A program egyszerűsíthető."); } else { System.out.println("A program nem egyszerűsíthető."); } System.out.println(""); //2. b. és c. feladat System.out.println("A 2. b. és c. feladat megoldása \n"); System.out.print("Visszaút : "); String irany; int eszakDb = 0; int delDb = 0; int keletDb = 0; int nyugatDb = 0; double maxTav = 0; double aktTav; for (i = 1; i <= hossz; i++) { irany = program[ssz - 1].substring(i - 1, i); switch (irany) { case "E": { eszakDb++; break; } case "D": { delDb++; break; } case "K": { keletDb++; break; } case "N": { nyugatDb++; break; }
Klemand
103.oldal
2016
2008 október
Robot
default: } aktTav = Math.sqrt(Math.pow(eszakDb - delDb, 2) + Math.pow(keletDb - nyugatDb, 2)); if (aktTav > maxTav) { maxTav = aktTav; } } System.out.println(Math.abs(eszakDb - delDb) + " lépést kell tenni ED, és " + Math.abs(keletDb - nyugatDb) + " lépést kell tenni KN irányban."); System.out.println(""); System.out.printf("A legnagyobb távolság : %.3f", maxTav); System.out.println(" cm. \n"); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.print("A következő programok végrehajtásához elegendő a kis akku: \n"); int energiaSzuks; for (i = 1; i <= n; i++) { energiaSzuks = energiaSzuksMeghat(program[i - 1]); if (energiaSzuks < 100) { System.out.println(i + ". program energiaszükséglete " + energiaSzuks); } } System.out.println(""); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Az új programok kiírása a ujprog.txt állományba \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("ujprog.txt")); for (i = 1; i <= n; i++) { kivitel.println(ujProgramMeghat(program[i - 1])); } kivitel.close(); System.out.println("Az ujprog.txt fájl kiírása befejeződött. \n"); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Billentyűzetről bekért új program visszaalakítása \n"); String ujProgram; System.out.println("Kérlek, add meg az új programot (max. 200 ismétlődéssel) !"); ujProgram = beolvas().trim().toUpperCase(); System.out.println("Régi alakja: " + visszaalakitas(ujProgram)); System.out.println(""); } //************************************************************ public static String beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine(); }
Klemand
104.oldal
2016
2008 október
Robot
public static boolean joParos(String paros) { return (paros.equals("ED") || paros.equals("DE") || paros.equals("KN") || paros.equals("NK")); } public static int energiaSzuksMeghat(String program) { int energia = 3; //indulás és első lépés for (int j = 2; j <= program.length(); j++) { energia++; if ((program.substring(j - 1, j).equals(program.substring(j - 2, j - 1)) == false)) { energia += 2; } } return energia; } public static String ujProgramMeghat(String program) { String ujpr = ""; String irany; int db; int k = 1; while (k <= program.length()) { irany = program.substring(k - 1, k); db = 1; k++; while (k <= program.length() && program.substring(k - 1, k).equals(irany)) { db++; k++; } if (db > 1) { ujpr += (db + irany); } else { ujpr += irany; } } return ujpr; }
Klemand
105.oldal
2016
2008 október
Robot
public static String visszaalakitas(String ujpr) { String regipr = ""; String szam; int szamErtek; int k = 1; while (k <= ujpr.length()) { while (k <= ujpr.length() && egtajE(ujpr.substring(k - 1, k))) { regipr += ujpr.substring(k - 1, k); k++; } szam = ""; while (k <= ujpr.length() && szamjegyE(ujpr.substring(k - 1, k))) { szam += ujpr.substring(k - 1, k); k++; } if (k <= ujpr.length() && !szam.equals("")) { szamErtek = Math.min(Integer.parseInt(szam), 200); //A feltétel szerint 200-nál nagyobb számot nem engedünk meg if (egtajE(ujpr.substring(k - 1, k))) { //Ha a szám után nem égtáj következik, akkor csak átlépünk rajtuk for (int m = 1; m <= szamErtek; m++) { regipr += ujpr.substring(k - 1, k); } } } /*Ide kétféleképpen érkezhettünk: 1. Ha a főciklusban vizsgált betű nem égtáj és nem is számjegy, akkor csak átlépünk rajta 2. Az előző léptetés a szám utáni betűre történt, most tovább kell lépnünk */ k++; } return regipr; } public static boolean egtajE(String betu) { return (betu.equals("E") || betu.equals("D") || betu.equals("K") || betu.equals("N")); } public static boolean szamjegyE(String betu) { char karakter = betu.charAt(0); return (karakter >= '0' && karakter <= '9'); } }
Klemand
106.oldal
2016
2008 október
Robot
run: Az 1. feladat megoldása Az adatok beolvasása a program.txt fájlból A beolvasás ellenőrzése: A beolvasott fájl az első sora szerint 13 programot tartalmaz. Az első 3 program: 1. program: ENNNDKENDND 2. program: ENNDDDDENDENDEEDDNNKED 3. program: EKDNEKDNEKDNEKDNEKDNEKDNEKDN A 2. feladat megoldása Kérlek, add meg egy program sorszámát! 3 A 2. a. feladat megoldása Egyszerűsíthető-e az utasítássorozat? A program nem egyszerűsíthető. Másik megoldás: A program nem egyszerűsíthető. A 2. b. és c. feladat megoldása Visszaút : 0 lépést kell tenni ED, és 0 lépést kell tenni KN irányban. A legnagyobb távolság : 1,414 cm. A 3. feladat megoldása A következő programok végrehajtásához elegendő a kis akku: 1. program energiaszükséglete 29 2. program energiaszükséglete 52 3. program energiaszükséglete 84 A 4. feladat megoldása Az új programok kiírása a ujprog.txt állományba Az smski.txt fájl kiírása befejeződött. Az 5. feladat megoldása Billentyűzetről bekért új program visszaalakítása Kérlek, add meg az új programot (max. 200 ismétlődéssel) ! d5ekn2d14ned4ke Régi alakja: DEEEEEKNDDNNNNNNNNNNNNNNEDKKKKE BUILD SUCCESSFUL (total time: 1 minute 0 seconds)
ujprog.txt: E3NDKENDND E2N4DENDEND2E2D2NKED EKDNEKDNEKDNEKDNEKDNEKDNEKDN …
Klemand
107.oldal
2016
2009 május
Lift
2009 május: Lift A Madárház Kft. toronyházak építésével foglalkozik. Jelenleg a Csúcs Rt. 100 szintes szerkezetkész épületén kezdték meg a belső szerelési műveleteket. Az egyes szerelőcsapatok naponta többször változtatják helyüket. Ha az új munkaterület egy másik emeleten van, akkor – a biztonsági előírások miatt – lifttel kell menniük. A házban egyetlen lift működik, amelynek igénybevételét az egyes csapatok a célszint megadásával jelezhetik. A lift az igényeket a jelzés sorrendjében szolgálja ki, és egyszerre csak egy csapatot szállít. A csapatok mozgását a 9 és 14 óra közötti intervallumban követjük nyomon. Ez az intervallum a munkaidőnek csak egy része, tehát a csapatok már dolgoznak valamelyik szinten, de 9 órakor teljesítetlen kérés nincs és a lift szabad. A lifthasználati igényeket az igeny.txt állomány tartalmazza. Első sorában a szintek száma (legfeljebb 100), a második sorban a csapatok száma (legfeljebb 50), a harmadik sorban pedig az igények száma (legfeljebb 100) olvasható. A negyedik sortól kezdve soronként egy-egy igény szerepel a jelzés sorrendjében. Egy igény hat számból áll: az első három szám az időt adja meg (óra, perc, másodpercszám sorrendben), a negyedik a csapat sorszáma, az ötödik az induló-, a hatodik a célszint sorszáma. Az egyes számokat pontosan egy szóköz választja el egymástól. Például: igeny.txt 100 10 55 9 7 11 7 6 22 9 10 30 8 18 2 9 11 0 5 12 20 … A 4. sor megmutatja, hogy 9 óra 7 perc 11 másodperckor a 7. csapat igényelt liftet, hogy a 6. szintről a 22. szintre eljusson. Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját lift néven mentse! Ügyeljen arra, hogy programjának minden helyes tartalmú bemeneti állomány esetén működnie kell! Minden részfeladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például a 2. feladat esetén: „2. feladat Kérem a lift indulási helyét!”)! A képernyőn megjelenített üzenetek esetén az ékezetmentes kiírás is elfogadott.
1. Olvassa be az igeny.txt állományban talált adatokat, s azok felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, az első 8 igényhez tartozó adatokat jegyezze be a programba és dolgozzon azzal!
2. Tudjuk, hogy a megfigyelés kezdetén a lift éppen áll. Kérje be a felhasználótól, hogy melyik szinten áll a lift, és a további részfeladatok megoldásánál ezt vegye figyelembe! Ha a beolvasást nem tudja elvégezni, használja az igény.txt fájlban az első igény induló szintjét!
Klemand
108.oldal
2016
2009 május
Lift
3. Határozza meg, hogy melyik szinten áll majd a lift az utolsó kérés teljesítését követően! Írja képernyőre a választ a következőhöz hasonló formában: „A lift a 33. szinten áll az utolsó igény teljesítése után.” !
4. Írja a képernyőre, hogy a megfigyelés kezdete és az utolsó igény teljesítése között melyik volt a legalacsonyabb és melyik a legmagasabb sorszámú szint, amelyet a lift érintett!
5. Határozza meg, hogy hányszor kellett a liftnek felfelé indulnia utassal és hányszor utas nélkül! Az eredményt jelenítse meg a képernyőn!
6. Határozza meg, hogy mely szerelőcsapatok nem vették igénybe a liftet a vizsgált intervallumban! A szerelőcsapatok sorszámát egymástól egy-egy szóközzel elválasztva írja a képernyőre!
7. Előfordul, hogy egyik vagy másik szerelőcsapat áthágja a szabályokat, és egyik szintről gyalog megy a másikra. (Ezt onnan tudhatjuk, hogy más emeleten igényli a liftet, mint ahova korábban érkezett.) Generáljon véletlenszerűen egy létező csapatsorszámot! (Ha nem jár sikerrel, dolgozzon a 3. csapattal!) Határozza meg, hogy a vizsgált időszak igényei alapján lehet-e egyértelműen bizonyítani, hogy ez a csapat vétett a szabályok ellen! Ha igen, akkor adja meg, hogy melyik két szint közötti utat tették meg gyalog, ellenkező esetben írja ki a Nem bizonyítható szabálytalanság szöveget!
8. A munkák elvégzésének adminisztrálásához minden csapatnak egy blokkoló kártyát kell használnia. A kártyára a liftben elhelyezett blokkolóóra rögzíti az emeletet, az időpontot. Ennek a készüléknek a segítségével kell megadni a munka kódszámát és az adott munkafolyamat sikerességét. A munka kódja 1 és 99 közötti egész szám lehet. A sikerességet a „befejezett” és a „befejezetlen” szavakkal lehet jelezni. Egy műszaki hiba folytán az előző feladatban vizsgált csapat kártyájára az általunk nyomon követett időszakban nem került bejegyzés. Ezért a csapatfőnöknek a műszak végén pótolnia kell a hiányzó adatokat. Az igeny.txt állomány adatait felhasználva írja a képernyőre időrendben, hogy a vizsgált időszakban milyen kérdéseket tett fel az óra, és kérje be az adott válaszokat a felhasználótól! A pótlólag feljegyzett adatokat írja a blokkol.txt állományba! A blokkol.txt állomány tartalmát az alábbi sorok mintájára alakítsa ki: Befejezés ideje: 9:23:11 Sikeresség: befejezett ----Indulási emelet: 9 Célemelet: 11 Feladatkód: 23 Befejezés ideje: 10:43:22 Sikeresség: befejezetlen ----Indulási emelet: 11 Célemelet: 6 Feladatkód: 6 …
Klemand
109.oldal
2016
2009 május
Lift
package emeltinfo2009maj; import java.io.*; import java.util.*; /** * Lift * * @author Klemand */ public class EmeltInfo2009maj { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("Az igeny.txt fájl beolvasása \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("igeny.txt")); String elsoSor; 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); } int szintDb = Integer.parseInt(elsoSor.trim()); //Ha esetleg felesleges szóköz lenne a végén, levágjuk int csapatDb = Integer.parseInt(behozatal.readLine()); int igenyDb = Integer.parseInt(behozatal.readLine()); int[][] igeny = new int[igenyDb][6]; int i, j; String[] daraboltSor; for (i = 1; i <= igenyDb; i++) { daraboltSor = behozatal.readLine().split(" "); for (j = 1; j <= 6; j++) { igeny[i - 1][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: "); System.out.println("A beolvasott fájl a harmadik sora szerint " + igenyDb + " igényt tartalmaz.\n"); System.out.println("Az utolsó 3 igény: \n"); for (i = igenyDb - 2; i <= igenyDb; i++) { System.out.println(i + ". igény beadási ideje: " + igeny[i - 1][0] + " óra " + igeny[i - 1][1] + " perc " + igeny[i - 1][2] + " mp "); System.out.println("A csapat száma: " + igeny[i - 1][3] + ", indulási szint: " + igeny[i - 1][4] + ", célszint: " + igeny[i - 1][5]); } System.out.println("");
Klemand
110.oldal
2016
2009 május
Lift
//2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A lift kezdeti helyzetének beolvasása \n"); System.out.print("Kérlek, írd be, melyik szinten áll a lift 9 órakor! "); System.out.println(""); int szint0 = egeszBevitel(1, szintDb); //A beolvasás ellenőrzése System.out.println("A lift tartózkodási helye a vizsgált időszak kezdetén: " + szint0); System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("A lift végső helyzetének meghatározása \n"); System.out.println("A lift a(z) " + igeny[igenyDb - 1][5] + ". szinten áll az utolsó igény teljesítése után. \n"); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("A lift szélső helyzeteinek meghatározása \n"); int legalacsonyabb = szint0; int legmagasabb = szint0; for (i = 1; i <= igenyDb; i++) { if (Math.min(igeny[i - 1][4], igeny[i - 1][5]) < legalacsonyabb) { legalacsonyabb = Math.min(igeny[i - 1][4], igeny[i - 1][5]); } if (Math.max(igeny[i - 1][4], igeny[i - 1][5]) > legmagasabb) { legmagasabb = Math.max(igeny[i - 1][4], igeny[i - 1][5]); } } System.out.println("A legalacsonyabb szint: " + legalacsonyabb); System.out.println("A legmagasabb szint: " + legmagasabb); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Felfelé indulások száma utassal és utas nélkül \n"); int szint = szint0; int utassal = 0; int uresen = 0; for (i = 1; i <= igenyDb; i++) { if (igeny[i - 1][4] > szint) { uresen++; } if (igeny[i - 1][5] > igeny[i - 1][4]) { utassal++; } szint = igeny[i - 1][5]; } System.out.println("A liftnek " + utassal + " esetben kellett felfelé menni utassal, "); System.out.println("és " + uresen + " esetben utas nélkül. \n ");
Klemand
111.oldal
2016
2009 május
Lift
//6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("Mely szerelőcsapatok nem vették igénybe a liftet? \n"); boolean[] csapatIgenyles = new boolean[csapatDb]; //Igénytörlés for (i = 1; i <= csapatDb; i++) { csapatIgenyles[i - 1] = false; } //Igénylés esetén igazra állítjuk az igénylő csapat igénylését for (i = 1; i <= igenyDb; i++) { csapatIgenyles[igeny[i - 1][3] - 1] = true; //csapatIgenylés[igénylő csapat száma] igazra állítódik } //Ahol hamis maradt a csapatIgénylés, azok a csapatok nem igényeltek liftet. for (i = 1; i <= csapatDb; i++) { if (csapatIgenyles[i - 1] == false) { System.out.print(i + " "); } } System.out.println("\n"); //Ellenőrzés System.out.println("Ellenőrzés: "); System.out.println("A csapatok igényléseinek száma: \n "); int[] csapatIgeny = new int[csapatDb]; //A csapatigényeket lenullázzuk for (i = 1; i <= csapatDb; i++) { csapatIgeny[i - 1] = 0; } //Számoljuk az igényléseket for (i = 1; i <= igenyDb; i++) { csapatIgeny[igeny[i - 1][3] - 1]++; } //Kiíratjuk az igénylések számát és az összigénylést int osszigeny = 0; for (i = 1; i <= csapatDb; i++) { System.out.printf("%2d", i); System.out.println(". csapat igényléseinek száma " + csapatIgeny[i - 1]); osszigeny += csapatIgeny[i - 1]; } System.out.println(""); System.out.println("Az összes igénylés száma: " + osszigeny); System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("Szabálytalankodott-e egy véletlenszerűen kiválasztott csapat? \n"); //Véletlenszám előállítás 1 és a csapatok száma között System.out.print("A véletlenszerűen kiválasztott csapat sorszáma: "); int csapat = (int) (csapatDb * Math.random()) + 1; System.out.println(csapat); System.out.println("");
Klemand
112.oldal
2016
2009 május
Lift
boolean elsoInd = true; boolean szabalytalankodott = false; //tiszta lappal indul int elozoCel = -1; //irreális kezdőérték i = 1; while (i <= igenyDb && !szabalytalankodott) { while (i <= igenyDb && (igeny[i - 1][3] != csapat)) { i++; } if (i <= igenyDb) { szabalytalankodott = !elsoInd && (igeny[i - 1][4] != elozoCel); if (szabalytalankodott) { System.out.println("Bizonyíthatóan szabálytalankodott."); System.out.println("Szabálytalan igénylés sorszáma: " + i); System.out.println("Előző célszint: " + elozoCel + ", aktuális indulási szint: " + igeny[i - 1][4]); System.out.println("Az ezek közötti utat gyalog tették meg."); } elozoCel = igeny[i - 1][5]; elsoInd = false; i++; } } if (i > igenyDb) { System.out.println("Nem bizonyítható szabálytalanság."); } System.out.println(""); //8. feladat System.out.println("A 8. feladat megoldása"); System.out.println("Blokkolás "); System.out.println("Kérem a hiányzó adatokat! \n"); String sikeresseg; int feladatkod; PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("blokkol.txt")); for (i = 1; i <= igenyDb; i++) { if (igeny[i - 1][3] == csapat) { System.out.println("Befejezés ideje: " + igeny[i - 1][0] + ":" + igeny[i - 1][1] + ":" + igeny[i - 1][2]); kivitel.println("Befejezés ideje: " + igeny[i - 1][0] + ":" + igeny[i - 1][1] + ":" + igeny[i - 1][2]); System.out.print("Kérem a munka eredményét (befejezett vagy befejezetlen): "); sikeresseg = beolvas(); kivitel.println("Sikeresség: " + sikeresseg); kivitel.println("-----"); System.out.println("Indulási emelet: " + igeny[i - 1][4]); kivitel.println("Indulási emelet: " + igeny[i - 1][4]); System.out.println("Célemelet: " + igeny[i - 1][5]); kivitel.println("Célemelet: " + igeny[i - 1][5]); System.out.print("Kérem a munka feladatkódját (1 és 99 közötti szám): "); feladatkod = egeszBevitel(1, 99); kivitel.println("Feladatkód: " + feladatkod); } } kivitel.close(); System.out.println(""); System.out.println("A blokkol.txt fájl kiírása befejeződött. \n"); } //************************************************************
Klemand
113.oldal
2016
2009 május
Lift
public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } public static String beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine(); } }
Klemand
114.oldal
2016
2009 május
Lift
run: Az 1. feladat megoldása Az igeny.txt fájl beolvasása A beolvasás ellenőrzése: A beolvasott fájl a harmadik sora szerint 83 igényt tartalmaz. Az utolsó 3 igény: 81. igény beadási ideje: 13 óra 54 perc 21 mp A csapat száma: 8, indulási szint: 17, célszint: 21 82. igény beadási ideje: 13 óra 54 perc 37 mp A csapat száma: 13, indulási szint: 27, célszint: 30 83. igény beadási ideje: 13 óra 59 perc 48 mp A csapat száma: 12, indulási szint: 5, célszint: 10 A 2. feladat megoldása A lift kezdeti helyzetének beolvasása Kérlek, írd be, melyik szinten áll a lift 9 órakor! Kérem a számot! (1 <= beírt szám <= 65) :101 Kérem a számot! (1 <= beírt szám <= 65) :2 A lift tartózkodási helye a vizsgált időszak kezdetén: 2 A 3. feladat megoldása A lift végső helyzetének meghatározása A lift a(z) 10. szinten áll az utolsó igény teljesítése után. A 4. feladat megoldása A lift szélső helyzeteinek meghatározása A legalacsonyabb szint: 2 A legmagasabb szint: 55 Az 5. feladat megoldása Felfelé indulások száma utassal és utas nélkül A liftnek 57 esetben kellett felfelé menni utassal, és 37 esetben utas nélkül. A 6. feladat megoldása Mely szerelőcsapatok nem vették igénybe a liftet? 6 9 17 23 25 Ellenőrzés: A csapatok igényléseinek száma: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
csapat csapat csapat csapat csapat csapat csapat csapat csapat csapat csapat csapat csapat csapat csapat
Klemand
igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek
száma száma száma száma száma száma száma száma száma száma száma száma száma száma száma
4 4 7 4 4 0 6 5 0 5 4 7 6 1 2
115.oldal
2016
2009 május 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
csapat csapat csapat csapat csapat csapat csapat csapat csapat csapat
Lift igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek igényléseinek
száma száma száma száma száma száma száma száma száma száma
4 0 4 4 3 3 3 0 3 0
Az összes igénylés száma: 83 A 7. feladat megoldása Szabálytalankodott-e egy véletlenszerűen kiválasztott csapat? A véletlenszerűen kiválasztott csapat sorszáma: 12 Bizonyíthatóan szabálytalankodott. Szabálytalan igénylés sorszáma: 38 Előző célszint: 26, aktuális indulási szint: 27 Az ezek közötti utat gyalog tették meg. A 8. feladat megoldása Blokkolás Kérem a hiányzó adatokat! Befejezés ideje: 9:8:19 Kérem a munka eredményét (befejezett vagy befejezetlen): befejezett Indulási emelet: 5 Célemelet: 9 Kérem a munka feladatkódját (1 és 99 közötti szám): Kérem a számot! (1 Egész számot kérek! Kérem a számot! (1 <= beírt szám <= 99) :33 Befejezés ideje: 9:38:20 Kérem a munka eredményét (befejezett vagy befejezetlen): befejezetlen Indulási emelet: 9 Célemelet: 23 Kérem a munka feladatkódját (1 és 99 közötti szám): Kérem a számot! (1 Befejezés ideje: 10:22:24 Kérem a munka eredményét (befejezett vagy befejezetlen): befejezett Indulási emelet: 23 Célemelet: 26 Kérem a munka feladatkódját (1 és 99 közötti szám): Kérem a számot! (1 Kérem a számot! (1 <= beírt szám <= 99) :55 Befejezés ideje: 11:9:41 Kérem a munka eredményét (befejezett vagy befejezetlen): befejezetlen Indulási emelet: 27 Célemelet: 33 Kérem a munka feladatkódját (1 és 99 közötti szám): Kérem a számot! (1 Befejezés ideje: 11:59:58 Kérem a munka eredményét (befejezett vagy befejezetlen): befejezetlen Indulási emelet: 33 Célemelet: 22 Kérem a munka feladatkódját (1 és 99 közötti szám): Kérem a számot! (1 Befejezés ideje: 12:56:40 Kérem a munka eredményét (befejezett vagy befejezetlen): befejezett Indulási emelet: 22 Célemelet: 11 Kérem a munka feladatkódját (1 és 99 közötti szám): Kérem a számot! (1 Befejezés ideje: 13:59:48 Kérem a munka eredményét (befejezett vagy befejezetlen): befejezetlen Indulási emelet: 5 Célemelet: 10 Kérem a munka feladatkódját (1 és 99 közötti szám): Kérem a számot! (1
Klemand
116.oldal
<= beírt szám <= 99) :x
<= beírt szám <= 99) :77
<= beírt szám <= 99) :-4
<= beírt szám <= 99) :28
<= beírt szám <= 99) :88
<= beírt szám <= 99) :99
<= beírt szám <= 99) :14
2016
2009 május
Lift
A blokkol.txt fájl kiírása befejeződött. BUILD SUCCESSFUL (total time: 2 minutes 17 seconds)
blokkol.txt: Befejezés ideje: 9:8:19 Sikeresség: befejezett ----Indulási emelet: 5 Célemelet: 9 Feladatkód: 33 Befejezés ideje: 9:38:20 Sikeresség: befejezetlen ----Indulási emelet: 9 Célemelet: 23 Feladatkód: 77 Befejezés ideje: 10:22:24 Sikeresség: befejezett ----Indulási emelet: 23 Célemelet: 26 Feladatkód: 55 Befejezés ideje: 11:9:41 Sikeresség: befejezetlen ----Indulási emelet: 27 Célemelet: 33 Feladatkód: 28 Befejezés ideje: 11:59:58 Sikeresség: befejezetlen ----Indulási emelet: 33 Célemelet: 22 Feladatkód: 88 Befejezés ideje: 12:56:40 Sikeresség: befejezett ----Indulási emelet: 22 Célemelet: 11 Feladatkód: 99 Befejezés ideje: 13:59:48 Sikeresség: befejezetlen ----Indulási emelet: 5 Célemelet: 10 Feladatkód: 14
Klemand
117.oldal
2016
2009 május idegennyelvű
Automata
2009 május idegennyelvű: Automata A Csokibolt Kft. a város több pontján üzemeltet csokoládé-automatát. Az automatákból sokféle csokoládét lehet vásárolni pénzérmék bedobásával. A vásárláshoz az 1, 2, 5, 10, 20, 50 és 100 fabatkás érmék használhatók. Egyszerre csak egyfajta csokoládé vásárolható. A vásárlás során először ki kell választani a csokoládét, majd be kell állítani a kívánt darabszámot, végül be kell dobni a pénzt. Ha a szükségesnél több pénzt dobnak be, a gép a csokoládé mellett kiadja a visszajárót is. Amennyiben az automatában már nincs a kívánt darabszámú csokoládé, vagy a bedobott összeg nem elegendő, a vásárlás meghiúsul. Az egyik automatában árult csokoládék lényeges adatait a csoki.txt állomány tartalmazza. Első sorában az automata rekeszeinek száma (legfeljebb 100) található. A második sortól kezdve soronként három szám, egy-egy rekesz adatsora olvasható. Az első szám a rekesz sorszáma, a második a rekeszben található csokoládé darabszáma, a harmadik pedig az egységára. Egy-egy rekeszben legfeljebb 100 szelet fér el, egy szelet ára legfeljebb 300 fabatka. A rekeszek sorszámozása 1-től kezdődik és folyamatos. A vásárlások adatai a vasarlas.txt állományban olvashatók. Az első sorban a vásárlások száma, legfeljebb 100 olvasható. A továbbiakban soronként 9 szám szerepel, ami egy vásárlás adatait jelenti az alábbiak szerint: az első szám a választott rekesz sorszáma, a második a kívánt darabszám, utána pedig az következik, hogy az egyes címletekből hány darabot dobtak a gépbe. Az első az 1 fabatkás, a többi növekvően szerepel mögötte, így az utolsó a 100 fabatkás. Az állományban egyetlen szám sem nagyobb 100-nál. Például: csoki.txt 23
1 23 76 2 8 111 3 0 0 … Az 3. sor megmutatja, hogy a 2. rekeszben 8 csokoládé van, amelynek darabja 111 fabatka. vasarlas.txt 19 2 3 1 1 0 1 1 0 3 2 6 0 0 0 0 0 0 7 1 2 2 0 0 0 0 0 2 … A 3. sor megmutatja, hogy a második vásárló a 2. rekeszből 6 csokoládét választott, 7 darab 100 fabatkás érmét dobott az automatába és más címletű pénzt nem. Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját automata néven mentse! Minden részfeladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például a 4. feladat esetén: „4. feladat Kérem a pénzösszeget!”)! Az ékezetmentes kiírás is elfogadott.
Klemand
118.oldal
2016
2009 május idegennyelvű
Automata
1. Olvassa be a csoki.txt és a vasarlas.txt állományban talált adatokat, s azok felhasználásával oldja meg a következő feladatokat! Ha az állományokat nem tudja beolvasni, az állományok első 8 sorának adatait jegyezze be a programba és dolgozzon azzal!
2. Milyen értékben van csokoládé az automatában? Írja képernyőre a választ a következőhöz hasonló formában: „Az automatában 24817 fabatka értékű csokoládé van.”!
3. Írja a képernyőre, hogy mely rekeszekből próbáltak csokoládét vásárolni! Minden rekesz sorszámát csak egyszer jelenítse meg! A számokat egymástól szóközzel elválasztva tüntesse fel!
4. Anna magának és barátainak összesen 7 egyforma csokoládét szeretne vásárolni. Kérje be a csokoládéra szánt pénzösszeget! Írja a képernyőre azon rekeszek sorszámát, amelyek közül választhat! A rekeszek sorszámát szóközökkel válassza el egymástól!
5. Okos Péter szeret mindenütt pontosan annyi pénzt átadni, amennyi a fizetendő összeg. Ezen túl szeret úgy fizetni, hogy a lehető legkevesebb pénzérmét, bankjegyet kelljen átadnia. Kérje be egy rekesz sorszámát és a darabszámot, majd írja ki, hogy a felhasznált pénzérmékből címletenként hány darabot kell bedobnia Péternek! Csak a felhasznált címleteket adja meg! Egy sorba egy címlet kerüljön; először a címlet értéke, majd mögötte a darabszám jelenjen meg! Nem kell vizsgálnia, hogy van-e elég csokoládé a rekeszben! A megoldás során segítségként a következő algoritmust használhatja: Keresse meg a legnagyobb címletet, amely nem haladja meg a fizetendő összeget! Ebből a címletből kell egyet használnia! A fizetendőt csökkentse a címlet értékével, majd kezdje elölről az algoritmust, ha az nem nulla! Ez az algoritmus a feladatban szereplő címletek esetén működik, de létezhet olyan címletlista, amelynél nem alkalmazható.
6. Írja a rekesz7.txt állományba, hogy hányas sorszámú vásárlások során hány darabot vettek a 7-es rekeszből! Vegye figyelembe, hogy minden sikeres vásárlással csökken a rekeszben lévő csokoládék száma! Soronként egy vásárlási próbálkozást tüntessen fel! A sor elején a vásárlási próbálkozás sorszáma jelenjen meg, tőle tabulátorral (ASCII kódja a 9-es) elválasztva pedig a vásárlás eredménye legyen olvasható! Az eredmény sikeres vásárlás esetén a darabszám. Ha nem volt megadott mennyiségnek megfelelő csokoládé, akkor a sorszám mögé a „ke vés a csoki” üzenet kerüljön! Ha a vásárló által bedobott pénzösszeg kevés, akkor a „nem volt elég pénz” szöveget írja a fájlba! Amennyiben a vásárlás több okból is meghiúsulhat, elegendő csak az egyik okot megjeleníteni.
Klemand
119.oldal
2016
2009 május idegennyelvű
Automata
package emeltinfo2009mid; import java.io.*; import java.util.*; /** * Automata * * @author Klemand */ public class EmeltInfo2009mid { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("A fájlok beolvasása \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("csoki.txt")); String elsoSor; 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); } int rekeszDb = Integer.parseInt(elsoSor.trim()); //Ha esetleg felesleges szóköz lenne a végén, levágjuk int[][] csoki = new int[rekeszDb][3]; int i, j; String[] daraboltSor; for (i = 1; i <= rekeszDb; i++) { daraboltSor = behozatal.readLine().split(" "); for (j = 1; j <= 3; j++) { csoki[i - 1][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } } behozatal.close(); behozatal = new BufferedReader(new FileReader("vasarlas.txt")); 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); } int vasarlasDb = Integer.parseInt(elsoSor.trim()); //Ha esetleg felesleges szóköz lenne a végén, levágjuk int[][] vasarlas = new int[vasarlasDb][9]; for (i = 1; i <= vasarlasDb; i++) { daraboltSor = behozatal.readLine().split(" "); for (j = 1; j <= 9; j++) { vasarlas[i - 1][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } }
Klemand
120.oldal
2016
2009 május idegennyelvű
Automata
behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); System.out.println("A csoki.txt fájl az első sora szerint " + rekeszDb + " rekeszt tartalmaz.\n"); System.out.println("Az utolsó 3 rekesz: \n"); for (i = rekeszDb - 2; i <= rekeszDb; i++) { System.out.println(i + ". rekesz sorszáma: " + csoki[i - 1][0] + ", a rekeszben tárolt csokik darabszáma: " + csoki[i - 1][1] + ", egységára " + csoki[i - 1][2] + " fabatka."); } System.out.println(""); System.out.println("A vasarlas.txt fájl az első sora szerint " + vasarlasDb + " vásárlást tartalmaz.\n"); System.out.println("Az utolsó 3 vásárlás: \n"); for (i = vasarlasDb - 2; i <= vasarlasDb; i++) { System.out.println(i + ". vásárlás: a kiválasztott rekesz sorszáma: " + vasarlas[i - 1][0] + ", a vásárolni kívánt csokik száma: " + vasarlas[i - 1][1] + " darab"); System.out.println("A bedobott pénzérmék száma: "); System.out.println("1 fabatkás: " + vasarlas[i - 1][2] + ", 2 fabatkás: " + vasarlas[i - 1][3] + ", 5 fabatkás: " + vasarlas[i - 1][4] + ", 10 fabatkás: " + vasarlas[i - 1][5] + ", 20 fabatkás: " + vasarlas[i - 1][6] + ", 50 fabatkás: " + vasarlas[i - 1][7] + ", 100 fabatkás: " + vasarlas[i - 1][8] + " darab"); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Milyen értékben van csokoládé az automatában? \n"); int osszertek = 0; for (i = 1; i <= rekeszDb; i++) { osszertek += csoki[i - 1][1] * csoki[i - 1][1]; } System.out.println("Az automatában " + osszertek + " fabatka értékű csokoládé van. \n"); //3. feladat System.out.println("A 3. feladat megoldása\n"); System.out.print("A következő rekeszekből próbáltak vásárolni: "); boolean rekesz[] = new boolean[rekeszDb]; //Rekesztörlés for (i = 1; i <= rekeszDb; i++) { rekesz[i - 1] = false; } //Volt-e vásárlás a rekeszből? for (i = 1; i <= vasarlasDb; i++) { rekesz[vasarlas[i - 1][0] - 1] = true; } for (i = 1; i <= rekeszDb; i++) { if (rekesz[i - 1] == true) { System.out.print(i + " "); } } System.out.println("\n");
Klemand
121.oldal
2016
2009 május idegennyelvű
Automata
//4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Anna lehetőségei \n"); System.out.println("Kedves Anna, hány fabatkát szánsz a 7 csokoládéra? "); System.out.println("(Egy csokoládé ára max. 300 fabatka.)"); int keret = egeszBevitel(0, 7 * 300); System.out.println(""); System.out.print("Köszönöm. A következő rekeszekből választhatsz: "); for (i = 1; i <= rekeszDb; i++) { if (csoki[i - 1][1] >= 7 && csoki[i - 1][1] * csoki[i - 1][2] <= keret) { System.out.print(csoki[i - 1][0] + " "); } } System.out.println("\n"); //5. feladat System.out.println("Az 5. feladat megoldása\n"); System.out.println("Okos Péter címletezése \n "); System.out.println("Kérem a rekesz sorszámát!"); int sorszam = egeszBevitel(1, rekeszDb); System.out.println(""); System.out.println("Kérem a vásárolni kívánt csokik számát!"); int darab = egeszBevitel(1, 100); System.out.println(""); int[] cimlet = {1, 2, 5, 10, 20, 50, 100}; int[] cimletDb = {0, 0, 0, 0, 0, 0, 0}; //Tömb megadása a kezdőértékek felsorolásával int fizetendo = csoki[sorszam - 1][2] * darab; System.out.println("A fizetendő összeg: " + fizetendo); System.out.println(""); do { i = 7; while (i >= 1 && (cimlet[i - 1] > fizetendo)) { i--; } cimletDb[i - 1]++; fizetendo -= cimlet[i - 1]; } while (fizetendo > 0); System.out.println("A szükséges érmék és darabszámuk: "); for (i = 7; i >= 1; i--) { if (cimletDb[i - 1] > 0) { System.out.println(cimlet[i - 1] + " " + cimletDb[i - 1]); } } System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása\n"); System.out.println("A 7. rekesz vásárlási naplójának kiírása a rekesz7.txt fájlba \n "); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("rekesz7.txt"));
Klemand
122.oldal
2016
2009 május idegennyelvű
Automata
for (i = 1; i <= vasarlasDb; i++) { if (vasarlas[i - 1][0] == 7) { if (vasarlas[i - 1][1] > csoki[6][1]) { kivitel.println(i + "\t" + "kevés a csoki"); } else if (vasarlas[i - 1][1] * csoki[6][2] > (vasarlas[i - 1][2] + vasarlas[i - 1][3] * 2 + vasarlas[i - 1][4] * 5 + vasarlas[i - 1][5] * 10 + vasarlas[i - 1][6] * 20 + vasarlas[i - 1][7] * 50 + vasarlas[i - 1][8] * 100)) { kivitel.println(i + "\t" + "nem volt elég pénz"); } else { kivitel.println(i + "\t" + vasarlas[i - 1][1]); csoki[6][1] -= vasarlas[i - 1][1]; } } } kivitel.close(); System.out.println("A rekesz7.txt fájl kiírása befejeződött. \n"); } //************************************************************ public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } }
Klemand
123.oldal
2016
2009 május idegennyelvű
Automata
run: Az 1. feladat megoldása A fájlok beolvasása A beolvasás ellenőrzése: A csoki.txt fájl az első sora szerint 25 rekeszt tartalmaz. Az utolsó 3 rekesz: 23. rekesz sorszáma: 23, a rekeszben tárolt csokik darabszáma: 11, egységára 144 fabatka. 24. rekesz sorszáma: 24, a rekeszben tárolt csokik darabszáma: 13, egységára 66 fabatka. 25. rekesz sorszáma: 25, a rekeszben tárolt csokik darabszáma: 4, egységára 105 fabatka. A vasarlas.txt fájl az első sora szerint 56 vásárlást tartalmaz. Az utolsó 3 vásárlás: 54. vásárlás: a kiválasztott rekesz sorszáma: 19, a vásárolni kívánt csokik száma: 7 darab A bedobott pénzérmék száma: 1 fabatkás: 0, 2 fabatkás: 0, 5 fabatkás: 0, 10 fabatkás: 0, 20 fabatkás: 0, 50 fabatkás: 8, 100 fabatkás: 1 darab 55. vásárlás: a kiválasztott rekesz sorszáma: 7, a vásárolni kívánt csokik száma: 6 darab A bedobott pénzérmék száma: 1 fabatkás: 0, 2 fabatkás: 0, 5 fabatkás: 0, 10 fabatkás: 0, 20 fabatkás: 5, 50 fabatkás: 3, 100 fabatkás: 3 darab 56. vásárlás: a kiválasztott rekesz sorszáma: 1, a vásárolni kívánt csokik száma: 7 darab A bedobott pénzérmék száma: 1 fabatkás: 1, 2 fabatkás: 1, 5 fabatkás: 3, 10 fabatkás: 1, 20 fabatkás: 3, 50 fabatkás: 4, 100 fabatkás: 3 darab A 2. feladat megoldása Milyen értékben van csokoládé az automatában? Az automatában 2357 fabatka értékű csokoládé van. A 3. feladat megoldása A következő rekeszekből próbáltak vásárolni: 1 3 4 5 7 8 9 11 12 13 15 16 17 18 19 20 22 23 24 25 A 4. feladat megoldása Anna lehetőségei Kedves Anna, hány fabatkát szánsz a 7 csokoládéra? (Egy csokoládé ára max. 300 fabatka.) Kérem a számot! (0 <= beírt szám <= 2100) :1000 Köszönöm. A következő rekeszekből választhatsz: 1 3 11 12 17 20 24 Az 5. feladat megoldása Okos Péter címletezése Kérem a rekesz sorszámát! Kérem a számot! (1 <= beírt szám <= 25) :8 Kérem a vásárolni kívánt csokik számát! Kérem a számot! (1 <= beírt szám <= 100) :7 A fizetendő összeg: 798
Klemand
124.oldal
2016
2009 május idegennyelvű
Automata
A szükséges érmék és darabszámuk: 100 7 50 1 20 2 5 1 2 1 1 1 A 6. feladat megoldása A 7. rekesz vásárlási naplójának kiírása a rekesz7.txt fájlba A rekesz7.txt fájl kiírása befejeződött. BUILD SUCCESSFUL (total time: 12 seconds)
rekesz7.txt: 2 9 21 46 47 55
1 1 kevés a csoki 1 kevés a csoki kevés a csoki
Klemand
125.oldal
2016
2009 október
Útépítés
2009 október: Útépítés Az Alsó és Felső várost összekötő út 1 000 m hosszú részének a felújításán dolgoznak. Ennek a szakasznak a forgalmát figyeljük egy nap néhány óráján keresztül. Az említett szakaszon előzési tilalom van érvényben. A forgalmat a forgalom.txt állomány tartalmazza. Első sorában a megfigyelési időszakban áthaladó járművek száma (legfeljebb 2000) látható, a továbbiakban pedig soronként egy áthaladó jármű adatai olvashatók időrendben. Egy sorban az első három szám azt az időpontot jelöli (óra, perc, másodperc), amikor a jármű belép a vizsgált útszakaszra. A következő szám jelöli, hogy a jármű az érintett távolságot hány másodperc alatt tenné meg (legfeljebb 300) – a belépéskor mért sebességgel –, ha haladását semmi nem akadályozná. Ezt egy betű követi, amely jelzi, hogy a jármű melyik város irányából érkezett. Ennek megfelelően a betű A vagy F lehet. Az egyes adatokat pontosan egy szóköz választja el egymástól. Ha az útszakaszon egyik jármű utoléri a másikat, akkor az előzési tilalom miatt úgy tekintjük, hogy változatlan sorrendben, ugyanabban az időpillanatban hagyják el a szakasz, mint ahogy a lassabb jármű tenné. Például: forgalom.txt
1105 7 21 7 21 7 22 7 22 7 23 …
1 60 F 58 69 F 4 117 F 39 155 A 11 99 A
A 3. sor megmutatja, hogy a 7 óra 21 perc 58 másodperckor a Felső város felől érkező jármű 69 másodperc alatt tenné meg ezt az 1 km hosszú távolságot. Ez a jármű – ha más járművek nem akadályozzák – 7 óra 23 perc 7 másodperckor lép ki az útszakaszról, tehát akkor már nem tartózkodik ott. Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját ut néven mentse! Ügyeljen arra, hogy programjának más bemeneti állomány esetén is működnie kell! Minden részfeladat megoldása előtt írja a képernyőre annak sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például a 2. feladat esetén: „2. feladat Adja meg a jármű sorszámát!”)!
1. Olvassa be a forgalom.txt állományban talált adatokat, s azok felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, akkor az első 10 sorának adatait jegyezze be a programba és dolgozzon azzal!
2. Írja ki a képernyőre, hogy az n-edikként belépő jármű melyik város felé haladt! Ehhez kérje be a felhasználótól az n értékét!
3. Írja a képernyőre, hogy a Felső város irányába tartó utolsó két jármű hány másodperc különbséggel érte el az útszakasz kezdetét!
Klemand
126.oldal
2016
2009 október
Útépítés
4. Határozza meg óránként és irányonként, hogy hány jármű érte el a szakaszt! Soronként egy-egy óra adatait írja a képernyőre! Az első érték az órát, a második érték az Alsó, a harmadik a Felső város felől érkező járművek számát jelentse! A kiírásban csak azokat az órákat jelenítse meg, amelyekben volt forgalom valamely irányban! 5. A belépéskor mért értékek alapján határozza meg a 10 leggyorsabb járművet! Írassa ki a képernyőre ezek belépési idejét, a várost (Alsó, illetve Felső), amely felől érkezett, és m/s egységben kifejezett sebességét egy tizedes pontossággal, sebességük szerinti csökkenő sorrendben! Ha több azonos sebességű járművet talál, bármelyiket megjelenítheti. Soronként egy jármű adatait jelenítse meg, és az egyes adatokat szóközzel tagolja! (A feladat megoldásakor figyeljen arra, hogy a következő feladatban az adatok eredeti sorrendjét még fel kell használni!)
6. Írassa ki az also.txt állományba azokat az időpontokat, amikor az Alsó város felé tartók elhagyták a kérdéses útszakaszt! Ha egy jármű utolér egy másikat, akkor a kilépésük időpontja a lassabb kilépési ideje legyen! A fájl minden sorába egy-egy időpont kerüljön óra perc másodperc formában! A számokat pontosan egy szóköz válassza el egymástól!
Klemand
127.oldal
2016
2009 október
Útépítés
package emeltinfo2009okt; import java.io.*; import java.util.*; /** * Útépítés * * @author Klemand */ public class EmeltInfo2009okt { 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 forgalom.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("forgalom.txt")); String elsoSor; 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); } int n = Integer.parseInt(elsoSor); for (int i = 1; i <= n; i++) { daraboltSor = behozatal.readLine().split(" "); forgalom.add(new ForgalomTipus(daraboltSor)); } behozatal.close(); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Merre haladt a beolvasott sorszámú jármű? \n"); System.out.print("Kérem a jármű sorszámát! int sorszam = Integer.parseInt(beolvas()); System.out.println("");
");
System.out.println("A(z) " + sorszam + ". autó " + iranyMeghat(forgalom.get(sorszam - 1).honnan) + " város felé haladt. \n"); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.print("A Felső város irányába haladó utolsó két jármű "); int i = forgalom.size(); int utolso = -1; while (i >= 1 && !(forgalom.get(i - 1).honnan.equals("A"))) { i--; }
Klemand
128.oldal
2016
2009 október
Útépítés
if (i >= 1) { utolso = forgalom.get(i - 1).erkezes; } i--; while (i >= 1 && !(forgalom.get(i - 1).honnan.equals("A"))) { i--; } if (i >= 1) { System.out.println((utolso - forgalom.get(i - 1).erkezes) + " s időkülönbséggel érkezett. \n"); } //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Az óránként Alsó, ill. Felső város felől érkező autók száma \n "); int[] dbA = new int[24]; int[] dbB = new int[24]; for (i = 0; i <= 23; i++) { //A számlálók nullázása dbA[i] = 0; dbB[i] = 0; } for (i = 1; i <= forgalom.size(); i++) { if (forgalom.get(i - 1).honnan.equals("A")) { dbA[forgalom.get(i - 1).ora]++; } else { dbB[forgalom.get(i - 1).ora]++; } } int dbAossz = 0; int dbBossz = 0; for (i = 0; i <= 23; i++) { if (dbA[i] > 0 || dbB[i] > 0) { System.out.println(i + " " + dbA[i] + " " + dbB[i]); dbAossz += dbA[i]; dbBossz += dbB[i]; } } System.out.println(""); System.out.println("Ellenőrzés:"); System.out.println("Összeadva: Alsó város felől összesen: " + dbAossz + ", Felső város felől összesen: " + dbBossz + " autó érkezett."); System.out.println("Mindösszesen: " + (dbAossz + dbBossz)); System.out.println("A vizsgált autók száma (a tömblista mérete: " + n); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("A 10 leggyorsabb autó \n "); int leglassabb = 1; for (i = 2; i <= forgalom.size(); i++) { if (forgalom.get(i - 1).deltaT > forgalom.get(leglassabb - 1).deltaT) { leglassabb = i; } } /*A leglassabb lesz minden ciklus elején az aktuális leggyorsabb, így nem kell figyelni, hogy kiválasztottuk-e már a gyorsak közé*/
Klemand
129.oldal
2016
2009 október
Útépítés
int j; for (i = 1; i <= 10; i++) { int leggyorsabb = leglassabb; for (j = 1; j <= forgalom.size(); j++) { if (forgalom.get(j - 1).deltaT < forgalom.get(leggyorsabb - 1).deltaT && !forgalom.get(j - 1).kivalasztott) { //A még ki nem választottak közül a leggyorsabb leggyorsabb = j; } } forgalom.get(leggyorsabb - 1).kivalasztott = true; gyorsak.add(new GyorsakTipus(forgalom.get(leggyorsabb - 1).ora, forgalom.get(leggyorsabb - 1).perc, forgalom.get(leggyorsabb - 1).mp, forgalom.get(leggyorsabb - 1).honnan, forgalom.get(leggyorsabb - 1).deltaT)); } for (i = 1; i <= 10; i++) { System.out.print(gyorsak.get(i - 1).ora + " " + gyorsak.get(i - 1).perc + " " + gyorsak.get(i - 1).mp + " " + gyorsak.get(i - 1).honnan + " "); System.out.printf("%.1f", gyorsak.get(i - 1).sebesseg); System.out.println(" m/s"); } System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("Az Alsó város felé tartó autók kilépési időinek kiíratása az also.txt fájlba \n "); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("also.txt")); i = 1; while (i <= forgalom.size() && !forgalom.get(i - 1).honnan.equals("F")) { i++; } int kilepes = forgalom.get(i - 1).erkezes + forgalom.get(i - 1).deltaT; //Az első kilépés Alsó város felé for (i = 1; i <= forgalom.size(); i++) { if (forgalom.get(i - 1).honnan.equals("F")) { if (forgalom.get(i - 1).erkezes + forgalom.get(i - 1).deltaT > kilepes) { kilepes = forgalom.get(i - 1).erkezes + forgalom.get(i - 1).deltaT; } kivitel.println(idoFormazas(kilepes)); } } kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n"); } //************************************************************
Klemand
130.oldal
2016
2009 október
Útépítés
//A tömblista konstruktora static ArrayList forgalom = new ArrayList<>(); //A típus egy osztály, ezért nagybetűvel kezdődik! public static class ForgalomTipus { private private private private private private private
final int ora; final int perc; final int mp; final int erkezes; final int deltaT; final String honnan; boolean kivalasztott;
public ForgalomTipus(String[] forg) //konstruktor { ora = Integer.parseInt(forg[0]); perc = Integer.parseInt(forg[1]); mp = Integer.parseInt(forg[2]); erkezes = ora * 3600 + perc * 60 + mp; deltaT = Integer.parseInt(forg[3]); honnan = forg[4]; kivalasztott = false; //Még nincs kiválasztva a gyorsak közé } } public static String beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine(); } public static String iranyMeghat(String honnanBe) { if (honnanBe.equals("A")) { return "Felső"; } else { return "Alsó"; } } static ArrayList gyorsak = new ArrayList<>(); //A típus egy osztály, ezért nagybetűvel kezdődik! public static class GyorsakTipus { private private private private private
final final final final final
int ora; int perc; int mp; String honnan; double sebesseg;
public GyorsakTipus(int oraBe, int percBe, int mpBe, String honnanBe, int deltaT) //konstruktor { ora = oraBe; perc = percBe; mp = mpBe; honnan = nevMeghat(honnanBe); sebesseg = sebessegMeghat(deltaT); } }
Klemand
131.oldal
2016
2009 október
Útépítés
public static String nevMeghat(String honnanBe) { if (honnanBe.equals("A")) { return "Alsó"; } else { return "Felső"; } } public static double sebessegMeghat(int ido) { int UT = 1000; return (double) UT / ido; } public static String idoFormazas(int ido) { int ora, perc, mp; String oraSt, percSt, mpSt; mp = ido % 60; perc = (ido / 60) % 60; ora = ido / 3600; oraSt = Integer.toString(ora); percSt = Integer.toString(perc); mpSt = Integer.toString(mp); return oraSt + " " + percSt + " " + mpSt; } }
Klemand
132.oldal
2016
2009 október
Útépítés
run: Az 1. feladat megoldása Az adatok beolvasása a forgalom.txt fájlból A 2. feladat megoldása Merre haladt a beolvasott sorszámú jármű? Kérem a jármű sorszámát!
956
A(z) 956. autó Felső város felé haladt. A 3. feladat megoldása A Felső város irányába haladó utolsó két jármű 228 s időkülönbséggel érkezett. A 4. feladat megoldása Az óránként Alsó, ill. Felső város felől érkező autók száma 7 39 44 8 58 65 9 57 66 10 59 50 11 55 61 12 59 62 13 74 53 14 51 78 15 60 61 16 30 23 Ellenőrzés: Összeadva: Alsó város felől összesen: 542, Felső város felől összesen: 563 autó érkezett. Mindösszesen: 1105 A vizsgált autók száma (a tömblista mérete: 1105 Az 5. feladat megoldása A 10 leggyorsabb autó 10 38 23 Alsó 25,0 m/s 12 54 34 Alsó 25,0 m/s 13 27 12 Alsó 25,0 m/s 13 42 22 Alsó 25,0 m/s 16 0 1 Alsó 25,0 m/s 7 28 18 Felső 24,4 m/s 9 4 41 Alsó 24,4 m/s 9 51 46 Felső 24,4 m/s 10 16 36 Alsó 24,4 m/s 12 25 33 Felső 24,4 m/s A 6. feladat megoldása Az Alsó város felé tartó autók kilépési időinek kiíratása az also.txt fájlba A fájlkiírás befejeződött. BUILD SUCCESSFUL (total time: 7 seconds) also.txt: 7 7 7 7 7 7 7 …
22 23 24 26 26 27 28
1 7 1 15 20 7 9
Klemand
133.oldal
2016
2010 május
Helyjegy
2010 május: Helyjegy Egy autóbuszokat üzemeltető társaság távolsági járataira az utasok jobb kiszolgálása érdekében csak akkor ad el jegyet, ha ülőhelyet is tud biztosítani. Minden jegyre rányomtatja, hogy az adott vonalon mettől meddig érvényes és melyik ülést lehet elfoglalni birtokában. Az eladott.txt állomány pontosan egy út jegyvásárlásait tartalmazza. Az első sorban az eladott jegyek száma (legfeljebb 500), a vonal hossza (legfeljebb 200 km) és minden megkezdett 10 km után fizetendő összeg (legfeljebb 100 Ft) található. Az állomány további sorai — a vásárlás sorrendjében — egy-egy jegy három adatát írják le: az utas melyik ülést foglalhatja el, hol száll fel és hol száll le. (A fel- és a leszállás helyét a járat kezdőállomásától mért távolsággal adják meg.) Az üléseket 1-től 48-ig folyamatosan számozták. A soron belüli határoló jel minden esetben egy-egy szóköz. Az állomány csak egész számokat tartalmaz. Az utast a későbbiekben egyetlen sorszámmal azonosítjuk, azzal az értékkel, amely megadja, hogy hanyadik jegyvásárló volt. A jegy árának meghatározásakor az értéket öttel osztható számra kell kerekítenie. (1, 2, 6 és 7 esetén lefelé, 3, 4, 8 és 9 esetén pedig felfelé kell kerekítenie.) Például: eladott.txt 132 200 71 20 0 110 12 13 65 … Az adott járat 200 km hosszú úton közlekedik. Eddig 132 jegyet adtak el, és megkezdett 10 km-ként 71 Ftba kerül a jegy. Az állomány harmadik sora tartalmazza a második jegyvásárló adatait, aki a 13. és a 65. km között utazik a 12. helyen ülve. A megtett távolság 52 km, tehát 6 darab 10 km hosszú szakaszért kell fizetnie, ennek értéke 6*71, azaz 426 Ft. Mivel kerekíteni kell, ezért a fizetendő összeg 425 Ft. Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját helyjegy néven mentse! Minden – képernyőre írást igénylő – részfeladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például a 7. feladat esetén: „7. feladat Adja meg, hogy az út mely kilométerén kéri az utaslistát!”)! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be az eladott.txt állományban talált adatokat, s azok felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, az állomány első 10 sorának adatait jegyezze be a programba és dolgozzon azzal!
2. Adja meg a legutolsó jegyvásárló ülésének sorszámát és az általa beutazott távolságot! A kívánt adatokat a képernyőn jelenítse meg!
Klemand
134.oldal
2016
2010 május
Helyjegy
3. Listázza ki, kik utazták végig a teljes utat! Az utasok sorszámát egy-egy szóközzel elválasztva írja a képernyőre!
4. Határozza meg, hogy a jegyekből mennyi bevétele származott a társaságnak! Az eredményt írja a képernyőre!
5. Írja a képernyőre, hogy a busz végállomást megelőző utolsó megállásánál hányan szálltak fel és le! 6. Adja meg, hogy hány helyen állt meg a busz a kiinduló állomás és a célállomás között! Az eredményt írja a képernyőre!
7. Készítsen „utaslistát” az út egy pontjáról! A listában ülésenként tüntesse fel, hogy azt az adott pillanatban melyik utas foglalja el! A pontot, azaz a kiindulási állomástól mért távolságot, a felhasználótól kérje be! Ha a beolvasott helyen éppen megálló lett volna, akkor a felszálló utasokat vegye figyelembe, a leszállókat pedig hagyja figyelmen kívül! Az eredményt az ülések sorszámának sorrendjében írja a kihol.txt állományba! Az üres helyek esetén az „üres” szót jelenítse meg! Minden ülés külön sorba kerüljön! Például: kihol.txt 1. ülés: üres 2. ülés: üres 3. ülés: üres 4. ülés: 29. utas 5. ülés: 95. utas …
Klemand
135.oldal
2016
2010 május
Helyjegy
package emeltinfo2010maj; import java.io.*; import java.util.*; /** * Helyjegy * * @author Klemand */ public class EmeltInfo2010maj { 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 eladott.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("eladott.txt")); String elsoSor; 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); } String[] daraboltSor = elsoSor.trim().split(" "); int n = Integer.parseInt(daraboltSor[0]);//utasok száma int tav = Integer.parseInt(daraboltSor[1]); int egysAr = Integer.parseInt(daraboltSor[2]); int[][] busz = new int[n][3]; for (int i = 1; i <= n; i++) { daraboltSor = behozatal.readLine().split(" "); busz[i - 1][0] = Integer.parseInt(daraboltSor[0]);//hely busz[i - 1][1] = Integer.parseInt(daraboltSor[1]);//felszálló busz[i - 1][2] = Integer.parseInt(daraboltSor[2]);//leszálló } behozatal.close(); //2. feladat System.out.println("A 2. feladat megoldása \n"); System.out.println("Az utolsó felszálló adatai: "); System.out.println("Ülésének száma: " + busz[n - 1][0] + ", beutazott távolság: " + (busz[n - 1][2] - busz[n - 1][1]) + " km"); System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása \n"); System.out.print("A teljes távot végigutazók: "); int i; for (i = 1; i <= n; i++) { if (busz[i - 1][1] == 0 && busz[i - 1][2] == tav) { System.out.print(i + " "); } } System.out.println("");
Klemand
136.oldal
2016
2010 május
Helyjegy
//4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.print("A társaság bevétele: "); int bevetel = 0; for (i = 1; i <= n; i++) { int jegyar = jegyarMeghat(busz[i - 1][1], busz[i - 1][2], egysAr); bevetel += jegyar; } System.out.println(bevetel + " Ft"); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.print("A végállomás előtti utolsó megállásnál : "); int[][] km = new int[tav + 1][2]; for (i = 0; i <= tav; i++) { //A távolság 0-val kezdődik! km[i][0] = 0; //felszállók száma km-enként km[i][1] = 0; //leszállók száma km-enként } for (i = 1; i <= n; i++) { km[busz[i - 1][1]][0]++; km[busz[i - 1][2]][1]++; } /* A felszállás km-énél növelem a felszállók számát, a leszállás km-énél pedig a leszállók számát*/ i = tav - 1; while (i >= 0 && km[i][0] == 0 && km[i][1] == 0) { i--; } if (i >= 0) { System.out.println(km[i][0] + " felszálló és " + km[i][1] + " leszálló volt."); } else { System.out.println("A busz üresen utazott."); } System.out.println("\n"); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.print("A busz a kiinduló állomás és a célállomás között "); int megallo = 0; for (i = 1; i < tav; i++) { if (km[i][0] > 0 || km[i][1] > 0) { megallo++; } } System.out.println(megallo + " helyen állt meg. \n"); //Ellenőrzés System.out.println("Ellenőrzés"); for (i = 0; i <= tav; i++) { System.out.println(i + ". km-nél: " + km[i][0] + " felszálló és " + km[i][1] + " leszálló volt."); } System.out.println("");
Klemand
137.oldal
2016
2010 május
Helyjegy
//7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("Utaslista egy megadott távolságnál \n "); System.out.println("Kérem a kiindulási helytől való távolságot km-ben!"); int hely = egeszBevitel(0, tav); int UDB = 48; int[] ules = new int[UDB]; for (i = 1; i <= UDB; i++) { ules[i - 1] = 0; } for (i = 1; i <= n; i++) { if (busz[i - 1][1] <= hely && busz[i - 1][2] > hely) { ules[busz[i - 1][0] - 1] = i; } } PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("kihol.txt")); for (i = 1; i <= UDB; i++) { kivitel.print(i +". ülés: "); if(ules[i - 1] > 0){ kivitel.println(ules[i - 1]+". utas"); }else{ kivitel.println("üres"); } } kivitel.close(); System.out.println(""); System.out.println("A fájlkiírás befejeződött. \n"); } //************************************************************ public static int jegyarMeghat(int fel, int le, int egysAr) { int tav = le - fel; if ((le - fel) % 10 > 0) { tav += 10; } int jegyar = tav * egysAr; int maradek = jegyar % 10; switch (maradek) { case 0: { return jegyar; } case 1: { return jegyar } case 2: { return jegyar } case 8: { return jegyar } case 9: { return jegyar }
Klemand
maradek;
maradek;
maradek + 10;
maradek + 10;
138.oldal
2016
2010 május
Helyjegy default: return jegyar - maradek + 5;
} } public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } }
Klemand
139.oldal
2016
2010 május
Helyjegy
run: Az 1. feladat megoldása Az adatok beolvasása az eladott.txt fájlból A 2. feladat megoldása Az utolsó felszálló adatai: Ülésének száma: 29, beutazott távolság: 50 km A 3. feladat megoldása A teljes távot végigutazók: 67 71 95 A 4. feladat megoldása A társaság bevétele: 499110 Ft Az 5. feladat megoldása A végállomás előtti utolsó megállásnál : 2 felszálló és 5 leszálló volt.
Az 5. feladat megoldása A busz a kiinduló állomás és a célállomás között 24 helyen állt meg. Ellenőrzés 0. km-nél: 30 felszálló és 0 leszálló volt. 1. km-nél: 0 felszálló és 0 leszálló volt. 2. km-nél: 0 felszálló és 0 leszálló volt. 3. km-nél: 0 felszálló és 0 leszálló volt. 4. km-nél: 0 felszálló és 0 leszálló volt. 5. km-nél: 0 felszálló és 0 leszálló volt. 6. km-nél: 13 felszálló és 2 leszálló volt. 7. km-nél: 0 felszálló és 0 leszálló volt. 8. km-nél: 0 felszálló és 0 leszálló volt. 9. km-nél: 0 felszálló és 0 leszálló volt. 10. km-nél: 0 felszálló és 0 leszálló volt. 11. km-nél: 0 felszálló és 0 leszálló volt. 12. km-nél: 7 felszálló és 3 leszálló volt. 13. km-nél: 0 felszálló és 0 leszálló volt. 14. km-nél: 0 felszálló és 0 leszálló volt. 15. km-nél: 0 felszálló és 0 leszálló volt. 16. km-nél: 0 felszálló és 0 leszálló volt. 17. km-nél: 0 felszálló és 0 leszálló volt. 18. km-nél: 0 felszálló és 0 leszálló volt. 19. km-nél: 0 felszálló és 0 leszálló volt. 20. km-nél: 0 felszálló és 0 leszálló volt. 21. km-nél: 4 felszálló és 5 leszálló volt. 22. km-nél: 0 felszálló és 0 leszálló volt. 23. km-nél: 0 felszálló és 0 leszálló volt. 24. km-nél: 0 felszálló és 0 leszálló volt. 25. km-nél: 0 felszálló és 0 leszálló volt. 26. km-nél: 0 felszálló és 0 leszálló volt. 27. km-nél: 0 felszálló és 0 leszálló volt. 28. km-nél: 0 felszálló és 0 leszálló volt. 29. km-nél: 3 felszálló és 2 leszálló volt. 30. km-nél: 0 felszálló és 0 leszálló volt. 31. km-nél: 0 felszálló és 0 leszálló volt. 32. km-nél: 0 felszálló és 0 leszálló volt. 33. km-nél: 0 felszálló és 0 leszálló volt. 34. km-nél: 0 felszálló és 0 leszálló volt. 35. km-nél: 3 felszálló és 3 leszálló volt. 36. km-nél: 0 felszálló és 0 leszálló volt. 37. km-nél: 0 felszálló és 0 leszálló volt.
Klemand
38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75.
140.oldal
km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél:
0 0 0 2 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 5 0 0 0 0 2 0 0 0 0 0 5 0 0 0 0 3 0 0
felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló
és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és
0 0 0 3 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 2 0 0 0 0 5 0 0 0 0 0 8 0 0 0 0 2 0 0
leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló leszálló
volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt. volt.
2016
2010 május
Helyjegy
76. km-nél: 0 felszálló és 0 leszálló volt. 77. km-nél: 0 felszálló és 0 leszálló volt. 78. km-nél: 0 felszálló és 0 leszálló volt. 79. km-nél: 5 felszálló és 5 leszálló volt. 80. km-nél: 0 felszálló és 0 leszálló volt. 81. km-nél: 0 felszálló és 0 leszálló volt. 82. km-nél: 0 felszálló és 0 leszálló volt. 83. km-nél: 0 felszálló és 0 leszálló volt. 84. km-nél: 0 felszálló és 0 leszálló volt. 85. km-nél: 6 felszálló és 3 leszálló volt. 86. km-nél: 0 felszálló és 0 leszálló volt. 87. km-nél: 0 felszálló és 0 leszálló volt. 88. km-nél: 0 felszálló és 0 leszálló volt. 89. km-nél: 0 felszálló és 0 leszálló volt. 90. km-nél: 0 felszálló és 0 leszálló volt. 91. km-nél: 0 felszálló és 0 leszálló volt. 92. km-nél: 2 felszálló és 4 leszálló volt. 93. km-nél: 0 felszálló és 0 leszálló volt. 94. km-nél: 0 felszálló és 0 leszálló volt. 95. km-nél: 0 felszálló és 0 leszálló volt. 96. km-nél: 0 felszálló és 0 leszálló volt. 97. km-nél: 3 felszálló és 7 leszálló volt. 98. km-nél: 0 felszálló és 0 leszálló volt. 99. km-nél: 0 felszálló és 0 leszálló volt. 100. km-nél: 0 felszálló és 0 leszálló volt. 101. km-nél: 0 felszálló és 0 leszálló volt. 102. km-nél: 0 felszálló és 0 leszálló volt. 103. km-nél: 0 felszálló és 0 leszálló volt. 104. km-nél: 0 felszálló és 0 leszálló volt. 105. km-nél: 0 felszálló és 0 leszálló volt. 106. km-nél: 3 felszálló és 6 leszálló volt. 107. km-nél: 0 felszálló és 0 leszálló volt. 108. km-nél: 0 felszálló és 0 leszálló volt. 109. km-nél: 0 felszálló és 0 leszálló volt. 110. km-nél: 0 felszálló és 0 leszálló volt. 111. km-nél: 0 felszálló és 0 leszálló volt. 112. km-nél: 0 felszálló és 0 leszálló volt. 113. km-nél: 0 felszálló és 0 leszálló volt. 114. km-nél: 0 felszálló és 0 leszálló volt. 115. km-nél: 5 felszálló és 5 leszálló volt. 116. km-nél: 0 felszálló és 0 leszálló volt. 117. km-nél: 0 felszálló és 0 leszálló volt. 118. km-nél: 0 felszálló és 0 leszálló volt. 119. km-nél: 0 felszálló és 0 leszálló volt. 120. km-nél: 0 felszálló és 0 leszálló volt. 121. km-nél: 0 felszálló és 0 leszálló volt. 122. km-nél: 0 felszálló és 0 leszálló volt. 123. km-nél: 0 felszálló és 0 leszálló volt. 124. km-nél: 3 felszálló és 3 leszálló volt.
125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172.
km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél: km-nél:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0
felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló felszálló
és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és és
0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 7 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 4 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 5 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 11 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 5 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 0 leszálló volt. 7 leszálló volt.
A 7. feladat megoldása Utaslista egy megadott távolságnál Kérem a kiindulási helytől való távolságot km-ben! Kérem a számot! (0 <= beírt szám <= 172) :60 A fájlkiírás befejeződött. BUILD SUCCESSFUL (total time: 6 seconds)
Klemand
141.oldal
2016
2010 május
Helyjegy
kihol.txt (a 60. km-nél): 1. ülés: 42. utas 2. ülés: 58. utas 3. ülés: 60. utas 4. ülés: 33. utas 5. ülés: 95. utas 6. ülés: 63. utas 7. ülés: 46. utas 8. ülés: üres 9. ülés: 6. utas 10. ülés: 41. utas 11. ülés: 74. utas 12. ülés: 102. utas 13. ülés: 9. utas 14. ülés: 71. utas 15. ülés: 22. utas 16. ülés: 67. utas 17. ülés: 104. utas 18. ülés: 61. utas 19. ülés: 40. utas 20. ülés: 26. utas 21. ülés: 109. utas 22. ülés: 48. utas 23. ülés: 45. utas 24. ülés: 97. utas 25. ülés: 92. utas 26. ülés: 24. utas 27. ülés: 37. utas 28. ülés: 64. utas 29. ülés: üres 30. ülés: 12. utas 31. ülés: üres 32. ülés: 73. utas 33. ülés: 91. utas 34. ülés: 68. utas 35. ülés: 70. utas 36. ülés: 57. utas 37. ülés: 54. utas 38. ülés: 43. utas 39. ülés: 53. utas 40. ülés: 7. utas 41. ülés: 90. utas 42. ülés: 85. utas 43. ülés: 32. utas 44. ülés: 47. utas 45. ülés: 19. utas 46. ülés: 111. utas 47. ülés: 82. utas 48. ülés: 101. utas
Klemand
142.oldal
2016
2010 május idegennyelvű
Telek
2010 május idegennyelvű: Telek Patakfalván a faluszélen levő beépítetlen területet szeli ketté a Dirib patak. Az önkormányzat elhatározta, hogy építési telkek kialakításával létrehozza a Szép jövő lakótelepet. A beépítés után egy téglalap alakú területen két utca jön létre: Gazdagsor és Jólétsor. A két sor lakói „lábszomszédok”, de telkeiket elválasztja egymástól a Dirib patak. A két utca párhuzamos, az utcafrontokat 80 méter választja el egymástól. Mindkét soron azonos számú téglalap alakú telket jelöltek ki, soronként legfeljebb 30-at. Gazdagsoron csak páratlan, Jólétsoron csak páros házszámokat adnak ki (1-től, illetve 2-től indulva kihagyásmentesen számozva). Egy telek szélessége maximum 40 méter. Az utcák végén egy-egy híd köti össze a patak két partját. A telkek kijelölésénél figyelembe vették a patak medrének nyomvonalát.
A kijelölt telkekről kimutatás készült, amit a telkek.txt fájl tartalmaz. Ennek a fájlnak az első sora tartalmazza a kiosztandó telkek számát, majd az ezt követő sorokban az egyes telkek adatai találhatók. Az első adat a házszám, a második a telek szélessége, míg a harmadik az erre merőlegesen mért hosszúsága. Gazdagsor esetén az összes adat rendelkezésre áll, Jólétsor esetében viszont a hosszúság adatok helyén 0 áll. Az adatok között pontosan egy szóköz található. Készítsen programot telek néven, amely az alábbi kérdésekre válaszol! 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:)
Klemand
143.oldal
2016
2010 május idegennyelvű
Telek
1. Olvassa be a telkek.txt állományban található adatokat, s annak felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, akkor a benne található adatok közül Gazdagsor 1., 3., 5., 7. és 9. számú, valamint Jólétsor 2., 4., 6., 8. és 10. számú telkének adatait jegyezze be a programba, s úgy oldja meg a feladatokat!
2. Hány métert kell annak gyalogolnia, aki körbe akarja járni a két utcát? A kiszámított távolságot írassa ki a képernyőre!
3. Az önkormányzat előírásai szerint a 20 m széles vagy annál keskenyebb telkek esetén teljes utcafront beépítést kell alkalmazni. Határozza meg és a képernyőre írassa ki, hogy ez hány telekre vonatkozik a Jólétsoron!
4. Hány háznyira van egymástól a legnagyobb és a legkisebb területű telek Gazdagsoron? A két telek között elhelyezkedő telkek számát, valamint a legnagyobb és legkisebb telek házszámát, illetve területét írassa ki a képernyőre!
5. Az önkormányzat telekadót fog kivetni. Az adót Fabatkában számolják. A 700 négyzetméteres és annál kisebb telkek esetén ez 51 Fabatka négyzetméterenként, az ennél nagyobb telkeknél az első 700 négyzetméterre vonatkozóan szintén 51 Fabatka, 700 négyzetméter felett egészen 1000 négyzetméterig 39 Fabatka a négyzetméterenkénti adó. Az 1000 négyzetméter feletti részért négyzetméter árat nem, csak 200 Fabatka egyösszegű általányt kell fizetni. A 15 m vagy annál keskenyebb, illetve a 25 m vagy annál rövidebb telkek tulajdonosai 20% adókedvezményben részesülnek. Az adó meghatározásánál 100 Fabatkás kerekítést kell használni (pl. 6238 esetén 6200, 6586 esetén 6600). Határozza meg, mekkora adóbevételre számíthat Gazdagsor után az önkormányzat!
6. Melyik a 3 utolsó telek a Jólétsoron? A házszámokat és a telkeknek a Jólétsor elejétől mért távolságát írja ki a képernyőre a házszámok szerint csökkenő sorrendben!
7. Határozza meg Jólétsor telkeinek hosszúságát! Vegye figyelembe, hogy a szemben fekvő telkek patak felőli határvonalait az utcafrontra merőleges irányban legalább 10 méternek kell elválasztania egymástól! Szemben fekvőnek számítanak a telkek akkor is, ha csak a telkek valamelyik széle van egymással szemben. (Például a 10-es számú telekkel csak a 9es és 11-es számú telek van szemben.) A számításnál a feltételnek megfelelő legnagyobb telkeket kell kialakítani! Jólétsor adatait írja ki a joletsor.csv fájlba! Az egyes sorokban a házszám, a szélesség és a hosszúság szerepeljen! Az adatokat pontosan egy pontosvessző válassza el egymástól!
Klemand
144.oldal
2016
2010 május idegennyelvű
Telek
package emeltinfo2010mid; import java.io.*; import java.util.*; /** * Telek * * @author Klemand */ public class EmeltInfo2010mid { 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 eladott.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("telkek.txt")); String elsoSor; 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); } int n = Integer.parseInt(elsoSor); String[] daraboltSor; int hsz, szel, hossz; for (int i = 1; i <= n; i++) { daraboltSor = behozatal.readLine().split(" "); hsz = Integer.parseInt(daraboltSor[0]); szel = Integer.parseInt(daraboltSor[1]); hossz = Integer.parseInt(daraboltSor[2]); if (hsz % 2 == 1) { gazdag.add(new GazdagTipus(hsz, szel, hossz)); } else { jolet.add(new JoletTipus(hsz, szel, hossz)); } } behozatal.close(); //Házszámok szerinti rendezések int i, j, min; GazdagTipus asztal1; for (i = 1; i <= gazdag.size(); i++) { min = i; for (j = i + 1; j <= gazdag.size(); j++) { if (gazdag.get(j - 1).hsz < gazdag.get(min - 1).hsz) { min = j; } } asztal1 = gazdag.get(i - 1); gazdag.set(i - 1, gazdag.get(min - 1)); gazdag.set(min - 1, asztal1); }
Klemand
145.oldal
2016
2010 május idegennyelvű
Telek
JoletTipus asztal2; for (i = 1; i <= jolet.size(); i++) { min = i; for (j = i + 1; j <= jolet.size(); j++) { if (jolet.get(j - 1).hsz < jolet.get(min - 1).hsz) { min = j; } } asztal2 = jolet.get(i - 1); jolet.set(i - 1, jolet.get(min - 1)); jolet.set(min - 1, asztal2); } //A telkek kezdetének távolsága az utcák elejétől for (i = 2; i <= gazdag.size(); i++) { gazdag.get(i - 1).tav = gazdag.get(i - 2).tav + gazdag.get(i - 2).szel; } for (i = 2; i <= jolet.size(); i++) { jolet.get(i - 1).tav = jolet.get(i - 2).tav + jolet.get(i - 2).szel; } //Ellenőrzés System.out.println("Gazdagsor: házszám szélesség hosszúság távolság: \n"); for (i = 1; i <= gazdag.size(); i++) { System.out.println(gazdag.get(i - 1).hsz + " " + gazdag.get(i - 1).szel + " " + gazdag.get(i - 1).hossz + " " + gazdag.get(i - 1).tav); } System.out.println(""); System.out.println("Jólétsor: házszám szélesség hosszúság távolság: \n"); for (i = 1; i <= jolet.size(); i++) { System.out.println(jolet.get(i - 1).hsz + " " + jolet.get(i - 1).szel + " " + jolet.get(i - 1).hossz + " " + jolet.get(i - 1).tav); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása \n"); System.out.print("Egy körséta hossza: "); int OLDAL = 80; int gazdagHossz = gazdag.get(gazdag.size() - 1).tav + gazdag.get(gazdag.size() - 1).szel; int joletHossz = jolet.get(jolet.size() - 1).tav + jolet.get(jolet.size() - 1).szel; System.out.println((gazdagHossz + joletHossz + 2 * OLDAL) + " m"); System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása \n"); System.out.print("A teljes utcafront beépítések száma Jólétsoron: "); int uf = 0; for (i = 1; i <= jolet.size(); i++) { if (jolet.get(i - 1).szel <= 20) { uf++; } } System.out.println(uf); System.out.println("");
Klemand
146.oldal
2016
2010 május idegennyelvű
Telek
//4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.println("A legkisebb és a legnagyobb területű ház Gazdagsoron \n"); min = 1; int max = 1; for (i = 1; i <= gazdag.size(); i++) { if (gazdag.get(i - 1).szel * gazdag.get(i - 1).hossz < gazdag.get(min - 1).szel * gazdag.get(min - 1).hossz) { min = i; } if (gazdag.get(i - 1).szel * gazdag.get(i - 1).hossz > gazdag.get(max - 1).szel * gazdag.get(max - 1).hossz) { max = i; } } System.out.println("A két ház között elhelyezkedő telkek száma: " + (Math.abs(max - min) - 1)); System.out.println("A legkisebb területű telek házstáma: " + gazdag.get(min - 1).hsz + ", területe: " + gazdag.get(min - 1).szel * gazdag.get(min - 1).hossz + " négyzetméter"); System.out.println("A legnagyobb területű telek házstáma: " + gazdag.get(max - 1).hsz + ", területe: " + gazdag.get(max - 1).szel * gazdag.get(max - 1).hossz + " négyzetméter"); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.println("Telekadó \n"); int telekado = 0; for (i = 1; i <= gazdag.size(); i++) { telekado += adokivetes(gazdag.get(i - 1).szel, gazdag.get(i - 1).hossz); } System.out.println("Gazdagsoron az önkormányzat " + telekado + " Fabatka telekadó bevételre számíthat. \n"); //6. feladat System.out.println("A 6. feladat megoldása \n"); System.out.println("Az utolsó három ház Jólétsoron: \n"); for (i = jolet.size(); i >= jolet.size() - 2; i--) { System.out.println("Házszám: " + jolet.get(i - 1).hsz + ", a telek távolsága Jólétsor elejétől: " + jolet.get(i - 1).tav + " m"); } System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("Jólétsor telkeinek hossza, kiírás a joletsor.csv fájlba \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("joletsor.csv")); int PATAK = 10; for (i = 1; i <= jolet.size(); i++) { j = 1; while (gazdag.get(j - 1).tav + gazdag.get(j - 1).szel < jolet.get(i - 1).tav) { j++; } jolet.get(i - 1).hossz = OLDAL - PATAK - gazdag.get(j - 1).hossz; j++; while ((j <= gazdag.size()) && (gazdag.get(j - 1).tav <= jolet.get(i - 1).tav + jolet.get(i - 1).szel)) {
Klemand
147.oldal
2016
2010 május idegennyelvű
Telek
if (OLDAL - PATAK - gazdag.get(j - 1).hossz < jolet.get(i - 1).hossz) { jolet.get(i - 1).hossz = OLDAL - PATAK - gazdag.get(j - 1).hossz; } j++; } kivitel.println(jolet.get(i - 1).hsz + ";" + jolet.get(i - 1).szel + ";" + jolet.get(i - 1).hossz); } kivitel.close(); System.out.println("A fájlkiírás befejeződött. \n"); } //************************************************************ static ArrayList gazdag = new ArrayList<>(); public static class GazdagTipus { private private private private
final int hsz; final int szel; int hossz; int tav;
public GazdagTipus(int hszBe, int szelBe, int hosszBe) //konstruktor { hsz = hszBe; szel = szelBe; hossz = hosszBe; tav = 0; } } static ArrayList<JoletTipus> jolet = new ArrayList<>(); public static class JoletTipus { private private private private
final int hsz; final int szel; int hossz; int tav;
public JoletTipus(int hszBe, int szelBe, int hosszBe) //konstruktor { hsz = hszBe; szel = szelBe; hossz = hosszBe; tav = 0; } }
Klemand
148.oldal
2016
2010 május idegennyelvű
Telek
public static int adokivetes(int szel, int hossz) { int terulet = szel * hossz; int ado; if (terulet <= 700) { ado = terulet * 51; } else if (terulet <= 1000) { ado = 700 * 51 + (terulet - 700) * 39; } else { ado = 700 * 51 + 300 * 39 + 200; } if (szel <= 15 || hossz <= 25) { ado = (int) (ado * 0.8); } int apro = ado % 100; if (apro < 50) { ado -= apro; } else { ado = ado - apro + 100; } return ado; } }
Klemand
149.oldal
2016
2010 május idegennyelvű
Telek
run: Az 1. feladat megoldása Az adatok beolvasása az eladott.txt fájlból Gazdagsor: házszám szélesség hosszúság távolság: 1 25 25 0 3 25 45 25 5 15 55 50 7 20 45 65 9 20 40 85 11 35 30 105 13 25 35 140 15 20 30 165 17 30 25 185 19 25 45 215 21 15 50 240 23 20 45 255 25 20 35 275 27 35 35 295 29 25 40 330 31 25 30 355 Jólétsor: házszám szélesség hosszúság távolság: 2 15 0 0 4 30 0 15 6 25 0 45 8 20 0 70 10 15 0 90 12 30 0 105 14 35 0 135 16 20 0 170 18 15 0 190 20 30 0 205 22 25 0 235 24 20 0 260 26 20 0 280 28 25 0 300 30 35 0 325 32 20 0 360 A 2. feladat megoldása Egy körséta hossza: 920 m A 3. feladat megoldása A teljes utcafront beépítések száma Jólétsoron: 8 A 4. feladat megoldása A legkisebb és a legnagyobb területű ház Gazdagsoron A két ház között elhelyezkedő telkek száma: 5 A legkisebb területű telek házstáma: 15, területe: 600 négyzetméter A legnagyobb területű telek házstáma: 27, területe: 1225 négyzetméter Az 5. feladat megoldása Telekadó Gazdagsoron az önkormányzat 629100 Fabatka telekadó bevételre számíthat.
Klemand
150.oldal
2016
2010 május idegennyelvű
Telek
A 6. feladat megoldása Az utolsó három ház Jólétsoron: Házszám: 32, a telek távolsága Jólétsor elejétől: 360 m Házszám: 30, a telek távolsága Jólétsor elejétől: 325 m Házszám: 28, a telek távolsága Jólétsor elejétől: 300 m A 7. feladat megoldása Jólétsor telkeinek hossza, kiírás a joletsor.csv fájlba A fájlkiírás befejeződött. BUILD SUCCESSFUL (total time: 2 seconds) joletsor.csv fájl: 2;15;45 4;30;25 6;25;15 8;20;25 10;15;30 12;30;30 14;35;35 16;20;40 18;15;45 20;30;25 22;25;20 24;20;25 26;20;35 28;25;35 30;35;30 32;20;40
Klemand
151.oldal
2016
2010 október
Anagramma
2010 október: Anagramma Az anagramma a szójátékok egy fajtája, melyben értelmes szavak vagy mondatok betűinek sorrendjét úgy változtatjuk meg, hogy az eredmény szintén értelmes szó vagy mondat lesz. Sok anagramma esetén az eredeti szó és a végeredmény között humoros vagy egyéb kapcsolat van, ez növeli az anagramma érdekességét, értékét. Például a satu szó anagrammái: utas, tusa, suta. A szotar.txt ASCII kódolású állomány legfeljebb 300 különböző szót tartalmaz. A szavak legalább 2, legfeljebb 30 karakter hosszúságúak, és csak az angol ábécé kisbetűit tartalmazzák. Az állományban az egyes szavak külön sorokban szerepelnek, és minden szó csak egyszer fordulhat elő. Például: szotar.txt eszesen kereszt keretes keretez nyertesek hadartam maradhat … Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját anagram néven mentse! Ügyeljen arra, hogy programjának minden helyes tartalmú bemeneti állomány esetén működnie kell! Minden részfeladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például az 1. feladat esetén: „Adja meg a szöveget:”)! A képernyőn megjelenített üzenetek esetén az ékezetmentes kiírás is elfogadott.
1. Kérjen be a felhasználótól egy szöveget, majd határozza meg, hogy hány különböző karakter található a szövegben! A darabszámot és a karaktereket írja ki a képernyőre!
2. Olvassa be a szotar.txt állományból a szavakat, és a következő feladatok megoldása során ezekkel dolgozzon! Amennyiben nem tudja beolvasni az állományból a szavakat, akkor az első 10 szóval dolgozzon!
3. Az állományból beolvasott szavakat alakítsa át úgy, hogy minden szó karaktereit egyenként tegye ábécérendbe! Az így létrehozott szavakat írja ki az abc.txt állományba az eredeti állománnyal egyező sorrendben! Például: Eredeti
Ábécé sorrendben lévő
eertvz tervez aglmnouy nyugalom 4. Kérjen be a felhasználótól két szót, és döntse el, hogy a két szó anagramma-e! Ha azok voltak, írja ki a képernyőre az „Anagramma” szót, ha nem, akkor pedig a „Nem anagramma” szöveget!
5. Kérjen be a felhasználótól egy szót! A szotar.txt állomány szavaiból keresse meg a szó anagrammáit (a szót önmagát is annak tekintve)! Ha van találat, azokat egymás alá írja ki a képernyőre, ha nem volt találat, akkor írja ki a „Nincs a szótárban anagramma” szöveget! Klemand
152.oldal
2016
2010 október
Anagramma
6. Határozza meg, hogy a szotar.txt állományban melyik a leghosszabb szó! Ha több, ugyanannyi karakterből álló leghosszabb szó volt, akkor az ugyanazokat a karaktereket tartalmazó szavakat (amelyek egymás anagrammái) közvetlenül egymás alá írja ki! A feltételnek megfelelő összes szó pontosan egyszer szerepeljen a kiírásban!
7. Rendezze a szotar.txt állományban lévő szavakat a karakterek száma szerint növekvő sorrendbe! Az egyforma hosszúságú és ugyanazokat a karaktereket tartalmazó szavak (amelyek egymás anagrammái) szóközzel elválasztva ugyanabba a sorba kerüljenek! Az egyforma hosszúságú, de nem ugyanazokat a karaktereket tartalmazó szavak külön sorba kerüljenek! A különböző hosszúságú szavakat egy üres sorral különítse el egymástól! Az így rendezett szavakat írja ki a rendezve.txt állományba! Például:
Eredeti halat rakat ajak papi rakta ajka takar kaja satu vallat tarka pipa paplan
Klemand
Rendezett ajak ajka kaja papi pipa satu suta tusa utas halat rakat rakta takar tarka vallat paplan
153.oldal
2016
2010 október
Anagramma
package emeltinfo2010okt; import java.io.*; import java.util.*; /** * Anagramma * * @author Klemand */ public class EmeltInfo2010okt { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása \n"); System.out.print("Kérek egy szót! "); String szo = beolvas(); int i; int j; String betuk = ""; for (i = 1; i <= szo.length(); i++) { if (!(betuk.contains(szo.substring(i - 1, i)))) { betuk += szo.substring(i - 1, i); } } System.out.println(""); System.out.print("A beírt szó " + betuk.length() + " különböző karaktert tartalmaz: "); for (i = 1; i <= betuk.length(); i++) { System.out.print(betuk.substring(i - 1, i) + " "); } System.out.println("\n"); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A szotar.txt fájl beolvasása \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("szotar.txt")); String elsoSor; 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); } szavak.add(new SzavakTipus(elsoSor.trim())); String sor; while ((sor = behozatal.readLine()) != null) { szavak.add(new SzavakTipus(sor.trim())); } behozatal.close(); // ELLENŐRZÉS System.out.println("A szótár " + szavak.size() + " szót tartalmaz."); System.out.println("Az utolsó 5 szó: ");
Klemand
154.oldal
2016
2010 október
Anagramma
for (i = szavak.size() - 4; i <= szavak.size(); i++) { System.out.println(szavak.get(i - 1).szo + " " + szavak.get(i - 1).rendSzo); } System.out.println(""); //3. feleadat System.out.println("A 3. feladat megoldása"); System.out.println("A
karakterek szerint szavak kiíratása az abc.txt fájlba \n");
PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("abc.txt")); for (i = 1; i <= szavak.size(); i++) { szavak.get(i - 1).rendSzo = karRendezes(szavak.get(i - 1).szo); kivitel.println(szavak.get(i - 1).rendSzo); } kivitel.close(); System.out.println("Az abc.txt fájl kiíratása befejeződött. \n"); //4. feladat System.out.println("A 4. feladat megoldása"); String szo1; String szo2; System.out.println("Két bekért szó összehasonlítása \n"); System.out.print("Kérem az első szót! "); szo1 = beolvas(); System.out.println(""); System.out.print("Kérem a második szót! "); szo2 = beolvas(); System.out.println(""); if (karRendezes(szo1).equals(karRendezes(szo2))) { System.out.println("Anagramma"); } else { System.out.println("Nem anagramma"); } System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Egy bekért szó anagrammái a szótárban: \n"); System.out.print("Kérem a szót! "); szo = beolvas(); System.out.println(""); String szoR = karRendezes(szo); boolean van = false; for (i = 1; i <= szavak.size(); i++) { if (szavak.get(i - 1).rendSzo.equals(szoR)) { System.out.println(szavak.get(i - 1).szo); van = true; } } if (!van) { System.out.println("Nincs a szótárban anagramma"); } System.out.println("");
Klemand
155.oldal
2016
2010 október
Anagramma
//6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A leghosszabb szavak anagrammáik szerint csoportosítva: \n"); //A maximális szóhosszúság meghatározása int maxhossz = szavak.get(0).szo.length(); for (i = 1; i <= szavak.size(); i++) { if (szavak.get(i - 1).szo.length() > maxhossz) { maxhossz = szavak.get(i - 1).szo.length(); } } //A leghosszabb szavak rendezett alakjainak felvétele egy új tömblistába for (i = 1; i <= szavak.size(); i++) { if (szavak.get(i - 1).szo.length() == maxhossz) { j = 1; while ((j <= leghosszabb.size()) && !(szavak.get(i - 1).rendSzo.equals(leghosszabb.get(j - 1).rendSzo))) { j++; } if (j > leghosszabb.size()) { leghosszabb.add(new LeghosszabbTipus(szavak.get(i - 1).rendSzo)); } } } //A létrehozott tömblista rendezett szavainak anagrammái a szótárban for (i = 1; i <= leghosszabb.size(); i++) { for (j = 1; j <= szavak.size(); j++) { if (szavak.get(j - 1).rendSzo.equals(leghosszabb.get(i - 1).rendSzo)) { System.out.println(szavak.get(j - 1).szo); } } } System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A szavak hossza szerint rendezett szótár kiíratása a rendezve.txt fájlba: \n"); //A szavak rendezett alakjainak felvétele egy új tömblistába for (i = 1; i <= szavak.size(); i++) { j = 1; while ((j <= anagramma.size()) && !(szavak.get(i - 1).rendSzo.equals(anagramma.get(j - 1).rendSzo))) { j++; } if (j > anagramma.size()) { anagramma.add(new AnagrammaTipus(szavak.get(i - 1).rendSzo)); } }
Klemand
156.oldal
2016
2010 október
Anagramma
//A tömblista rendezése a szavak hossza szerint AnagrammaTipus asztal; for (i = 1; i <= anagramma.size(); i++) { int min = i; for (j = i + 1; j <= anagramma.size(); j++) { if (anagramma.get(j - 1).hossz < anagramma.get(min - 1).hossz) { min = j; } } asztal = anagramma.get(i - 1); anagramma.set(i - 1, anagramma.get(min - 1)); anagramma.set(min - 1, asztal); } //Kiíratás a feltételek szerint kivitel = new PrintWriter(new FileWriter("rendezve.txt")); for (i = 1; i <= anagramma.size(); i++) { for (j = 1; j <= szavak.size(); j++) { if (szavak.get(j - 1).rendSzo.equals(anagramma.get(i - 1).rendSzo)) { kivitel.print(szavak.get(j - 1).szo + " "); } } kivitel.println(); if (i < anagramma.size() && (anagramma.get(i - 1).hossz < anagramma.get(i).hossz)) { kivitel.println(); } } kivitel.close(); System.out.println("Az abc.txt fájl kiíratása befejeződött. \n"); } //************************************************************ public static String beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine().trim(); } static ArrayList<SzavakTipus> szavak = new ArrayList<>(); public static class SzavakTipus { private final String szo; private String rendSzo; public SzavakTipus(String sor) { szo = sor; rendSzo = ""; } }
Klemand
157.oldal
2016
2010 október
Anagramma
static ArrayList leghosszabb = new ArrayList<>(); public static class LeghosszabbTipus { private String rendSzo; public LeghosszabbTipus(String rendSzoBe) { rendSzo = rendSzoBe; } } static ArrayList anagramma = new ArrayList<>(); public static class AnagrammaTipus { private String rendSzo; private int hossz; public AnagrammaTipus(String rendSzoBe) { rendSzo = rendSzoBe; hossz = rendSzo.length(); } } public static String karRendezes(String szo) { int hossz = szo.length(); int i, j, min; String asztal; String[] daraboltSzo = szo.split(""); for (i = 1; i <= hossz; i++) { min = i; for (j = i + 1; j <= hossz; j++) { if (daraboltSzo[j - 1].compareTo(daraboltSzo[min - 1]) < 0) { min = j; } } asztal = daraboltSzo[i - 1]; daraboltSzo[i - 1] = daraboltSzo[min - 1]; daraboltSzo[min - 1] = asztal; } String rendezett = ""; for (i = 1; i <= hossz; i++) { rendezett += daraboltSzo[i - 1]; } return rendezett; } }
Klemand
158.oldal
2016
2010 október
Anagramma
run: Az 1. feladat megoldása Kérek egy szót! rekettyebokor A beírt szó 7 különböző karaktert tartalmaz: r e k t y b o A 2. feladat megoldása A szotar.txt fájl beolvasása A szótár 121 szót tartalmaz. Az utolsó 5 szó: farom karomba kalandtura hatoljanak abrakom A 3. feladat megoldása A karakterek szerint szavak kiíratása az abc.txt fájlba Az abc.txt fájl kiíratása befejeződött. A 4. feladat megoldása Két bekért szó összehasonlítása Kérem az első szót! nyugat Kérem a második szót! gyanut Anagramma Az 5. feladat megoldása Egy bekért szó anagrammái a szótárban: Kérem a szót! kegyet ketyeg tegyek A 6. feladat megoldása A leghosszabb szavak anagrammáik szerint csoportosítva: hajnalokat hatoljanak kalandtura A 7. feladat megoldása A szavak hossza szerint rendezett szótár kiíratása a rendezve.txt fájlba: Az abc.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 2 minutes 30 seconds)
Klemand
159.oldal
2016
2010 október
Anagramma
abc.txt: eeenssz eekrstz eeekrst eeekrtz eeeknrsty aaadhmrt aaadhmrt aaahjklnot aabjsz aabjsz aadijk aadijk aadkln aadkln aadkln aaeghilmn aaeghilmn aafglmmo aafglmmo aafgortt aafgortt aafilt aafilt aaghknor aaghknor
aahklott aahklott aahklott aahlmot aahlmot aaistvz aaistvz aajk aajk aajk aakklnop aakklnop aakknru aakknru aaklnttu aaklnttu aaklotv aaklotv aaklotv aakmort aakmort aakrt aakrt aakrt aakrt
aalnpp aalnpp aalnty aalnty abdglnoo abdglnoo abkmnoor abkmnoor aborsz aborsz acknoorst acknoorst adhkort adhkort adiknops adiknops adruv adruv aglosz aglosz ahklloot ahklloot ahnossz ahnossz aiklsz
aiklsz aipp aipp akkoort akkoort anoprt anoprt anoprt boort boort ddeegir ddeegir deeeflt deeeflt deeeflt eegkty eegkty eeinst eeinst eekllt eekllt eekllt eekllt eiimnrstz eiimnrstz
kkoor kkoor astu astu astu astu aklop aklop aklop ellot ellot ellot akku akku afmor afmor afmor aabkmor aaadklnrtu aaahjklnot aabkmor
rendezve.txt: ajak papi satu kuka
ajka kaja pipa suta tusa utas akku
rakat durva botor korok pakol eltol forma
rakta udvar robot orkok lapok letol amorf
falait nappal alanyt borzas szagol alszik parton ketyeg
sietne kellet lelket leltek szabja kiadja kaland lankad
takar tarka
polka elolt farom
fiatal paplan nyalta szobra szolga szikla pontra torpan tegyek
Klemand
istene elkelt bajsza ajkaid dalnak
hordtak hasznos alhatom kereszt korokat szavait didereg fedelet eszesen akarunk keretes alkotva karomat keretez karomba
korhadt hosszan hatalom orkokat tavaszi eddigre feledte lefedte uraknak lovakat vakolat takarom
koromban hangokra kapdosni napokkal hadartam alattunk alkothat alkoholt faragott fogalmam boldogan
romokban harangok kispadon pakolnak maradhat tanultak halottak holtakat hallotok forgatta fogammal dologban
nyertesek miniszter miszerint alighanem meghalnia csontokra roncsokat hajnalokat hatoljanak kalandtura
abrakom
160.oldal
2016
2011 május
Szójáték
2011 május: Szójáték Sok szórakoztató szójátékkal lehet elütni az időt. Ezek közül némelyekhez segítségül hívhatjuk a technikát is. Az alábbiakban szójátékokhoz kapcsolódó problémákat kell megoldania. A feladatok megoldásához rendelkezésére áll a szoveg.txt fájl, amelybe Gárdonyi Géza Egri csillagok című regényéből gyűjtöttünk ki szavakat. Az állományban csak olyan szavak szerepelnek, melyek az angol ábécé betűivel leírhatók, és minden szó csak egyszer szerepel. A könnyebb feldolgozhatóság érdekében valamennyi szó csupa kisbetűvel szerepel, szavanként külön sorban. Tudjuk, hogy ebben az állományban a szavak 20 karakternél nem hosszabbak. Készítsen programot, amely az alábbi feladatokat megoldja! A program forráskódját szavak néven mentse! Minden – képernyőre írást igénylő – részfeladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például a 1. feladat esetén: „1. feladat Adjon meg egy szót: ”)! Az ékezetmentes kiírás is elfogadott.
1. Kérjen be a felhasználótól egy szót, és döntse el, hogy tartalmaz-e magánhangzót! Amennyiben tartalmaz, írja ki, hogy „Van benne magánhangzó.”! Ha nincs, akkor írja ki, hogy „Nincs benne magánhangzó.”! A begépelendő szóról feltételezheti, hogy csak az angol ábécé kisbetűit tartalmazza. (Az angol ábécé magánhangzói: a, e, i, o, u.)
2. Írja ki a képernyőre, hogy melyik a leghosszabb szó a szoveg.txt állományban, és az hány karakterből áll! Ha több azonos leghosszabb hosszúságú szó is van a szógyűjteményben, akkor azok közül elegendő egyetlen szót kiírnia. A feladatot úgy oldja meg, hogy tetszőleges hosszúságú szövegállomány esetén működjön, azaz a teljes szöveget ne tárolja a memóriában!
3. A magyar nyelv szavaiban általában kevesebb a magánhangzó, mint a mássalhangzó. Határozza meg, hogy az állomány mely szavaiban van több magánhangzó, mint egyéb karakter! Ezeket a szavakat írja ki a képernyőre egy-egy szóközzel elválasztva! A szavak felsorolása után a mintának megfelelően az alábbi adatokat adja meg:
• hány szót talált; • hány szó van összesen az állományban; • a talált szavak hány százalékát teszik ki az összes szónak! A százalékot két tizedessel szerepeltesse! Például: 130/3000 : 4,33% A következőkben a szólétra játékkal kapcsolatos feladatokat kell megoldania. A szólétra építés egy olyan játék, amikor adott egy szó közepe, például isz, amit a létra fokának nevezünk. Ennek a szócsonknak az elejére és a végére kell egy-egy betűt illesztenünk úgy, hogy értelmes szót hozzunk létre, például hiszi vagy liszt. Ezt az értelmes szót a játékban létraszónak nevezzük.
Klemand
161.oldal
2016
2011 május
Szójáték
Az adott szórészlethez minél több létraszót tudunk kitalálni, annál magasabb lesz a szólétra. A cél az, hogy egy megadott szócsonkhoz a lehető legmagasabb szólétrát építsük. Például: Szórészlet: isz A hozzá tartozó létraszavak: hiszi liszt viszi tiszt …
4. Hozzon létre egy tömb vagy lista adatszerkezetet, és ebbe gyűjtse ki a fájlban található ötkarakteres szavakat! A szoveg.txt állomány legfeljebb 1000 darab ötkarakteres szót tartalmaz. Kérjen be a felhasználótól egy 3 karakteres szórészletet! Írja ki a képernyőre a szólétra építés szabályai szerint hozzá tartozó ötkarakteres szavakat a tárolt adathalmazból! A kiírásnál a szavakat egy-egy szóköz válassza el! (Teszteléshez használhatja például az „isz” vagy „obo” szórészleteket, mert ezekhez a megadott szövegállományban több létraszó is tartozik.)
5. Az eltárolt ötkarakteres szavakból csoportosítsa azokat a szavakat, melyek ugyanannak a hárombetűs szórészletnek a létraszavai! Hozzon létre egy letra.txt állományt, amelybe ezeket a szavakat írja az alábbiak szerint:
• minden szó külön sorba kerüljön; • csak olyan szó szerepeljen az állományban, aminek van legalább egy párja, amivel egy létrát alkotnak (azaz első és utolsó karakter nélkül megegyeznek); • az egy létrához tartozó szavak közvetlenül egymás után helyezkedjenek el; • két létra szavai között egy üres elválasztó sor legyen! Például: letra.txt megye vegye hegyi tegye lehet teher mehet tejes fejet fejen neked nekem reked ...
Klemand
162.oldal
2016
2011 május
Szójáték
package emeltinfo2011maj; import java.io.*; import java.util.*; /** * Szójáték * * @author Klemand */ public class EmeltInfo2011maj { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása "); System.out.println("Van-e magánhangzó egy bekért szóban? \n"); System.out.print("Kérek egy szót! "); String szo = beolvas().toLowerCase(); int mghDb = mghDbMeghat(szo); if (mghDb > 0) { System.out.println(mghDb + " magánhangzó van benne."); } else { System.out.println("Nincs benne magánhangzó."); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A leghosszabb szó meghatározása a szoveg.txt fájl teljes beolvasása nélkül \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("szoveg.txt")); String elsoSor; 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); } String leghosszabb = elsoSor; int maxhossz = leghosszabb.length(); String sor; while ((sor = behozatal.readLine()) != null) { if (sor.length() > maxhossz) { leghosszabb = sor; maxhossz = leghosszabb.length(); } } behozatal.close(); System.out.println("A leghosszabb szó: " + leghosszabb + ", hossza: " + maxhossz + " karakter."); System.out.println(""); //3. feleadat System.out.println("A 3. feladat megoldása"); System.out.println("Statisztika a több magánhangzós szavakról: \n"); behozatal = new BufferedReader(new FileReader("szoveg.txt"));
Klemand
163.oldal
2016
2011 május
Szójáték
int meret = 0; int mghTobbDb = 0; elsoSor = behozatal.readLine(); if (elsoSor.charAt(0) == (char) 0xFEFF) { elsoSor = elsoSor.substring(1); } meret++; if (elsoSor.length() < 2 * mghDbMeghat(elsoSor)) { mghTobbDb++; } while ((sor = behozatal.readLine()) != null) { meret++; if (sor.length() < 2 * mghDbMeghat(sor)) { mghTobbDb++; } } behozatal.close(); System.out.print(mghTobbDb + "/" + meret + " : "); double szazalek = (double) mghTobbDb / meret; szazalek *= 100; System.out.printf("%.2f", szazalek); System.out.println("% \n"); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Egy bekért szó létraszavai a beolvasott ötkarakteres szavak között \n"); System.out.print("Kérek egy ékezetmentes 3 karakteres szót ! "); szo = beolvas(); System.out.println(""); behozatal = new BufferedReader(new FileReader("szoveg.txt")); elsoSor = behozatal.readLine(); if (elsoSor.charAt(0) == (char) 0xFEFF) { elsoSor = elsoSor.substring(1); } if (elsoSor.length() == 5) { otkar.add(new OtkarTipus(elsoSor)); } while ((sor = behozatal.readLine()) != null) { if (sor.length() == 5) { otkar.add(new OtkarTipus(sor)); } } behozatal.close(); int i; for (i = 1; i <= otkar.size(); i++) { if (otkar.get(i - 1).szo.substring(1, 4).equals(szo)) { System.out.println(otkar.get(i - 1).szo + ""); } } System.out.println("");
Klemand
164.oldal
2016
2011 május
Szójáték
//5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("A létraszavak kiíratása csoportosítva a letra.txt fájlba: \n"); //Az ötkarakteres szavak rendezése, hogy szebb legyen a kimeneti állomány OtkarTipus asztal; int j; for (i = 1; i <= otkar.size(); i++) { int min = i; for (j = i + 1; j <= otkar.size(); j++) { if (otkar.get(j - 1).szo.compareTo(otkar.get(min - 1).szo) < 0) { min = j; } } asztal = otkar.get(i - 1); otkar.set(i - 1, otkar.get(min - 1)); otkar.set(min - 1, asztal); } //A létrafokok felvétele egy új tömblistába for (i = 1; i <= otkar.size(); i++) { j = 1; while ((j <= fokok.size()) && !(otkar.get(i - 1).fok.equals(fokok.get(j - 1).fok))) { j++; } if (j <= fokok.size()) { fokok.get(j - 1).letraDb++; } else { fokok.add(new FokokTipus(otkar.get(i - 1).fok, 1)); } } PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("letra.txt")); for (i = 1; i <= fokok.size(); i++) { if (fokok.get(i - 1).letraDb > 1) { for (j = 1; j <= otkar.size(); j++) { if (otkar.get(j - 1).fok.equals(fokok.get(i - 1).fok)) { kivitel.println(otkar.get(j - 1).szo); } } if (i < fokok.size()) { kivitel.println(); } } } kivitel.close(); System.out.println("Az abc.txt fájl kiíratása befejeződött. \n"); } //************************************************************ public static String beolvas() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in, "Cp1250")); return bill.readLine().trim(); }
Klemand
165.oldal
2016
2011 május
Szójáték
public static int mghDbMeghat(String szo) { String mgh = "aeiou"; int hossz = szo.length(); int db = 0; for (int i = 1; i <= hossz; i++) { if (mgh.contains(szo.substring(i - 1, i))) { db++; } } return db; } static ArrayList otkar = new ArrayList<>(); public static class OtkarTipus { private final String szo; private final String fok; public OtkarTipus(String sor) { szo = sor; fok = szo.substring(1, 4); } } static ArrayList fokok = new ArrayList<>(); public static class FokokTipus { private final String fok; private int letraDb; public FokokTipus(String fokBe, int letraDbBe) { fok = fokBe; letraDb = letraDbBe; } } }
Klemand
166.oldal
2016
2011 május
Szójáték
run: Az 1. feladat megoldása Van-e magánhangzó egy bekért szóban? Kérek egy szót! paradicsom 4 magánhangzó van benne. A 2. feladat megoldása A leghosszabb szó meghatározása a szoveg.txt fájl teljes beolvasása nélkül A leghosszabb szó: angyalszobrokat, hossza: 15 karakter. A 3. feladat megoldása Statisztika a több magánhangzós szavakról: 79/7825 : 1,01% A 4. feladat megoldása Egy bekért szó létraszavai a beolvasott ötkarakteres szavak között Kérek egy ékezetmentes 3 karakteres szót ! ada hadak hadat vadak Az 5. feladat megoldása A létraszavak kiíratása csoportosítva a letra.txt fájlba: Az abc.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 59 seconds)
letra.txt: addig eddig
onnan
matyi
agyag ugyan
arcok arcon arcot
bajod bajom bajos hajol lajos vajon zajos
agyba egybe
arcuk arcul
bakta rakta
adtak adtam
akkor ekkor aludj aludt amely emeli emelt annak
Klemand
annyi ennyi
babot habos rabok rabom rabon rabot zabot bajba hajba lajbi
balra falra barom karok karom karon marok maros batyu
benne lenne lenni menni tenni venni beteg hetet vetem bokor fokot pokol borok boros forog korom koron poros
sorom soron torok borul poruk budai cudar ludak rudat cecey pecek cicus vicus csele cselt dalba falba
dalia falig dalon dalos falon halok halom malom darab harag karaj marad sarat delik delit telik deres kerek
167.oldal
keres mered sereg terek terem teret verek verem veres dobog dobok dobon dobos dobot koboz lobog robog donga rongy duhog
suhog zuhog
eredj eredt
egyed egyek egyem egyes egyet
estek estem isten
emitt imitt enged engem inges inget ennek innen ennie innia
eszek eszel eszem eszes iszen eszik iszik ettek itten
ezret falai falak falat halad halas halat kalap falud falun falut farka marka sarka tarka …
ezred ezrei ezrek ezren
2016
2011 május idegennyelvű
Rejtvény
2011 május idegennyelvű: Rejtvény Egy weboldalon érdekes rejtvényt tesznek közzé hétről hétre. A rejtvényekben egy N×Mes területre világítótornyokat helyeznek le. Ezeket a tornyokat számmal jelölik. Minden alkalommal az a feladat, hogy a területre el kell helyezni X darab hajót úgy, hogy minden toronyból (vízszintesen és függőlegesen összesen) annyi hajó legyen látható, ahányas szám a tornyot jelképező mezőben van! A hajókra vonatkozó szabályok a következők:
• • • •
Minden hajó egy négyzet nagyságú. A hajók nem érintkezhetnek egymással, még átlós irányban sem. A hajók nem érinthetik a világítótornyokat, még átlós irányban sem. A hajók egymást nem takarják ki. Azaz a világítótoronyból az egy vonalban lévő hajók is látszanak.
Például: Egy 5×4-es terület és 3 hajó esetén
A weboldalon ugyanúgy, mint az előző hetekben, egy 10×10-es négyzetbe kell elhelyezni 12 darab hajót. A versenyzők által beküldött megfejtéseket alkalmazás segítségével összefűzik egy txt állományba. Ennek a fájlnak az első sora a megfejtések számát tartalmazza, ami maximálisan 20 darab lehet. Minden megfejtés előtt pedig a megfejtő neve található. Az egyes megfejtésekben a vizet 0-val, a világítótornyot egy 1 és 9 közötti számmal, a hajókat pedig 11-es számmal jelölik. A fájlban a számokat egy-egy szóközzel választják el. Például: A megoldas.txt állomány egy részlete. (A példát szabályos táblázatban jelenítjük meg a jobb átláthatóság érdekében.)
10 Absolon 0 0 0 0 11 11 0 2 0 0 0 0 0 0 0 0 0 0 11 0 0 3 0 0 0 0 0 0 0 2 0 11 0 0 0 0 0 0 0 0 0 11 0 3 0 0 0 0 0 0 …
Klemand
0 11 0 0 0 0 0 0 0 11 1 0 11 0 0 0 0 0 0 0 0 0 0 11 0 0 11 0 0 0 0 0 0 3 0 0 3 0 0 0 0 0 0 11 0 0 11 0 0 0
168.oldal
2016
2011 május idegennyelvű
Rejtvény
A 2. sor 3. oszlopában tehát egy világítótorony van, amelynek sorában és oszlopában öszszesen 2 hajó lehet. A 2. sor 1. oszlopában és a 2. sor 10. oszlopában egy-egy hajó található. Készítsen programot, amely a rejtvényre érkező megoldások helyességét ellenőrzi! A program forráskódját rejtveny néven mentse! Minden feladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például az 1. feladat esetén: „Adja meg a torony adatait!”)! Az ékezetmentes kiírás is elfogadott. A feladatok megoldása során feltételezzük, hogy a beolvasott adatok helyesek, ezért azokat sehol nem kell ellenőrizni!
1. Kérje be a felhasználótól egy 10×10-es táblára vonatkozóan egy világítótorony pozícióját (a torony helyének sor és oszlop száma), és a toronyból látható hajók számát! A rejtvény megfejtését a nagy számmal rendelkező tornyoknál érdemes kezdeni. Ezért, ha a torony értéke nagyobb, mint három, akkor írja ki a képernyőre, hogy „Nehéz torony.”, más esetben ne írjon ki semmit!
2. A megadott világítótorony helyzete alapján állapítsa meg, hogy a szabályok szerint a világítótorony körül mely helyekre biztosan nem kerülhet hajó! Az eredményt írassa ki a képernyőre úgy, hogy a tiltott helyek sor és oszlop azonosítói vesszővel elválasztva külön sorokba kerüljenek! Például ha a világítótorony a 2, 3 pozícióban van, akkor:
1,2 1,3 1,4 2,2 2,4 3,2 3,3 3,4 3. A feladvany.txt állomány tartalmazza az erre a hétre kiadott rejtvényt a már ismert formában. Olvassa be a rejtvényt az állományból és a megoldas.txt állományban beküldött megoldások közül szűrje ki azokat, amelyek nem az e heti feladványra érkeztek. Ezen megfejtő(k) nevét írja ki a képernyőre! Ha minden megfejtés az e heti feladványra érkezett, akkor írja ki a képernyőre, hogy „Mindegyik megoldás erre a heti feladványra érkezett.”!
4. Azok közül a megoldások közül, amelyek erre a heti feladványra érkeztek, állapítsa meg, hogy melyikekben van kevesebb vagy több hajó megadva, mint 12! Írja ki a képernyőre, hogy e szempontból hány darab hibás „megoldás” volt!
5. Hány olyan szabálytalan megoldás született az e heti feladatra, amelyben: – a hajók száma megfelelő és – egy vagy több hajó elhelyezése a szomszédsági kapcsolatokra vonatkozó szabályoknak nem megfelelő? Az eredményt írja ki a képernyőre!
6. Határozza meg, hogy hány megoldás volt helyes a beküldöttek közül! Az ellenőrzésnél vegye figyelembe az előző pontokban leírtakat, valamint azt, hogy a világítótornyok az értéküknek megfelelő számú hajót látnak-e! A helyes beküldők nevét írja ki a képernyőre!
Klemand
169.oldal
2016
2011 május idegennyelvű
Rejtvény
package emeltinfo2011mid; import java.io.*; import java.util.*; /** * Rejtvény * * @author Klemand */ public class EmeltInfo2011mid { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("Egy beolvasott torony nehézsége \n"); System.out.println("Kérem a torony adatait!"); System.out.println("A sor száma:"); int sor = egeszBevitel(1, 10); System.out.println("Az oszlop száma:"); int oszlop = egeszBevitel(1, 10); System.out.println("A látható hajók száma:"); int lathajo = egeszBevitel(1, 9); System.out.println(""); if (lathajo > 3) { System.out.println("Nehéz torony."); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A hajók számára tiltott mezők a torony körül: \n"); int i, j; for (i = sor - 1; i <= sor + 1; i++) { for (j = oszlop - 1; j <= oszlop + 1; j++) { if (i >= 1 && i <= 10 && j >= 1 && j <= 10 && !(i == sor && j == oszlop)) { System.out.println(i + "," + j); } } } System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("A feladvany.txt és a megoldasok.txt fájlok beolvasása "); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("feladvany.txt")); String elsoSor; String fsor; String[] daraboltSor; int[][] feladvany = new int[10][10]; 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); }
Klemand
170.oldal
2016
2011 május idegennyelvű
Rejtvény
daraboltSor = elsoSor.split(" "); for (j = 1; j <= 10; j++) { feladvany[0][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } for (i = 2; i <= 10; i++) { daraboltSor = behozatal.readLine().split(" "); for (j = 1; j <= 10; j++) { feladvany[i - 1][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } } behozatal.close(); System.out.println(""); behozatal = new BufferedReader(new FileReader("megoldas.txt")); int n, m; elsoSor = behozatal.readLine(); if (elsoSor.charAt(0) == (char) 0xFEFF) { elsoSor = elsoSor.substring(1); } n = Integer.parseInt(elsoSor); //a megoldások száma int[][][] megoldas = new int[n][10][10]; for (m = 1; m <= n; m++) { fsor = behozatal.readLine(); megoldasok.add(new MegoldasokTipus(fsor)); for (i = 1; i <= 10; i++) { daraboltSor = behozatal.readLine().split(" "); for (j = 1; j <= 10; j++) { megoldas[m - 1][i - 1][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } } } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése \n"); System.out.println("A beküldött megoldások száma: " + megoldasok.size()); System.out.println("Feladvány/Megoldás: "); System.out.println(""); for (m = 1; m <= n; m++) { System.out.println("Név: " + megoldasok.get(m - 1).nev); System.out.println(""); for (i = 1; i <= 10; i++) { for (j = 1; j <= 10; j++) { System.out.print(feladvany[i - 1][j - 1] + "/" + megoldas[m - 1][i - 1][j - 1] + "\t"); } System.out.println(""); } System.out.println(""); } System.out.println("");
Klemand
171.oldal
2016
2011 május idegennyelvű
Rejtvény
//A nem e heti feladványra érkező megfejtések kiszűrése System.out.println("A nem e heti feladványra érkező megoldások kiszűrése: \n"); boolean jo; for (m = 1; m <= n; m++) { jo = true; i = 1; while (i <= 10 && jo) { j = 1; while (j <= 10 && ((megoldas[m - 1][i - 1][j - 1] % 11) == feladvany[i - 1][j - 1])) { j++; } if (j <= 10) { jo = false; } i++; } megoldasok.get(m - 1).heti = jo; } int nemHetiDb = 0; for (m = 1; m <= n; m++) { if (!(megoldasok.get(m - 1).heti)) { System.out.println(megoldasok.get(m - 1).nev); nemHetiDb++; } } if (nemHetiDb == 0) { System.out.println("Mindegyik megoldás erre a heti feladványra érkezett."); } System.out.println(""); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("A 12-nél kevesebb vagy több hajót beküldők a heti megfejtők között: \n"); int hajoDb; for (m = 1; m <= n; m++) { hajoDb = 0; if (megoldasok.get(m - 1).heti) { for (i = 1; i <= 10; i++) { for (j = 1; j <= 10; j++) { if (megoldas[m - 1][i - 1][j - 1] == 11) { hajoDb++; } } } megoldasok.get(m - 1).joHajoDb = (hajoDb == 12); } } int hibasDb = 0; for (m = 1; m <= n; m++) { if (!(megoldasok.get(m - 1).joHajoDb)) { //A heti szűrés nem kell újra (úgy vettük fel a kezdőértékeket)! System.out.println(megoldasok.get(m - 1).nev); hibasDb++; } } System.out.println("A hibás számú hajót beküldők száma: " + hibasDb); System.out.println("");
Klemand
172.oldal
2016
2011 május idegennyelvű
Rejtvény
//5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Tiltott helyen lévő hajót beküldők a még versenyben lévő megfejtők között: \n"); for (m = 1; m <= n; m++) { if (megoldasok.get(m - 1).heti && megoldasok.get(m - 1).joHajoDb) { boolean joHely = true; i = 1; while (i <= 10 && joHely) { j = 1; while (j <= 10 && joHajokE(i, j, megoldas[m - 1])) { j++; } if (j <= 10) { joHely = false; } i++; } megoldasok.get(m - 1).joHajoHely = joHely; } } hibasDb = 0; for (m = 1; m <= n; m++) { if (!(megoldasok.get(m - 1).joHajoHely)) { //A szűrések nem kellenek újra (úgy vettük fel a kezdőértékeket)! System.out.println(megoldasok.get(m - 1).nev); hibasDb++; } } System.out.println("A hibás számú hajót beküldők száma: " + hibasDb); System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A helyes megoldást beküldők a heti feladványra: \n"); for (m = 1; m <= n; m++) { if (megoldasok.get(m - 1).heti && megoldasok.get(m - 1).joHajoDb && megoldasok.get(m - 1).joHajoHely) { boolean annyi = true; i = 1; while (i <= 10 && annyi) { j = 1; while (j <= 10 && annyiE(i, j, megoldas[m - 1])) { j++; } if (j <= 10) { annyi = false; } i++; } megoldasok.get(m - 1).annyitLat = annyi; } }
Klemand
173.oldal
2016
2011 május idegennyelvű
Rejtvény
int joDb = 0; for (m = 1; m <= n; m++) { if (megoldasok.get(m - 1).annyitLat) { //A szűrések nem kellenek újra (úgy vettük fel a kezdőértékeket)! System.out.println(megoldasok.get(m - 1).nev); joDb++; } } System.out.println("A helyes megfejtést beküldők száma: " + joDb); System.out.println(""); } //************************************************************ public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } static ArrayList<MegoldasokTipus> megoldasok = new ArrayList<>(); public static class MegoldasokTipus { private private private private private
final String nev; boolean heti; boolean joHajoDb; boolean joHajoHely; boolean annyitLat;
public MegoldasokTipus(String nevBe) //konstruktor { nev = nevBe; heti = true; //a vizsgálat állítja a valódi értékére joHajoDb = true; joHajoHely = true; annyitLat = false; } }
Klemand
174.oldal
2016
2011 május idegennyelvű
Rejtvény
public static boolean joHajokE(int sor, int oszlop, int[][] megold) { int u, v; boolean jo = true; if ((megold[sor - 1][oszlop - 1]) != 0) {//ha nem víz u = sor - 1; while ((u <= sor + 1) && jo) { v = oszlop - 1; while ((v <= oszlop + 1) && jo) { if (u >= 1 && u <= 10 && v >= 1 && v <= 10 && !(u == sor && v == oszlop)) { jo = (megold[u - 1][v - 1] != 11); } v++; } u++; } } return jo; } public static boolean annyiE(int sor, int oszlop, int[][] megold) { int u, v; int lathato = 0; if ((megold[sor - 1][oszlop - 1]) for (u = 1; u <= 10; u++) { for (v = 1; v <= 10; v++) if ((u == sor || v == lathato++; } } } return (lathato == megold[sor } else { return true; }
% 11 != 0) {//ha világítótorony { oszlop) && (megold[u - 1][v - 1] == 11)) {
- 1][oszlop - 1]);
} }
Klemand
175.oldal
2016
2011 május idegennyelvű
Rejtvény
run: Az 1. feladat megoldása Egy beolvasott torony nehézsége Kérem a torony adatait! A sor száma: Kérem a számot! (1 <= beírt szám <= 10) :8 Az oszlop száma: Kérem a számot! (1 <= beírt szám <= 10) :10 A látható hajók száma: Kérem a számot! (1 <= beírt szám <= 9) :4 Nehéz torony. A 2. feladat megoldása A hajók számára tiltott mezők a torony körül: 7,9 7,10 8,9 9,9 9,10 A 3. feladat megoldása A feladvany.txt és a megoldasok.txt fájlok beolvasása A beolvasás ellenőrzése A beküldött megoldások száma: 10 Feladvány/Megoldás: Név: Absolon 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0 0/11 0/0 0/11 0/0
0/0 2/2 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0 0/0 0/0 0/0 3/3 0/0
0/11 0/0 0/0 0/0 0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11 0/0
0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 2/2 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0 0/0 0/0 0/0 3/3 0/0
0/11 0/0 0/0 0/0 0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11 0/0
0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 2/2 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0
0/11 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/0
0/11 0/0 0/0 0/0 0/0
0/0 0/0 0/11 0/0 0/0
0/0 0/0 0/0 0/0 0/11
0/0 0/11 0/0 0/0 0/0
Név: Agaton 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0 0/11 0/0 0/11 0/0
Név: Kasztor 0/0 0/11 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3
Klemand
176.oldal
2016
2011 május idegennyelvű 0/0 0/0 0/0 0/0 0/0
0/0 0/11 0/0 0/11 0/0
Rejtvény
0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 3/3 0/0
2/2 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/0
0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/0 0/0 0/0
0/0 3/3 0/0 0/11 0/0
0/0 0/0 0/0 0/0 0/0
0/0 2/2 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0 0/0 0/0 0/0 3/3 0/0
0/11 0/0 0/0 0/0 0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11 0/0
0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 2/2 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0 0/0 0/0 0/0 3/3 0/0
0/11 0/0 0/0 0/0 0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11 0/0
0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 2/2 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0 0/0 0/0 0/0 3/3 0/0
0/11 0/0 0/0 0/0 0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11 0/0
0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 2/2 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0 0/0 0/0 0/0 3/3 0/0
0/11 0/0 0/0 0/0 0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/11 0/0 0/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11 0/0
0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 2/2 0/0 0/0
0/0 0/0 0/0 0/11
0/11 0/0 0/0 0/0
0/0 0/0 1/1 0/0
0/11 0/0 0/0 0/0
0/0 0/0 0/11 0/0
0/0 0/0 0/0 0/0
0/0 0/11 0/0 0/0
Név: Selton 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0 0/11 0/0 0/11 0/0
Név: Folkus 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0 0/11 0/0 0/11 0/0
Név: Verner 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0 0/11 0/0 0/0 0/0
Név: Meliton 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0 0/11 0/0 0/11 0/0
Név: Bazil 0/0 0/11 0/0 0/0
0/0 0/0 0/0 0/0
Klemand
177.oldal
2016
2011 május idegennyelvű 0/0 0/0 0/0 0/0 0/0 0/0
3/3 0/0 0/11 0/0 0/11 0/0
Rejtvény
0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0
0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/0 0/0 0/0 0/0
0/11 0/0 3/3 0/0 0/11 0/0
0/0 0/0 0/0 0/0 0/0 0/0
0/0 2/0 0/0 0/2 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/0 0/0 0/3 0/0 3/11 0/0
0/0 0/0 0/0 0/11 0/0 2/0 0/0 0/0 0/0 0/0
0/0 0/2 1/0 0/0 0/0 0/0 0/0 0/0 0/11 0/0
0/0 0/0 0/0 0/11 0/0 0/2 0/0 3/0 0/0 0/0
0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/3 0/0
0/0 0/0 0/1 0/0 0/0 0/0 3/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/11 0/0 0/11 0/0 0/11 0/0
0/0 2/2 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/11 0/0 0/0 0/0 0/0 3/3 0/0
0/11 0/0 0/0 0/0 0/0 2/2 0/0 0/0 0/0 0/0
0/0 0/0 1/1 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/11 0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11
0/0 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 0/11 0/0 3/3 0/0 0/11 0/0
0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/2
Név: Ildefonz 0/0 0/0 0/11 0/0 0/11 0/0 0/0 0/0 0/0 0/2
0/2 0/0 0/0 0/0 3/0 0/0 0/11 0/0 0/0 0/0
Név: Ozor 0/0 0/11 0/0 0/0 0/0 0/0 0/0 0/0 0/0 0/0
0/0 0/0 0/0 0/0 3/3 0/0 0/11 0/0 0/11 0/0
A nem e heti feladványra érkező megoldások kiszűrése: Ildefonz Ozor A 4. feladat megoldása A 12-nél kevesebb vagy több hajót beküldők a heti megfejtők között: Absolon Verner A hibás számú hajót beküldők száma: 2 Az 5. feladat megoldása Tiltott helyen lévő hajót beküldők a még versenyben lévő megfejtők között: Selton Meliton A hibás számú hajót beküldők száma: 2 A 6. feladat megoldása A helyes megoldást beküldők a heti feladványra: Kasztor Folkus Bazil A helyes megfejtést beküldők száma: 3 BUILD SUCCESSFUL (total time: 25 seconds)
Klemand
178.oldal
2016
2011 október
Pitypang
2011 október: Pitypang A kerekdombi Pitypang wellness hotel nem régen nyitotta meg kapuit. A szállodában összesen 27 szoba van. A szobák egységesen kétágyasak, de minden szobában egy pótágy elhelyezésére is van lehetőség. Árképzés szempontjából három különböző időszakot határolt el a szálloda vezetősége: tavaszi, nyári és őszi szakaszt. Ennek megfelelően az árakat az alábbi táblázat tartalmazza. Tavasz
Nyár
Ősz
01. 01. – 04. 30.
05. 01. – 08. 31.
09. 01. – 12. 31.
9 000 Ft
10 000 Ft
8 000 Ft
A feltüntetett értékek egy szoba árát mutatják egy éjszakára. Ha csak egy fő száll meg, akkor is ki kell fizetni a teljes szobaárat. Egy adott foglalás besorolása az érkezés napjától függ. A pótágy díja 2 000 Ft éjszakánként. Amennyiben a vendég igényel reggelit, azért a fenti áron felül személyenként és naponként 1 100 Ft-ot kell fizetni. Ha például a két felnőttből és egy gyermekből álló Tóth család április 30. és május 4. között 4 éjszakát tölt a hotelben és kér reggelit, akkor ők az alábbi összegeket fizetik:
• • •
4 × 9 000 Ft-ot a szobáért, 4 × 2 000 Ft-ot a pótágyért, 4 × 3 × 1 100 Ft-ot a reggeliért.
A végső számla így 36 000 Ft + 8 000 Ft + 13 200 Ft = 57 200 Ft lesz. A szálloda eddigi foglalásait a pitypang.txt fájl tartalmazza. Az első sor a fájlban tárolt foglalások számát mutatja. A további sorokban szóközzel elválasztva soronként az alábbi adatok találhatók:
• • • • • • •
a foglalás sorszáma, a szoba száma (1–27), az érkezés napjának sorszáma, a távozás napjának sorszáma, a vendégek száma, kérnek-e reggelit (1=igen vagy 0=nem), a foglalást végző vendég nevéből képzett azonosítója (maximum 25 karakter).
A napok sorszámozása január 1-jétől (1-es sorszám) kezdődik. Április 30-hoz például a 31 + 28 + 31 + 30 = 120-as sorszám tartozik. A Tóth család foglalása ebben a szerkezetben a következőképpen néz ki: 123 21 120 124 3 1 Toth_Balint A fájl egy éven belül tartalmaz foglalásokat. Az adatok az érkezés napja szerint növekvő sorrendben vannak rendezve a fájlban. Tájékoztatásul a honapok.txt fájl a hónapok neveit, a rá következő sorban az adott hónap napjainak számát, majd az ezt követő sorban pedig a hónap első napjának sorszámát tartalmazza.
Klemand
179.oldal
2016
2011 október
Pitypang
Az állományt forrásfájlként is felhasználhatja. A fenti táblázatnak megfelelő nyári időszak a 121. napon, míg az őszi a 244. napon kezdődik. Készítsen programot szalloda néven, amely az alábbi kérdésekre válaszol! 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:)! Ahol a felhasználótól kér be adatot, ott írja a képernyőre, hogy milyen adatot vár!
1. Olvassa be az pitypang.txt állományban található maximum 1 000 foglalás adatát, s annak felhasználásával oldja meg a következő feladatokat! Ha az állományt nem tudja beolvasni, akkor a benne található adatok közül az 1-5, 326-330 és 695-699 foglalási sorszámú sorok adatait jegyezze be a programba, s úgy oldja meg a feladatokat!
2. Jelenítse meg a képernyőn a leghosszabb szállodai tartózkodást! Csak az időtartamot vegye figyelembe, azaz nem számít, hogy hány vendég lakott az adott szobában! Az esetlegesen azonos hosszúságú tartózkodások közül bármelyiket kiválaszthatja. Az eredményt ebben a formában írja a képernyőre: Név (érkezési_nap_sorszáma) – eltöltött_éjszakák_száma például: Nagy_Bertalan (105) – 16
3. Számítsa ki, hogy az egyes foglalások után mennyit kell fizetnie az egyes vendégeknek! A foglalás sorszámát és a kiszámított értékeket kettősponttal elválasztva írja ki a bevetel.txt fájlba! Ez – a példában szereplő Tóth család esetén – a következő lenne: 123:57200 (Amennyiben nem tudja a fájlba íratni a kiszámított értékeket, úgy az első tíz foglaláshoz tartozó értéket a képernyőre írassa ki!) Írja a képernyőre a szálloda teljes évi bevételét!
4. Készítsen statisztikát az egyes hónapokban eltöltött vendégéjszakákról! Egy vendégéjszakának egy fő egy eltöltött éjszakája számít. A példában szereplő Tóth család áprilisban 3, májusban pedig 9 vendégéjszakát töltött a szállodában. Írassa ki a havi vendégéjszakák számát a képernyőre az alábbi formában: hónap_sorszáma: x vendégéj például: 8: 1059 vendégéj
5. Kérje be a felhasználótól egy új foglalás kezdő dátumához tartozó nap sorszámát és az eltöltendő éjszakák számát! Határozza meg, hogy hány szoba szabad a megadott időszak teljes időtartamában! A választ írassa ki a képernyőre!
Klemand
180.oldal
2016
2011 október
Pitypang
package emeltinfo2011okt; import java.io.*; import java.util.*; /** * Pitypang * * @author Klemand */ public class EmeltInfo2011okt { 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 pitypang.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("pitypang.txt")); String elsoSor; 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); } int n = Integer.parseInt(elsoSor); String[] daraboltSor; for (int i = 1; i <= n; i++) { daraboltSor = behozatal.readLine().trim().split(" "); pitypang.add(new PitypangTipus(daraboltSor)); } behozatal.close(); System.out.println("Az adatok beolvasása a honapok.txt fájlból \n"); behozatal = new BufferedReader(new FileReader("honapok.txt")); elsoSor = behozatal.readLine().trim(); if (elsoSor.charAt(0) == (char) 0xFEFF) { elsoSor = elsoSor.substring(1); } String honapNev = elsoSor; int honapHossz = Integer.parseInt(behozatal.readLine().trim()); int honapKezdonap = Integer.parseInt(behozatal.readLine().trim()); honapok.add(new HonapTipus(honapNev, honapHossz, honapKezdonap)); int i; for (i = 2; i <= 12; i++) { honapNev = behozatal.readLine().trim(); honapHossz = Integer.parseInt(behozatal.readLine().trim()); honapKezdonap = Integer.parseInt(behozatal.readLine().trim()); honapok.add(new HonapTipus(honapNev, honapHossz, honapKezdonap)); }
Klemand
181.oldal
2016
2011 október
Pitypang
behozatal.close(); for (i = 1; i <= n; i++) { pitypang.get(i - 1).ideny = idenyMeghat(pitypang.get(i - 1).erkezes); } //Ellenőrzés System.out.println("A beolvasás és előfeldolgozás ellenőrzése"); //A módosított pitypang.txt fájl csak 3 sort tartalmaz! for (i = 1; i <= 3; i++) { System.out.print(i + ". foglaló: " + pitypang.get(i - 1).nev + ", szoba: " + pitypang.get(i - 1).szoba + ", érkezés: " + pitypang.get(i - 1).erkezes + ", napok száma: " + (pitypang.get(i - 1).tavozas - pitypang.get(i - 1).erkezes)); System.out.println(", a hónap sorszáma: " + honapSorszamMeghat(pitypang.get(i - 1).erkezes) + ", idény: " + ekezetesIdeny(idenyMeghat(pitypang.get(i - 1).erkezes))); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A leghosszabb tartózkodás \n"); int leghosszabb = 1; for (i = 2; i <= n; i++) { if ((pitypang.get(i - 1).tavozas - pitypang.get(i - 1).erkezes) > (pitypang.get(leghosszabb - 1).tavozas - pitypang.get(leghosszabb - 1).erkezes)) { leghosszabb = i; } } System.out.println("Név (érkezési nap sorszáma) eltöltött éjszakák száma "); System.out.println(pitypang.get(leghosszabb - 1).nev + " (" + pitypang.get(leghosszabb - 1).erkezes + ") " + (pitypang.get(leghosszabb - 1).tavozas - pitypang.get(leghosszabb - 1).erkezes)); System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Az egyes foglalások utáni bevételek kiíratása a bevetel.txt fájlba,"); System.out.println("és az összbevétel meghatározása \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("bevetel.txt")); int bevetel; int osszbevetel = 0; for (i = 1; i <= n; i++) { bevetel = bevetelMeghat(pitypang.get(i - 1)); osszbevetel += bevetel; kivitel.println(i + ":" + bevetel); } kivitel.close(); System.out.println("A bevetel.txt fájl kiíratása befejeződött. \n"); System.out.print("A szálloda éves összbevétele: " + osszbevetel + " Ft (ezres csoportosításban: " + ezresCsoport(osszbevetel) + " Ft)"); System.out.println("");
Klemand
182.oldal
2016
2011 október
Pitypang
//4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.println("Statisztika a havi vendégéjszakákról: \n"); int[] ejszakaDb = new int[12]; for (i = 1; i <= 12; i++) { ejszakaDb[i - 1] = 0; } int j; for (i = 1; i <= n; i++) { for (j = pitypang.get(i - 1).erkezes; j < pitypang.get(i - 1).tavozas; j++) { ejszakaDb[honapSorszamMeghat(j) - 1] += pitypang.get(i - 1).vendeg; } } int ejszakaDbOssz = 0; System.out.println("A hónap sorszáma: vendégéjek száma "); for (i = 1; i <= 12; i++) { System.out.println(i + ": " + ejszakaDb[i - 1] + " vendégéj"); ejszakaDbOssz += ejszakaDb[i - 1]; } System.out.println(""); System.out.println("Ez összesen: " + ejszakaDbOssz + " vendégéj"); System.out.println(""); //Ellenőrzés System.out.println("Éves összesítés a foglalások alapján: "); int osszEjszaka = 0; for (i = 1; i <= n; i++) { osszEjszaka += (pitypang.get(i - 1).tavozas - pitypang.get(i - 1).erkezes) * pitypang.get(i - 1).vendeg; } System.out.println(osszEjszaka + " vendégéj"); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.println("Szabad szobák a felhasználó által megadott időszakban: \n"); System.out.println("Kérem a foglalás adatait! Az időszak teljes egészében az idei évre essen! "); System.out.print("Kérem az érkezés időpontjának sorszámát! "); int ujErkezes = egeszBevitel(1, 365); System.out.println(""); System.out.print("Kérem az eltölteni kívánt napok számát! "); int ujNapok = egeszBevitel(1, 366 - ujErkezes); System.out.println(""); int SZOBADB = 27; boolean[] szobak = new boolean[SZOBADB]; int s; int szabadDb = 0; System.out.print("A megadott időszakban a következő szobák szabadok: "); for (s = 1; s <= SZOBADB; s++) szobak[s - 1] = szabadE(s, if (szobak[s - 1] == true) szabadDb++; System.out.print(s + " } }
Klemand
{ ujErkezes, (ujErkezes + ujNapok)); { ");
183.oldal
2016
2011 október
Pitypang
System.out.println(""); System.out.println("A szabad szobák száma: " + szabadDb); System.out.println(""); } //************************************************************ //A tömblista konstruktora static ArrayList pitypang = new ArrayList<>(); public static class PitypangTipus { private private private private private private private private
final int sorszam; //nem változnak final int szoba; final int erkezes; final int tavozas; final int vendeg; final int reggeli; final String nev; String ideny;
public PitypangTipus(String[] daraboltSor) //konstruktor { sorszam = Integer.parseInt(daraboltSor[0]); szoba = Integer.parseInt(daraboltSor[1]); erkezes = Integer.parseInt(daraboltSor[2]); tavozas = Integer.parseInt(daraboltSor[3]); vendeg = Integer.parseInt(daraboltSor[4]); reggeli = Integer.parseInt(daraboltSor[5]); nev = daraboltSor[6]; ideny = ""; } } static ArrayList honapok = new ArrayList<>(); public static class HonapTipus { private private private private
final final final final
String nev; int hossz; int kezdonap; int sorszam;
public HonapTipus(String nevBe, int hosszBe, int kezdonapBe) //konstruktor { nev = nevBe; hossz = hosszBe; kezdonap = kezdonapBe; sorszam = honapok.indexOf(nev) + 1; } } public static String idenyMeghat(int nap) { if (nap < honapok.get(4).kezdonap) { return "tavasz"; } else if (nap < honapok.get(8).kezdonap) { return "nyar"; } else { return "osz"; } }
Klemand
184.oldal
2016
2011 október
Pitypang
public static String ekezetesIdeny(String ideny) { switch (ideny) { case "tavasz": { return "tavasz"; } case "nyar": { return "nyár"; } case "osz": { return "ősz"; } default: return ""; } } public static int honapSorszamMeghat(int nap) { int i = 1; while (i <= 12 && honapok.get(i - 1).kezdonap + honapok.get(i - 1).hossz - 1 < nap) { i++; } return i; } public static int bevetelMeghat(PitypangTipus foglalas) { int nap = foglalas.tavozas - foglalas.erkezes; int ar = 0; String ideny = idenyMeghat(foglalas.erkezes); switch (ideny) { case "tavasz": ar = nap * break; } case "nyar": { ar = nap * break; } case "osz": { ar = nap * break; }
{ 9000;
10000;
8000;
} if (foglalas.vendeg > 2) { ar += nap * 2000; } if (foglalas.reggeli == 1) { ar += nap * foglalas.vendeg * 1100; } return ar; }
Klemand
185.oldal
2016
2011 október
Pitypang
public static String ezresCsoport(int szam) { String szamSt = Integer.toString(szam); int hossz = szamSt.length(); String ezres = ""; int i = hossz; while (i >= 3) { ezres = " " + szamSt.substring(i - 3, i) + ezres; i -= 3; } return szamSt.substring(0, i) + ezres; } public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } public static boolean szabadE(int aktSzoba, int ujErk, int ujTav) { boolean szabad = true; int i = 1; while (i <= pitypang.size() && szabad) { if (pitypang.get(i - 1).szoba == aktSzoba) { szabad = (pitypang.get(i - 1).tavozas <= ujErk || ujTav <= pitypang.get(i - 1).erkezes); } i++; } return szabad; } }
Klemand
186.oldal
2016
2011 október
Pitypang
run: Az 1. feladat megoldása Az adatok beolvasása a pitypang.txt fájlból Az adatok beolvasása a honapok.txt fájlból A beolvasás 1. foglaló: 2. foglaló: 3. foglaló:
és előfeldolgozás ellenőrzése Huszar_Hajnalka, szoba: 5, érkezés: 3, napok száma: 10, a hónap sorszáma: 1, idény: tavasz Bodi_Katalin, szoba: 6, érkezés: 3, napok száma: 3, a hónap sorszáma: 1, idény: tavasz Agoston_Gyula, szoba: 7, érkezés: 3, napok száma: 6, a hónap sorszáma: 1, idény: tavasz
A 2. feladat megoldása A leghosszabb tartózkodás Név (érkezési nap sorszáma) eltöltött éjszakák száma Meszaros_Agnes (121) 17 A 3. feladat megoldása Az egyes foglalások utáni bevételek kiíratása a bevetel.txt fájlba, és az összbevétel meghatározása A bevetel.txt fájl kiíratása befejeződött. A szálloda éves összbevétele: 73053900 Ft (ezres csoportosításban: 73 053 900 Ft) A 4. feladat megoldása Statisztika a havi vendégéjszakákról: A hónap sorszáma: vendégéjek száma 1: 752 vendégéj 2: 1027 vendégéj 3: 986 vendégéj 4: 1061 vendégéj 5: 1096 vendégéj 6: 1137 vendégéj 7: 1143 vendégéj 8: 1008 vendégéj 9: 773 vendégéj 10: 880 vendégéj 11: 1098 vendégéj 12: 672 vendégéj Ez összesen: 11633 vendégéj Éves összesítés a foglalások alapján: 11633 vendégéj Az 5. feladat megoldása Szabad szobák a felhasználó által megadott időszakban: Kérem a foglalás adatait! Az időszak teljes egészében az idei évre essen! Kérem az érkezés időpontjának sorszámát! Kérem a számot! (1 <= beírt szám <= 365) :360
Kérem az eltölteni kívánt napok számát! Kérem a számot! (1 <= beírt szám <= 6) :5 A megadott időszakban a következő szobák szabadok: 1 2 3 5 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 A szabad szobák száma: 22 BUILD SUCCESSFUL (total time: 13 seconds)
Klemand
187.oldal
2016
2011 október
Pitypang
bevetel.txt: 1:101000 2:33600 3:54000 4:72000 5:117000 6:36000 7:112000 8:33600 9:70700 10:101000 11:9000 12:141400 13:154000 14:89600 15:40400 16:63000 17:70700 18:60600 19:28600 20:72000 21:33600 22:81000 23:27000 24:111100 25:100800 26:50500 27:72000 28:101000 29:63000 30:60600 31:80800 32:11200 33:30300 34:121000 35:18000 36:33600 37:67200 38:108000 39:20200 40:99000 41:200200
Klemand
42:80800 43:117000 44:80800 45:45000 46:90000 47:101000 48:80800 49:63000 50:90000 51:143000 52:63000 53:22400 54:22400 55:131300 56:40400 57:22000 58:33600 59:101000 60:121200 61:45000 62:45000 63:99000 64:20200 65:18000 66:9000 67:36000 68:88000 69:54000 70:44800 71:63000 72:54000 73:89600 74:36000 75:112000 76:67200 77:126000 78:81000 79:90900 80:112000 81:63000 82:81000
188.oldal
83:143000 84:36000 85:126000 86:141400 87:56000 88:99000 89:18000 90:27000 91:171600 92:110000 93:112000 94:117000 95:112000 96:117000 97:36000 98:99000 99:126000 100:36000 101:99000 102:27000 103:90900 104:9000 105:22400 106:126000 107:156800 108:121200 109:56000 110:81000 111:22400 112:56000 113:18000 114:14300 115:42900 116:78400 117:80800 118:20200 119:117000 120:33600 …
2016
2012 május
Futár
2012 május: Futár A nagyvárosokon belül, ha csomagot gyorsan kell eljuttatni egyik helyről a másikra, akkor sokszor a legjobb választás egy kerékpáros futárszolgálat igénybevétele. A futárszolgálat a futárjainak a megtett utak alapján ad fizetést. Az egyik futár egy héten át feljegyezte fuvarjai legfontosabb adatait, és azokat eltárolta egy állományban. Az állományban az adatok rögzítése nem mindig követi az időrendi sorrendet. Azokra a napokra, amikor nem dolgozott, nincsenek adatok bejegyezve az állományba. A fájlban legalább 10 sor van, és minden sor egy-egy út adatait tartalmazza egymástól szóközzel elválasztva. Az első adat a nap sorszáma, ami 1 és 7 közötti érték lehet. A második szám a napon belüli fuvarszám, ami 1 és 40 közötti érték lehet. Ez minden nap 1-től kezdődik, és az aznapi utolsó fuvarig egyesével növekszik. A harmadik szám az adott fuvar során megtett utat jelenti kilométerben, egészre kerekítve. Ez az érték nem lehet 30-nál nagyobb. Például: 1 1 3 1 3 …
1 2 2 4 1
5 9 12 3 7
A 3. sor például azt mutatja, hogy a hét harmadik napján a második fuvar 12 kilométeres távolságot jelentett. Készítsen programot, amely a tavok.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse futar néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie, feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.) 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:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be a tavok.txt állományban talált adatokat, s annak felhasználásával oldja meg a következő feladatokat!
2. Írja ki a képernyőre, hogy mekkora volt a hét legelső útja kilométerben! Figyeljen arra, hogy olyan állomány esetén is helyes értéket adjon, amiben például a hét első napján a futár nem dolgozott!
3. Írja ki a képernyőre, hogy mekkora volt a hét utolsó útja kilométerben! 4. Tudjuk, hogy a futár minden héten tart legalább egy szabadnapot. Írja ki a képernyőre, hogy a hét hányadik napjain nem dolgozott a futár!
5. Írja ki a képernyőre, hogy a hét melyik napján volt a legtöbb fuvar! Amennyiben több nap is azonos, maximális számú fuvar volt, elegendő ezek egyikét kiírnia.
Klemand
189.oldal
2016
2012 május
Futár
6. Számítsa ki és írja a képernyőre a mintának megfelelően, hogy az egyes napokon hány kilométert kellett tekerni!
1. nap: 124 km 2. nap: 0 km 3. nap: 75 km … 7. A futár az egyes utakra az út hosszától függően kap fizetést az alábbi táblázatnak megfelelően: 1 – 2 km
500 Ft
3 – 5 km
700 Ft
6 – 10 km
900 Ft
11 – 20 km
1 400 Ft
21 – 30 km 2 000 Ft Kérjen be a felhasználótól egy tetszőleges távolságot, és határozza meg, hogy mekkora díjazás jár érte! Ezt írja a képernyőre!
8. Határozza meg az összes rögzített út ellenértékét! Ezeket az értékeket írja ki a dijazas.txt állományba nap szerint, azon belül pedig az út sorszáma szerinti növekvő sorrendben az alábbi formátumban:
1. nap 1. út: 700 Ft 1. nap 2. út: 900 Ft 1. nap 3. út: 2000 Ft … 9. Határozza meg, és írja ki a képernyőre, hogy a futár mekkora összeget kap a heti munkájáért!
Klemand
190.oldal
2016
2012 május
Futár
package emeltinfo2012maj; import java.io.*; import java.util.*; /** * Futár * * @author Klemand */ public class EmeltInfo2012maj { 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 tavok.txt fájlból \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("tavok.txt")); String elsoSor; String sor; 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); } futar.add(new FutarTipus(elsoSor.trim().split(" "))); while ((sor = behozatal.readLine()) != null) { futar.add(new FutarTipus(sor.trim().split(" "))); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése (helyiérték szerint formázva): \n"); int i; for (i = 1; i <= futar.size(); i++) { System.out.print("Nap: " + futar.get(i - 1).nap); System.out.printf(", sorszám: %2d", futar.get(i - 1).sorszam); System.out.printf(", távolság: %2d", futar.get(i - 1).tav); System.out.println(" km"); } System.out.println(""); //A tömblista előfeldolgozása: rendezés napok és azon belül sorszámok szerint System.out.println("A tömblista előfeldolgozása: rendezés napok és azon belül sorszámok szerint \n"); /*Sorszám szerinti rendezés Először a másodlagos szempont szerint rendezünk! Mivel az adatsorok teljesen rendezetlenek, még nincs mit elrontani, bármelyik rendezés alkalmas, választhatjuk a minimumkiválasztásos rendezést!*/ System.out.println("Sorszám szerinti rendezés minimumkiválasztásos rendezéssel \n");
Klemand
191.oldal
2016
2012 május
Futár
int j, min; FutarTipus asztal; for (i = 1; i <= futar.size(); i++) { min = i; for (j = i + 1; j <= futar.size(); j++) { if (futar.get(j - 1).sorszam < futar.get(min - 1).sorszam) { min = j; } } asztal = futar.get(i - 1); futar.set(i - 1, futar.get(min - 1)); futar.set(min - 1, asztal); } //Ellenőrzés System.out.println("Ellenőrzés: \n"); for (i = 1; i <= futar.size(); i++) { System.out.print("Nap: " + futar.get(i - 1).nap); System.out.printf(", sorszám: %2d", futar.get(i - 1).sorszam); System.out.printf(", távolság: %2d", futar.get(i - 1).tav); System.out.println(" km"); } System.out.println(""); /*Napok szerinti rendezés A távoli cserék miatt a minimumkiválasztásos rendezés elrontaná a korábbi rendezettséget, a beillesztéses rendezés viszont megtartja, válasszuk tehát azt! */ System.out.println("Napok szerinti rendezés beillesztéses rendezéssel \n"); for (i = 2; i <= futar.size(); i++) { j = i - 1; while (j >= 1 && futar.get(j - 1).nap > futar.get(j).nap) { asztal = futar.get(j - 1); futar.set(j - 1, futar.get(j)); futar.set(j, asztal); j--; } } //Ellenőrzés System.out.println("Ellenőrzés: \n"); for (i = 1; i <= futar.size(); i++) { System.out.print("Nap: " + futar.get(i - 1).nap); System.out.printf(", sorszám: %2d", futar.get(i - 1).sorszam); System.out.printf(", távolság: %2d", futar.get(i - 1).tav); System.out.println(" km"); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása \n"); System.out.println("A hét első útja " + futar.get(0).tav + " km volt. \n"); //3. feladat System.out.println("A 3. feladat megoldása \n"); System.out.println("A hét utolsó útja " + futar.get(futar.size() - 1).tav + " km volt. \n");
Klemand
192.oldal
2016
2012 május
Futár
//4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.print("Szabadnap:"); //Tudjuk, hogy volt legalább 1 szabadnap! //Először meghatározzuk, és a fuvarDb tömbbe tesszük a hét egyes napjain teljesített fuvarok számát. int[] fuvarDb = new int[7]; for (i = 1; i <= 7; i++) { fuvarDb[i - 1] = 0; } for (i = 1; i <= futar.size(); i++) { fuvarDb[futar.get(i - 1).nap - 1]++; } for (i = 1; i <= 7; i++) { if (fuvarDb[i - 1] == 0) { System.out.print(" " + i); } } System.out.println("\n"); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.print("A legtöbb fuvar a(z) "); int maxFuvar = 1; for (i = 2; i <= 7; i++) { if (fuvarDb[i - 1] > fuvarDb[maxFuvar - 1]) { maxFuvar = i; } } System.out.println(maxFuvar + ". napon volt: " + fuvarDb[maxFuvar - 1] + " út."); System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása \n"); System.out.println("A teljesített km-ek száma napi bontásban (helyiérték szerint formázva): "); //Először meghatározzuk, és a kmDb tömbbe tesszük a hét egyes napjain teljesített km-ek számát. int[] kmDb = new int[7]; for (i = 1; i <= 7; i++) { kmDb[i - 1] = 0; } int kmOsszFuvar = 0; for (i = 1; i <= futar.size(); i++) { kmDb[futar.get(i - 1).nap - 1] += futar.get(i - 1).tav; kmOsszFuvar += futar.get(i - 1).tav; } int kmOsszNap = 0; for (i = 1; i <= 7; i++) { System.out.print(i + ". nap: "); System.out.printf("%3d", kmDb[i - 1]); System.out.println(" km"); kmOsszNap += kmDb[i - 1]; } System.out.println("\n");
Klemand
193.oldal
2016
2012 május
Futár
//Ellenőrzés System.out.println("Ellenőrzés:"); System.out.println("Heti összút a fuvarok alapján: " + kmOsszFuvar + " km, a napi összegzések alapján: " + kmOsszNap + " km."); System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása \n"); System.out.println("Egy bekért hosszúságú út díjazásának meghatározása díjsávok alapján \n "); System.out.println("Kérem az út hosszát!"); int ut = egeszBevitel(1, 30); System.out.println(""); int dijazas = dijazasMeghat(ut); System.out.println("A fuvar díjazása: " + dijazas + " Ft"); System.out.println(""); //8. feladat System.out.println("A 8. feladat megoldása \n"); System.out.println("Az összes út díjazásásának kiíratása a dijazas. txt fájlba"); System.out.println(" napok és azon belül az út sorszáma szerint növekvő sorrendben \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("dijazas.txt")); int osszDijazas = 0; for (i = 1; i <= futar.size(); i++) { dijazas = dijazasMeghat(futar.get(i - 1).tav); kivitel.println(futar.get(i - 1).nap + ". nap " + futar.get(i - 1).sorszam + ". út: " + dijazas + " Ft"); osszDijazas += dijazas; //ez a 9. feladathoz kell } kivitel.close(); System.out.println("A dijazas.txt fájl kiíratása befejeződött. \n"); //9. feladat System.out.println("A 9. feladat megoldása \n"); System.out.println("A futár heti munkájának díjazása: " + osszDijazas + " Ft."); System.out.println(""); } //************************************************************ //A tömblista konstruktora static ArrayList futar = new ArrayList<>(); public static class FutarTipus { private final int nap; //nem változnak private final int sorszam; private final int tav; public FutarTipus(String[] daraboltSor) //konstruktor { nap = Integer.parseInt(daraboltSor[0]); sorszam = Integer.parseInt(daraboltSor[1]); tav = Integer.parseInt(daraboltSor[2]); } }
Klemand
194.oldal
2016
2012 május
Futár
public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } public static int dijazasMeghat(int ut) { if (ut < 3) { return 500; } else if (ut < 6) { return 700; } else if (ut < 11) { return 900; } else if (ut < 21) { return 1400; } else { return 2000; } } }
Klemand
195.oldal
2016
2012 május
Futár
run: Az 1. feladat megoldása Az adatok beolvasása a tavok.txt fájlból A beolvasás ellenőrzése (helyiérték szerint formázva): Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
7, 3, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 4, 1, 2, 3, 5,
távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság:
14 10 3 3 1 9 5 2 9 8 5 6 7 7 2 4 6 3 5 8 1 4 2 3 5 2 28 11 2 3 7
km km km km km km km km km km km km km km km km km km km km km km km km km km km km km km km
Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 5,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 17, 18, 19, 1, 2, 8, 3, 4, 5, 6, 7, 20,
távolság: 11 km távolság: 2 km távolság: 5 km távolság: 2 km távolság: 6 km távolság: 2 km távolság: 3 km távolság: 2 km távolság: 6 km távolság: 2 km távolság: 2 km távolság: 4 km távolság: 2 km távolság: 2 km távolság: 4 km távolság: 4 km távolság: 5 km távolság: 2 km távolság: 7 km távolság: 2 km távolság: 3 km távolság: 5 km távolság: 12 km távolság: 25 km távolság: 6 km távolság: 6 km távolság: 6 km távolság: 9 km távolság: 6 km távolság: 7 km
A tömblista előfeldolgozása: rendezés napok és azon belül sorszámok szerint Sorszám szerinti rendezés minimumkiválasztásos rendezéssel Ellenőrzés: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
1, 3, 4, 5, 7, 3, 4, 1, 5, 7, 3, 4, 5, 1, 7, 4, 5, 1, 3, 7,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
Klemand
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság:
3 7 11 2 5 7 2 3 5 12 10 3 2 1 6 28 6 9 2 6
km km km km km km km km km km km km km km km km km km km km
Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
196.oldal
3, 1, 4, 5, 7, 4, 1, 3, 5, 7, 1, 5, 3, 7, 5, 7, 3, 1, 5, 1,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9,
távolság: 4 km távolság: 5 km távolság: 7 km távolság: 2 km távolság: 6 km távolság: 11 km távolság: 2 km távolság: 6 km távolság: 3 km távolság: 9 km távolság: 14 km távolság: 2 km távolság: 3 km távolság: 6 km távolság: 6 km távolság: 25 km távolság: 5 km távolság: 9 km távolság: 2 km távolság: 8 km
2016
2012 május Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
3, 5, 3, 1, 5, 1, 3, 5, 3, 5, 3,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
Futár 9, 10, 10, 10, 11, 11, 11, 12, 12, 13, 13,
távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság:
8 2 1 5 4 6 4 2 2 2 3
km km km km km km km km km km km
Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
3, 5, 3, 5, 5, 5, 5, 5, 5, 5,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
14, 14, 15, 15, 16, 17, 18, 19, 20, 21,
távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság:
5 4 2 4 5 7 2 3 7 2
km km km km km km km km km km
Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1, 2, 3, 4, 5, 6, 7, 8,
távolság: 11 km távolság: 2 km távolság: 5 km távolság: 2 km távolság: 6 km távolság: 2 km távolság: 3 km távolság: 2 km távolság: 6 km távolság: 2 km távolság: 2 km távolság: 4 km távolság: 2 km távolság: 2 km távolság: 4 km távolság: 4 km távolság: 5 km távolság: 7 km távolság: 2 km távolság: 3 km távolság: 7 km távolság: 2 km távolság: 5 km távolság: 12 km távolság: 6 km távolság: 6 km távolság: 6 km távolság: 9 km távolság: 6 km távolság: 25 km
Napok szerinti rendezés beillesztéses rendezéssel Ellenőrzés: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap: Nap:
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám: sorszám:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 2, 3, 4, 5,
távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság: távolság:
3 3 1 9 5 2 14 9 8 5 6 7 7 10 2 4 6 3 5 8 1 4 2 3 5 2 11 2 3 28 7
km km km km km km km km km km km km km km km km km km km km km km km km km km km km km km km
A 2. feladat megoldása A hét első útja 3 km volt. A 3. feladat megoldása A hét utolsó útja 25 km volt. A 4. feladat megoldása Szabadnap: 2 6 Az 5. feladat megoldása A legtöbb fuvar a(z) 5. napon volt: 21 út.
Klemand
197.oldal
2016
2012 május
Futár
A 6. feladat megoldása A teljesített km-ek száma napi bontásban (helyiérték szerint formázva): 1. nap: 65 km 2. nap: 0 km 3. nap: 69 km 4. nap: 62 km 5. nap: 74 km 6. nap: 0 km 7. nap: 75 km
Ellenőrzés: Heti összút a fuvarok alapján: 345 km, a napi összegzések alapján: 345 km. A 7. feladat megoldása Egy bekért hosszúságú út díjazásának meghatározása díjsávok alapján Kérem az út hosszát! Kérem a számot! (1 <= beírt szám <= 30) :99 Kérem a számot! (1 <= beírt szám <= 30) :30 A fuvar díjazása: 2000 Ft A 8. feladat megoldása Az összes út díjazásásának kiíratása a dijazas. txt fájlba napok és azon belül az út sorszáma szerint növekvő sorrendben A dijazas.txt fájl kiíratása befejeződött.
BUILD SUCCESSFUL (total time: 13 seconds)
dijazas.txt: 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3.
nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap
1. út: 700 Ft 2. út: 700 Ft 3. út: 500 Ft 4. út: 900 Ft 5. út: 700 Ft 6. út: 500 Ft 7. út: 1400 Ft 8. út: 900 Ft 9. út: 900 Ft 10. út: 700 Ft 11. út: 900 Ft 1. út: 900 Ft 2. út: 900 Ft 3. út: 900 Ft 4. út: 500 Ft 5. út: 700 Ft 6. út: 900 Ft 7. út: 700 Ft 8. út: 700 Ft 9. út: 900 Ft 10. út: 500 Ft
Klemand
3. 3. 3. 3. 3. 4. 4. 4. 4. 4. 4. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5.
nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap
11. út: 700 Ft 12. út: 500 Ft 13. út: 700 Ft 14. út: 700 Ft 15. út: 500 Ft 1. út: 1400 Ft 2. út: 500 Ft 3. út: 700 Ft 4. út: 2000 Ft 5. út: 900 Ft 6. út: 1400 Ft 1. út: 500 Ft 2. út: 700 Ft 3. út: 500 Ft 4. út: 900 Ft 5. út: 500 Ft 6. út: 700 Ft 7. út: 500 Ft 8. út: 900 Ft 9. út: 500 Ft 10. út: 500 Ft
198.oldal
5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 7. 7. 7. 7. 7. 7. 7. 7.
nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap nap
11. út: 700 Ft 12. út: 500 Ft 13. út: 500 Ft 14. út: 700 Ft 15. út: 700 Ft 16. út: 700 Ft 17. út: 900 Ft 18. út: 500 Ft 19. út: 700 Ft 20. út: 900 Ft 21. út: 500 Ft 1. út: 700 Ft 2. út: 1400 Ft 3. út: 900 Ft 4. út: 900 Ft 5. út: 900 Ft 6. út: 900 Ft 7. út: 900 Ft 8. út: 2000 Ft
2016
2012 május idegennyelvű
Törtek
2012 május idegennyelvű: Törtek A matematikában sokszor van szükségünk műveletvégzésre a közönséges törtekkel. A legtöbb számológép és számítógépes program csak a tizedestörteket ismeri. Készítsen programot, amely az alábbi – közönséges törtekkel kapcsolatos – feladatokat megoldja! A program forráskódját tort néven mentse! A feladatban csak pozitív számokkal kell dolgoznia, és ennek a tulajdonságnak a feldolgozandó fájlban található számadatok is megfelelnek. A felhasználótól bekérendő és a feldolgozandó fájlban található számokról feltételezheti, hogy legfeljebb kétjegyűek. Minden – képernyőre írást igénylő – részfeladat megoldása előtt írja a képernyőre a feladat sorszámát! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár (például az 1. feladat esetén: „1. feladat Adja meg a számlálót: ”)! Az ékezetmentes kiírás is elfogadott.
1. Kérjen be a felhasználótól két számot, amely egy közönséges tört számlálója és nevezője! Döntse el, hogy az így bevitt tört felírható-e egész számként! Ha igen, írja ki értékét egész számként, ha nem, írja ki „Nem egész”!
2. A közönséges törteket úgy tudjuk a legegyszerűbb alakra hozni, ha a számlálóját és nevezőjét elosztjuk a két szám legnagyobb közös osztójával, és az így kapott érték lesz az új számláló, illetve nevező. Az egyszerűsítéshez készítsen egy rekurzív függvényt az alább leírt euklideszi algoritmusnak megfelelően! Függvény lnko(a, b : ha a=b akkor lnko ha ab akkor lnko Függvény vége
egész számok) : egész szám := a := lnko(a, b-a) := lnko(a-b, b)
3. Az első feladatban bekért törtet hozza a legegyszerűbb alakra a létrehozott függvény segítségével! Amennyiben nem sikerül az előírt függvényt elkészítenie, alkalmazhat más megoldást, hogy a további feladatokat meg tudja oldani. Az eredményt írja ki a következő formában: 24/32 = 3/4 Amennyiben a tört felírható egész számként, akkor ebben az alakban jelenjen meg: 24/6 = 4
4. Két törtet úgy tudunk összeszorozni, hogy a két tört számlálóját összeszorozva kapjuk az eredmény számlálóját, és a két tört nevezőjét összeszorozva kapjuk az eredmény nevezőjét. Kérjen be a felhasználótól egy újabb közönséges törtet a számlálójával és a nevezőjével! Szorozza meg ezzel a törttel az első feladatban bekért törtet! Az eredményt hozza a legegyszerűbb alakra, és ezt írja ki a következő formában: 24/32 * 12/15 = 288/480 = 3/5 Amennyiben az eredmény felírható egész számként, akkor ebben az alakban jelenjen meg: 24/32 * 8/3 = 192/96 = 2
Klemand
199.oldal
2016
2012 május idegennyelvű
Törtek
5. Két közönséges tört összeadásához a következő lépésekre van szükség: • Mindkét számot bővíteni kell, azaz mind a számlálóját, mind a nevezőjét ugyanazzal a számmal kell megszorozni. Ezt a bővítést úgy célszerű elvégezni, hogy a közös nevező a két eredeti nevező legkisebb közös többszöröse legyen. Ez lesz az összeg nevezője. • A két bővített alakú tört számlálóját összeadjuk, ez lesz az eredmény számlálója. Ehhez készítsen függvényt az alábbiakban leírtak szerint – a korábban elkészített lnko függvény felhasználásával – a legkisebb közös többszörös meghatározására! Függvény lkkt(a, b : egész számok) : egész szám lkkt := a * b / lnko(a, b) Függvény vége
6. A függvény segítségével határozza meg a két bekért tört összegét, és ezt adja meg a következő formában! (Amennyiben nem sikerül az előírt függvényt elkészítenie, alkalmazhat más megoldást, hogy a további feladatokat meg tudja oldani.) 24/32 + 8/3 = 72/96 + 256/96 = 328/96 = 41/12 Amennyiben az eredmény felírható egész számként, akkor ebben az alakban jelenjen meg: 22/4 + 27/6 = 66/12 + 54/12 = 120/12 = 10
7. Az adat.txt állományban található műveleteket végezze el, és az eredményeket a korábbi, képernyőre kiírt formátumnak megfelelően írja az eredmeny.txt állományba! Az adat.txt fájlnak legfeljebb 100 sora lehet; soronként 4 számot és egy műveleti jelet tartalmaz, melyeket mindenhol egy szóköz választ el egymástól. Műveleti jelként csak összeadás és szorzás szerepel. Például: adat.txt: 24 32 8 3 + 24 32 8 3 * eredmeny.txt: 24/32 + 8/3 = 72/96 + 256/96 = 328/96 = 41/12 24/32 * 8/3 = 192/96 = 2
Klemand
200.oldal
2016
2012 május idegennyelvű
Törtek
package emeltinfo2012mid; import java.io.*; import java.util.*; /** * Törtek * * @author Klemand */ public class EmeltInfo2012mid { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("Egy tört számlálójának és nevezőjének bekérése, "); System.out.println("és annak eldöntése, hogy atört értéke egész szám-e \n"); System.out.println("Kérem a számlálót!"); int sz1 = egeszBevitel(1, 99); System.out.println("Kérem a nevezőt!"); int n1 = egeszBevitel(1, 99); System.out.println(""); if (sz1 % n1 == 0) { System.out.println("Egész: " + sz1 / n1); } else { System.out.println("Nem egész"); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Rekurzív függvény készítése az LNKO meghatározására \n"); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("A bekért tört legegyszerűbb alakra hozása az elkészített függvény segítségével: \n"); System.out.println(sz1 + "/" + n1 + " = " + egyszerusites(sz1, n1)); System.out.println(""); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("A bekért tört és egy másik bekért tört szorzása és egyszerűsítése \n"); System.out.println("Kérem a másik tört számlálóját!"); int sz2 = egeszBevitel(1, 99); System.out.println("Kérem a másik tört nevezőjét!"); int n2 = egeszBevitel(1, 99); System.out.println(""); System.out.println("A két tört szorzata:"); System.out.println(sz1 + "/" + n1 + " * " + sz2 + "/" + n2 + " = " + sz1 * sz2 + "/" + n1 * n2 + " = " + egyszerusites(sz1 * sz2, n1 * n2)); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Függvény készítése az LKKT meghatározására \n");
Klemand
201.oldal
2016
2012 május idegennyelvű
Törtek
//6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A két bekért tört összadása és egyszerűsítése: \n"); System.out.println(sz1 + "/" + n1 + " + " + sz2 + "/" + n2 + " = " + sz1 * lkkt(n1, n2) / n1 + "/" + lkkt(n1, n2) + " + " + sz2 * lkkt(n1, n2) / n2 + "/" + lkkt(n1, n2) + " = " + (sz1 * lkkt(n1, n2) / n1 + sz2 * lkkt(n1, n2) / n2) + "/" + lkkt(n1, n2) + " = " + egyszerusites(sz1 * lkkt(n1, n2) / n1 + sz2 * lkkt(n1, n2) / n2, lkkt(n1, n2))); System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása \n"); System.out.println("Az adat.txt fájlban lévő műveletek eredményének kiíratása az eredmeny.txt fájlba "); System.out.println("az előzőeknek megfelelő formában \n"); /*Felesleges lenne eltárolni az adatokat, csupán egyszer és egyenként használjuk a fájl sorait! Beolvasunk egy sort, feldolgozzuk és rögtön ki is írjuk az eredményt a másik fájlba.*/ BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("adat.txt")); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("eredmeny.txt")); String elsoSor; String sor; String[] daraboltSor; 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.trim().split(" "); if (daraboltSor[4].equals("*")) { szorzatKiiras(kivitel, Integer.parseInt(daraboltSor[0]), Integer.parseInt(daraboltSor[1]), Integer.parseInt(daraboltSor[2]), Integer.parseInt(daraboltSor[3])); } else { osszegKiiras(kivitel, Integer.parseInt(daraboltSor[0]), Integer.parseInt(daraboltSor[1]), Integer.parseInt(daraboltSor[2]), Integer.parseInt(daraboltSor[3])); } while ((sor = behozatal.readLine()) != null) { daraboltSor = sor.trim().split(" "); if (daraboltSor[4].equals("*")) { szorzatKiiras(kivitel, Integer.parseInt(daraboltSor[0]), Integer.parseInt(daraboltSor[1]), Integer.parseInt(daraboltSor[2]), Integer.parseInt(daraboltSor[3])); } else { osszegKiiras(kivitel, Integer.parseInt(daraboltSor[0]), Integer.parseInt(daraboltSor[1]), Integer.parseInt(daraboltSor[2]), Integer.parseInt(daraboltSor[3])); } } behozatal.close(); kivitel.close(); System.out.println("Az eredmeny.txt fájl kiíratása befejeződött. \n"); System.out.println(""); } //************************************************************
Klemand
202.oldal
2016
2012 május idegennyelvű
Törtek
public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } public static int lnko(int a, int b) { if (a == b) { return a; } if (a < b) { return lnko(a, b - a); } else { return lnko(a - b, b); } } public static String egyszerusites(int a, int b) { if (a % b == 0) { return Integer.toString(a / b); } else { return Integer.toString(a / lnko(a, b)) + "/" + Integer.toString(b / lnko(a, b)); } } public static int lkkt(int a, int b) { return (a * b) / lnko(a, b); } public static void szorzatKiiras(PrintWriter kivitel, int sz1, int n1, int sz2, int n2) { kivitel.println(sz1 + "/" + n1 + " * " + sz2 + "/" + n2 + " = " + sz1 * sz2 + "/" + n1 * n2 + " = " + egyszerusites(sz1 * sz2, n1 * n2)); } public static void osszegKiiras(PrintWriter kivitel, int sz1, int n1, int sz2, int n2) { kivitel.println(sz1 + "/" + n1 + " + " + sz2 + "/" + n2 + " = " + sz1 * lkkt(n1, n2) / n1 + "/" + lkkt(n1, n2) + " + " + sz2 * lkkt(n1, n2) / n2 + "/" + lkkt(n1, n2) + " = " + (sz1 * lkkt(n1, n2) / n1 + sz2 * lkkt(n1, n2) / n2) + "/" + lkkt(n1, n2) + " = " + egyszerusites(sz1 * lkkt(n1, n2) / n1 + sz2 * lkkt(n1, n2) / n2, lkkt(n1, n2))); } }
Klemand
203.oldal
2016
2012 május idegennyelvű
Törtek
run: Az 1. feladat megoldása Egy tört számlálójának és nevezőjének bekérése, és annak eldöntése, hogy atört értéke egész szám-e Kérem Kérem Kérem Kérem
a a a a
számlálót! számot! (1 <= beírt szám <= 99) :33 nevezőt! számot! (1 <= beírt szám <= 99) :90
Nem egész A 2. feladat megoldása Rekurzív függvény készítése az LNKO meghatározására A 3. feladat megoldása A bekért tört legegyszerűbb alakra hozása az elkészített függvény segítségével: 33/90 = 11/30 A 4. feladat megoldása A bekért tört és egy másik bekért tört szorzása és egyszerűsítése Kérem Kérem Kérem Kérem
a a a a
másik tört számot! (1 másik tört számot! (1
számlálóját! <= beírt szám <= 99) :77 nevezőjét! <= beírt szám <= 99) :28
A két tört szorzata: 33/90 * 77/28 = 2541/2520 = 121/120 Az 5. feladat megoldása Függvény készítése az LKKT meghatározására A 6. feladat megoldása A két bekért tört összadása és egyszerűsítése: 33/90 + 77/28 = 462/1260 + 3465/1260 = 3927/1260 = 187/60 A 7. feladat megoldása Az adat.txt fájlban lévő műveletek eredményének kiíratása az eredmeny.txt fájlba az előzőeknek megfelelő formában Az eredmeny.txt fájl kiíratása befejeződött.
BUILD SUCCESSFUL (total time: 21 seconds) eredmeny.txt: 10/4 * 45/4 = 450/16 = 225/8 2/75 * 75/8 = 150/600 = 1/4 8/4 * 4/30 = 32/120 = 4/15 8/12 + 30/6 = 8/12 + 60/12 = 68/12 = 17/3 3/12 + 10/50 = 75/300 + 60/300 = 135/300 = 9/20 15/10 + 9/10 = 15/10 + 9/10 = 24/10 = 12/5 30/20 * 8/30 = 240/600 = 2/5 5/20 + 4/12 = 15/60 + 20/60 = 35/60 = 7/12 2/6 + 20/20 = 20/60 + 60/60 = 80/60 = 4/3 25/10 * 10/30 = 250/300 = 5/6 12/5 * 45/10 = 540/50 = 54/5 2/4 * 10/12 = 20/48 = 5/12 …
Klemand
204.oldal
2016
2012 október
Szín-kép
2012 október: Szín-kép Egy digitális kép tárolásánál minden egyes képpont színét tároljuk. A képpontok színét az RGB kód adja. Az RGB kód a vörös (R), zöld (G) és a kék (B) színösszetevő értékét határozza meg. Ezen színösszetevők értéke 0 és 255 közötti egész szám lehet. A kep.txt fájlban egy 50×50 képpontos kép képpontjainak RGB kódjai vannak a következő formában. Az állomány a képet sorfolytonosan, a képpontok RGB kódját szóközzel elválasztva tartalmazza, minden képpontot egy újabb sorban: 200 200 200 200 200
96 96 96 96 96
64 64 64 64 64
Készítsen programot szinkep néven a következő feladatok megoldására! A program futása során a képernyőre való kiíráskor, illetve az adatok billentyűzetről való beolvasásakor utaljon a feladat sorszámára és a kiírandó, illetve bekérendő adatra!
1. Olvassa be a fájlból egy megfelelő adatszerkezetbe az egyes képpontok RGB kódját! 2. Kérjen be a felhasználótól egy RGB kódot! Állapítsa meg a program segítségével, hogy a bekért szín megtalálható-e a képen! A megállapítás eredményét írja ki a képernyőre!
3. Határozza meg, hogy a kép 35. sor 8. képpontjának színe hányszor szerepel a 35. sorban, illetve a 8. oszlopban. Az értékeket írja ki a képernyőre az alábbi formában: Például: Sorban: 5 Oszlopban: 10
4. Állapítsa meg, hogy a vörös, kék és zöld színek közül melyik szín fordul elő legtöbbször a képen! Az (egyik) legtöbbször előforduló szín nevét írja ki a képernyőre! A színek kódjai: Vörös
255, 0, 0
Zöld
0, 255, 0
Kék
0, 0, 255
5. Készítsen 3 képpont széles, fekete színű keretet a képnek! A keretet úgy hozza létre, hogy a kép mérete ne változzon! A fekete szín kódja RGB (0, 0, 0).
Klemand
205.oldal
2016
2012 október
Szín-kép
6. A kép képpontjainak színét írja ki a keretes.txt nevű szövegfájlba a bemeneti fájl formátumával egyezően! A képet sorfolytonosan tárolja, minden képpontot új sorba, a képpontok RGB kódját szóközzel elválasztva írja ki! Például: ... 0 0 0 0 0 0 200 96 64 ...
7. Az 50×50-es képen a kerettől függetlenül egy sárga RGB (255, 255, 0) színű téglalap van. Határozza meg a program segítségével a bal felső és a jobb alsó sárga képpontnak a helyét (sor, oszlop), majd határozza meg, hogy a sárga téglalap hány képpontból áll! A képpontok helyét és a sárga alakzat méretét a következő formában írassa ki a képernyőre: Kezd: sor, oszlop Vége: sor, oszlop Képpontok száma: darab Például: Kezd: 18, 12 Vége: 25, 19 Képpontok száma: 64
Klemand
206.oldal
2016
2012 október
Szín-kép
/** * Szín-kép * * @author Klemand */ public class EmeltInfo2012okt { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("A kep.txt fájl beolvasása \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("kep.txt")); String elsoSor; String sor; String[][] kep = new String[50][50]; //sor, oszlop 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); } kep[0][0] = elsoSor.trim(); /*Tudom, hogy a kép 50x50 képpontos, így a fájl 2500 sorból áll. Sorfolytonos ábrázolás: külső ciklus a sor, belső az oszlop, először az első sor, majd a második, stb.*/ int i, j; for (i = 1; i <= 50; i++) { for (j = 1; j <= 50; j++) { if (i > 1 || j > 1) { //az első adatsort már beolvastuk kep[i - 1][j - 1] = behozatal.readLine().trim(); } } } behozatal.close(); //Ellenőrzés System.out.println("Ellenőrzés"); System.out.println("A beolvasott kép vörös, zöld, kék, sárga és fekete pontjainak ábrázolása színmátrixban"); System.out.println("Vörös: V, zöld: Z, kék: K, sárga: S, magenta: M, fekete: F, egyéb szín: - \n"); for (i = 1; i <= 50; i++) { for (j = 1; j <= 50; j++) { System.out.print(jel(kep[i - 1][j - 1])); } System.out.println(""); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Egy szín keresése a képen bekért RGB kód alapján \n"); System.out.println("Kérem az RGB kód R (vörös) összetevőjét! "); int red = egeszBevitel(0, 255); System.out.println("Kérem az RGB kód G (zöld) összetevőjét! "); int green = egeszBevitel(0, 255); System.out.println("Kérem az RGB kód B (kék) összetevőjét! "); int blue = egeszBevitel(0, 255);
Klemand
207.oldal
2016
2012 október
Szín-kép
System.out.println(""); String kod = Integer.toString(red) + " " + Integer.toString(green) + " " + Integer.toString(blue); System.out.println(kod); boolean van = false; int s = -1; int o = -1; i = 1; while (i <= 50 && !van) { j = 1; while (j <= 50 && !(kep[i - 1][j - 1].equals(kod))) { j++; } if (j <= 50) { van = true; s = i; o = j; } i++; } if (van) { System.out.println("A megadott szín megtalálható a képen, először a(z) " + s + ". sor " + o + ". oszlopában"); } else { System.out.println("A megadott szín nincs a képen."); } System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Egy megadott helyű pont színe hányszor szerepel a sorában és oszlopában? \n"); s = 35; o = 8; kod = kep[s - 1][o - 1]; int sDb = 0; for (j = 1; j <= 50; j++) { if (kep[s - 1][j - 1].equals(kod)) { sDb++; } } int oDb = 0; for (i = 1; i <= 50; i++) { if (kep[i - 1][o - 1].equals(kod)) { oDb++; } } System.out.println("A megadott pont színének előfordulása: "); System.out.println("Sorban: " + sDb + " Oszlopban: " + oDb); System.out.println(""); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("A vörös, zöld és a kék színek előfordulásainak összehasonlítása \n");
Klemand
208.oldal
2016
2012 október int int int for
Szín-kép
vDb = 0; zDb = 0; kDb = 0; (i = 1; i <= 50; i++) { for (j = 1; j <= 50; j++) { kod = kep[i - 1][j - 1]; switch (kod) { case "255 0 0": vDb++; break; case "0 255 0": zDb++; break; case "0 0 255": kDb++; break; default:; } }
} System.out.print("A legtöbbször előforduló szín(ek):"); if (vDb >= zDb && vDb >= kDb) { System.out.print(" vörös: " + vDb + " alkalommal"); } if (zDb >= vDb && zDb >= kDb) { System.out.print(" zöld: " + zDb + " alkalommal"); } if (kDb >= vDb && kDb >= zDb) { System.out.println(" kék: " + kDb + " alkalommal"); } System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("3 képpont szélességű fekete belső keret készítése a képhez \n"); for (i = 1; i <= 50; i++) { for (j = 1; j <= 50; j++) { if (i <= 3 || i >= 48 || j <= 3 || j >= 48) { //az első adatsort már beolvastuk kep[i - 1][j - 1] = "0 0 0"; } } } //Ellenőrzés System.out.println("A keret megrajzolásának ellenőrzése: \n"); for (i = 1; i <= 50; i++) { for (j = 1; j <= 50; j++) { System.out.print(jel(kep[i - 1][j - 1])); } System.out.println(""); } System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A keretes kép kiíratása a keretes.txt fájlba \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("keretes.txt"));
Klemand
209.oldal
2016
2012 október
Szín-kép
for (i = 1; i <= 50; i++) { for (j = 1; j <= 50; j++) { kivitel.println(kep[i - 1][j - 1]); } } kivitel.close(); System.out.println("A keretes.txt fájl kiíratása befejeződött. \n"); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A sárga téglalap adatai \n"); //Egy sárga téglalap keresése System.out.println("Egy sárga téglalap keresése \n"); //Bal felső csúcspont van = false; int s1 = -1; int o1 = -1; i = 1; while (i <= 50 && !van) { j = 1; while (j <= 50 && !(kep[i - 1][j - 1].equals("255 255 0"))) { j++; } if (j <= 50) { van = true; s1 = i; o1 = j; } i++; } if (van) { System.out.println("A sárga szín megtalálható a képen, először a(z) " + s1 + ". sor " + o1 + ". oszlopában"); System.out.println(""); //Jobb alsó csúcspont van = false; int s2 = -1; int o2 = -1; i = 50; while (i >= 1 && !van) { j = 50; while (j >= 1 && !(kep[i - 1][j - 1].equals("255 255 0"))) { j--; } if (j >= 1) { van = true; s2 = i; o2 = j; } i--; } //Ez a rész csak akkor fut, ha van sárga szín, így már csak az a kérdés, hogy több is van-e. if (s2 > s1 || o2 > o1) { System.out.println("Több sárga színű pont is van, az utolsó előfordulása: " + s2 + ". sor " + o2 + ". oszlop");
Klemand
210.oldal
2016
2012 október
Szín-kép /*A feladat egy sárga téglalapot említ, ezért feltételezhető, hogy a kapott pontok valóban az egyetlen sárga téglalapot határozzák meg. A további vizsgálatok ellenőrzésnek tekinthetők.*/ //Sárga-e minden képpont az átlós csúcsok által meghatározott téglalapban? boolean sargaTeglalap = true; for (i = s1; i <= s2; i++) { for (j = o1; j <= o2; j++) { if (!(kep[i - 1][j - 1].equals("255 255 0"))) { sargaTeglalap = false; } } } if (sargaTeglalap) { System.out.println("Az átlós csúcsok által meghatározott téglalap minden pontja sárga."); //Van-e ságra képpont a meghatározott téglalapon kívül? int teglalapDb = (s2 - s1 + 1) * (o2 - o1 + 1); System.out.println("A téglalap sárga képpontjainak száma: " + teglalapDb); int sargaDb = 0; for (i = 1; i <= 50; i++) { for (j = 1; j <= 50; j++) { if (kep[i - 1][j - 1].equals("255 255 0")) { sargaDb++; } } } if (sargaDb == teglalapDb) { System.out.println("A téglalapon kívül nincs sárga képpont. \n"); System.out.println("Összegezve, a sárga téglalap adatai: "); System.out.println("Kezd: " + s1 + ", " + o1); System.out.println("Vége: " + s2 + ", " + o2); System.out.println("Képpontok száma: " + teglalapDb); } else { System.out.println("A téglalapon kívül is van " + (sargaDb - teglalapDb) + " darab sárga képpont."); } } else { System.out.println("Az átlós csúcsok által meghatározott téglalapban nem csak sárga képpontok vannak."); }
} else { System.out.println("Csak 1 db sárga pont van a képen: " + s1 + ". sor " + o1 + ". oszlop"); } } else { System.out.println("Nincs sárga színű pont a képen."); } System.out.println(""); } //************************************************************
Klemand
211.oldal
2016
2012 október
Szín-kép
public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } public static String jel(String szin) { switch (szin) { case "255 0 0": return "V"; case "0 255 0": return "Z"; case "0 0 255": return "K"; case "255 255 0": return "S"; case "255 0 255": return "M"; case "0 0 0": return "F"; default: return "-"; } } }
Klemand
212.oldal
2016
2012 október
Szín-kép
run: Az 1. feladat megoldása A kep.txt fájl beolvasása Ellenőrzés A beolvasott kép vörös, zöld, kék, sárga és fekete pontjainak ábrázolása színmátrixban Vörös: V, zöld: Z, kék: K, sárga: S, magenta: M, fekete: F, egyéb szín: -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------MMMMMMMMMMM--------------------------------------MMMMMMMMMMM-----------------VVVVVVVVVVV----------MMMMMMMMMMM-----------------VVVVVVVVVVV--------------------------------------VVVVVVVVVVV--------------------------------------VVVVVVVVVVV--------------------------------------VVVVVVVVVVV--------------------------------------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ------------------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ------------------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ------------------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ------------------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ------------------VVVVVZZZZZZZZZZZZZZZKKKKKKKKKKK-----------------------ZZZZZZZZZZZZZZZKKKKKKKKKKK-----------------------ZZZZZZZZZZZZZZZKKKKKKKKKKK-----------------------ZZZZZZZZZZZZZZZKKKKKKKKKKK-----------------------ZZZZZZZZZZZZZZZKKKKKKKKKKK-----------------------ZZZZZZZZZZZZZZZKKKKKKKKKKK--------------------------------------KKKKKKKKKKK--------------------------------------KKKKKKKKKKK--------------------------------------KKKKKKKKKKK--------------------------------------KKKKKKKKKKK--------------------------------------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------KKKKKKKKKKK--------------------SSSSSSSSSS--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A 2. feladat megoldása Egy szín keresése a képen bekért RGB kód alapján Kérem Kérem Kérem Kérem Kérem Kérem Kérem
az RGB kód R a számot! (0 az RGB kód G a számot! (0 az RGB kód B a számot! (0 a számot! (0
(vörös) összetevőjét! <= beírt szám <= 255) (zöld) összetevőjét! <= beírt szám <= 255) (kék) összetevőjét! <= beírt szám <= 255) <= beírt szám <= 255)
:0 :100 :300 :255
0 100 255 A megadott szín nincs a képen. A 3. feladat megoldása Egy megadott helyű pont színe hányszor szerepel a sorában és oszlopában? A megadott pont színének előfordulása:
Klemand
213.oldal
2016
2012 október
Szín-kép
Sorban: 29 Oszlopban: 50 A 4. feladat megoldása A vörös, zöld és a kék színek előfordulásainak összehasonlítása A legtöbbször előforduló szín(ek): kék: 231 alkalommal Az 5. feladat megoldása 3 képpont szélességű fekete belső keret készítése a képhez A keret megrajzolásának ellenőrzése: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFF---------------------------MMMMMMMMMMM------FFF FFF---------------------------MMMMMMMMMMM------FFF FFF------VVVVVVVVVVV----------MMMMMMMMMMM------FFF FFF------VVVVVVVVVVV---------------------------FFF FFF------VVVVVVVVVVV---------------------------FFF FFF------VVVVVVVVVVV---------------------------FFF FFF------VVVVVVVVVVV---------------------------FFF FFF------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ-------FFF FFF------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ-------FFF FFF------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ-------FFF FFF------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ-------FFF FFF------VVVVVZZZZZZZZZZZZZZZZZZZZZZZZZZ-------FFF FFF------VVVVVZZZZZZZZZZZZZZZKKKKKKKKKKK-------FFF FFF-----------ZZZZZZZZZZZZZZZKKKKKKKKKKK-------FFF FFF-----------ZZZZZZZZZZZZZZZKKKKKKKKKKK-------FFF FFF-----------ZZZZZZZZZZZZZZZKKKKKKKKKKK-------FFF FFF-----------ZZZZZZZZZZZZZZZKKKKKKKKKKK-------FFF FFF-----------ZZZZZZZZZZZZZZZKKKKKKKKKKK-------FFF FFF--------------------------KKKKKKKKKKK-------FFF FFF--------------------------KKKKKKKKKKK-------FFF FFF--------------------------KKKKKKKKKKK-------FFF FFF--------------------------KKKKKKKKKKK-------FFF FFF--------------------------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------KKKKKKKKKKK-------FFF FFF--------SSSSSSSSSS--------------------------FFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFF--------------------------------------------FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
A 6. feladat megoldása A keretes kép kiíratása a keretes.txt fájlba A keretes.txt fájl kiíratása befejeződött. A 7. feladat megoldása A sárga téglalap adatai Egy sárga téglalap keresése A sárga szín megtalálható a képen, először a(z) 31. sor 12. oszlopában Több sárga színű pont is van, az utolsó előfordulása: 41. sor 21. oszlop Az átlós csúcsok által meghatározott téglalap minden pontja sárga.
Klemand
214.oldal
2016
2012 október
Szín-kép
A téglalap sárga képpontjainak száma: 110 A téglalapon kívül nincs sárga képpont. Összegezve, a sárga téglalap adatai: Kezd: 31, 12 Vége: 41, 21 Képpontok száma: 110 BUILD SUCCESSFUL (total time: 20 seconds) keretes.txt:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Klemand
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200
215.oldal
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96
64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 0 0 0 0 0 0 0 0 0 0 0 0 200 200 200 200 200 200 200 200 200 200 200 200
96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 0 0 0 0 0 0 96 96 96 96 96 96 96 96 96 96 96 96
64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
64 64 64 64 64 64 64 64 64 64 64 64
200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 0 0 0 0 0 0 0 0 0 0 0 0 200 200 200 200 …
96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 96 0 0 0 0 0 0 96 96 96 96
64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
64 64 64 64
2016
2013 május
Választások
2013 május: Választások Eszemiszom városában időközi helyhatósági választásokat írtak ki. A városban összesen 12 345 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.
Klemand
216.oldal
2016
2013 május
Választások
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 legtöbb 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 az egyes választókerületekben kik lettek a képviselők! Írja ki a választókerület sorszámát, 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! Az adatok a választókerületek száma szerinti sorrendben jelenjenek meg! Minden sorba egy képviselő adatai kerüljenek!
Klemand
217.oldal
2016
2013 május
Választások
package emeltinfo2013maj; import java.io.*; import java.util.*; /** * Választás * * @author Klemand */ public class EmeltInfo2013maj { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("A szavazatok.txt fájl beolvasása \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("szavazatok.txt")); String elsoSor; String sor; String[] daraboltSor; 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.trim().split(" "); szavazatok.add(new SzavazatokTipus(daraboltSor)); while ((sor = behozatal.readLine()) != null) { //Beolvassa a sort és megvizsgálja. Ha nem null, akkor feldolgozza. if (sor.length() > 0) { //Az üres sorokat kihagyjuk. daraboltSor = sor.trim().split(" "); szavazatok.add(new SzavazatokTipus(daraboltSor)); } } behozatal.close(); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("A képviselőjelöltek száma \n"); System.out.println("A választáson " + szavazatok.size() + " képviselőjelölt indult. \n"); //3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("Egy bekért képviselőjelölt szavazatainak száma
\n");
System.out.print("Kérem a képviselőjelült vezetéknevét! "); String vezNev = szovegBevitel(); System.out.println(""); System.out.print("Kérem a képviselőjelült utónevét! "); String utNev = szovegBevitel(); System.out.println(""); int i = 1; while (i <= szavazatok.size() && !(szavazatok.get(i - 1).vezetekNev.equals(vezNev) && szavazatok.get(i - 1).utoNev.equals(utNev))) { i++; }
Klemand
218.oldal
2016
2013 május
Választások
if (i <= szavazatok.size()) { System.out.println(szavazatok.get(i - 1).vezetekNev + " " + szavazatok.get(i - 1).utoNev + " " + szavazatok.get(i - 1).szavazatSzam + " szavazatot kapott."); } else { System.out.println("Ilyen nevű képviselőjelölt nem szerepel a nyilvántartásban."); } System.out.println(""); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("A részvételi arány meghatározása
\n");
int szavDb = 0; for (i = 1; i <= szavazatok.size(); i++) { szavDb += szavazatok.get(i - 1).szavazatSzam; } System.out.print("A választáson " + szavDb + " állampolgár, a szavazásra jogosultak "); int JOGOSULT = 12345; double szazalek; szazalek = szazalekMeghat(szavDb, JOGOSULT); System.out.printf("%.2f", szazalek); System.out.println("%-a vett részt. \n"); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("Az egyes pártokra szavazók arányának meghatározása
\n");
/*5 pártot még egyedileg is kezelhetnénk, de elegánsabb felvenni számukra egy tömblistát, amivel 50 párt is könnyen kezelhető */ for (i = 1; i <= szavazatok.size(); i++) { int j = 1; while ((j <= partok.size()) && (szavazatok.get(i - 1).rovidites.equals(partok.get(j - 1).rov) == false)) { j++; } if (j <= partok.size()) { partok.get(j - 1).szavSzam += szavazatok.get(i - 1).szavazatSzam; } else { String rovBe = szavazatok.get(i - 1).rovidites; int szavSzamBe = szavazatok.get(i - 1).szavazatSzam; String nevBe = nevMeghat(rovBe); partok.add(new PartokTipus(rovBe, szavSzamBe, nevBe)); } } for (i = 1; i <= partok.size(); i++) { System.out.print(partok.get(i - 1).nev + "= "); System.out.printf("%.2f", szazalekMeghat(partok.get(i - 1).szavSzam, szavDb)); System.out.println("%"); System.out.println(""); } //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A legtöbb szavazatot kapott jelölt(ek): \n");
Klemand
219.oldal
2016
2013 május
Választások
int max = 1; for (i = 2; i <= szavazatok.size(); i++) { if (szavazatok.get(i - 1).szavazatSzam > szavazatok.get(max - 1).szavazatSzam) { max = i; } } for (i = 1; i <= szavazatok.size(); i++) { if (szavazatok.get(i - 1).szavazatSzam == szavazatok.get(max - 1).szavazatSzam) { System.out.println(szavazatok.get(i - 1).vezetekNev + " " + szavazatok.get(i - 1).utoNev + " " + szavazatok.get(i - 1).rovidites); } } System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A képviselők kiíratása választókerületenként a kepviselok.txt fájlba: \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("kepviselok.txt")); int j; int VALKERDB = 8; for (i = 1; i <= VALKERDB; i++) { max = 1; for (j = 2; j <= szavazatok.size(); j++) { if ((szavazatok.get(j - 1).kerulet == i) && (szavazatok.get(j - 1).szavazatSzam > szavazatok.get(max - 1).szavazatSzam)) { max = j; } } kivitel.println(i + " " + szavazatok.get(max - 1).vezetekNev + " " + szavazatok.get(max - 1).utoNev + " " + szavazatok.get(max - 1).rovidites); } kivitel.close(); System.out.println("A kepviselok.txt fájl kiíratása befejeződött. \n"); } //************************************************************ static ArrayList<SzavazatokTipus> szavazatok = new ArrayList<>(); public static class SzavazatokTipus { private private private private private
final final final final final
int kerulet; int szavazatSzam; String vezetekNev; String utoNev; String rovidites;
public SzavazatokTipus(String[] daraboltSor) //konstruktor { kerulet = Integer.parseInt(daraboltSor[0]); szavazatSzam = Integer.parseInt(daraboltSor[1]); vezetekNev = daraboltSor[2]; utoNev = daraboltSor[3]; rovidites = roviditesMeghat(daraboltSor[4]); } }
Klemand
220.oldal
2016
2013 május
Választások
public static String roviditesMeghat(String rovBe) { if (rovBe.equals("-")) { return "független"; } else { return rovBe; } } public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in)); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket } public static double szazalekMeghat(int ertek, int alap) { double szlab; szlab = (double) ertek / alap; szlab *= 100; return szlab; } static ArrayList<PartokTipus> partok = new ArrayList<>(); public static class PartokTipus { private String rov; private int szavSzam; private String nev; public PartokTipus(String rovBe, int szavSzamBe, String nevBe) //konstruktor { rov = rovBe; szavSzam = szavSzamBe; nev = nevBe; } } public static String nevMeghat(String rov) { switch (rov) { case "GYEP": return "Gyümölcsevők Pártja"; case "HEP": return "Húsevők Pártja"; case "TISZ": return "Tejivók Szövetsége"; case "ZEP": return "Zöldségevők Pártja"; default: return "Független jelöltek"; } } }
Klemand
221.oldal
2016
2013 május
Választások
run: Az 1. feladat megoldása A szavazatok.txt fájl beolvasása A 2. feladat megoldása A képviselőjelöltek száma A választáson 40 képviselőjelölt indult. A 3. feladat megoldása Egy bekért képviselőjelölt szavazatainak száma Kérem a képviselőjelült vezetéknevét! Szilva Kérem a képviselőjelült utónevét! Szilvia Szilva Szilvia 87 szavazatot kapott. A 4. feladat megoldása A részvételi arány meghatározása A választáson 4713 állampolgár, a szavazásra jogosultak 38,18%-a vett részt. Az 5. feladat megoldása Az egyes pártokra szavazók arányának meghatározása Független jelöltek= 17,53% Gyümölcsevők Pártja= 16,36% Zöldségevők Pártja= 20,03% Húsevők Pártja= 24,59% Tejivók Szövetsége= 21,49% A 6. feladat megoldása A legtöbb szavazatot kapott jelölt(ek): Joghurt Jakab TISZ Narancs Edmond GYEP Vadas Marcell HEP A 7. feladat megoldása A képviselők kiíratása választókerületenként a kepviselok.txt fájlba: A kepviselok.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 13 seconds)
kepviselok.txt: 1 2 3 4 5 6 7 8
Petrezselyem Petra ZEP Oldalas Olga HEP Tejes Attila TISZ Monitor Tibor független Joghurt Jakab TISZ Vadas Marcell HEP Bab Zsuzsanna ZEP Narancs Edmond GYEP
Klemand
222.oldal
2016
2013 május idegennyelvű
Számok
2013 május idegennyelvű: Számok A Szereti Ön a számokat? internetes vetélkedőben a versenyzők olyan kérdéseket kapnak, amelyekre egy egész számmal kell válaszolniuk. A kérdések különböző témakörökből származnak (pl. magyar, matematika, történelem, kémia), és nehézségüktől függően 1-től 3-ig terjedő pontszámot érnek. Tudjuk, hogy a kérdésekre adható válaszok értéke 0 és 1 milliárd közé esik. A feladatokat a verseny szervezői egy adatfájlban tárolják. A fájlban minden feladat két sorban helyezkedik el. Az első sor tartalmazza a kérdést, a második pedig – egy-egy szóközzel elválasztva – a helyes választ, a helyes válaszért adható pontszámot és a témakör megnevezését. A fájlban egyelőre ékezetes betűk nem szerepelnek, pl. a „gyümölcsízű” szó helyett a „gyumolcsizu” szót írták be. Például: Mikor volt a mohacsi vesz? 1526 1 tortenelem A példában szereplő kérdés: Mikor volt a mohacsi vesz? A helyes válasz: 1526. A helyes válasz 1 pontot ér, és a kérdés a tortenelem témakörbe tartozik. Az adatfájl még csak részben készült el. Az Ön feladata ennek a félkész adatfájlnak a tesztelése. A fájl legfeljebb 100 kérdést tartalmaz. Biztosan van benne matematika, történelem és földrajz feladat, de más témakörök is előfordulnak. Készítsen programot, amely a felszam.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse szamok néven! (A beolvasott fájl adatait és a felhasználó válaszainak az érvényességét nem kell ellenőriznie.) A képernyőre írást igénylő feladatok eredményének megjelenítése előtt írja ki a képernyőre a feladat sorszámát (például: 3. feladat)! Ha a felhasználótól kér be adatot, akkor jelenítse meg a képernyőn azt is, hogy milyen adatot vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be a felszam.txt állományban talált adatokat, és azok felhasználásával oldja meg a következő feladatokat!
2. Hány feladat van az adatfájlban? A választ írassa ki a képernyőre! 3. Határozza meg, hogy hány matematika feladat van az adatfájlban, és ezek közül hány feladat ér 1, 2, illetve 3 pontot! A választ egész mondatban írassa ki a képernyőre! Például: Az adatfajlban 20 matematika feladat van, 1 pontot er 10 feladat, 2 pontot er 6 feladat, 3 pontot er 4 feladat.
4. Mettől meddig terjed a fájlban található válaszok számértéke? A választ egész mondatban írja ki a képernyőre!
5. Milyen témakörök szerepelnek ténylegesen az adatfájlban? Írassa ki a témakörök nevét a képernyőre úgy, hogy minden előforduló témakör pontosan egyszer jelenjen meg!
Klemand
223.oldal
2016
2013 május idegennyelvű
Számok
6. Kérje be egy témakör nevét, és véletlenszerűen sorsoljon ki egy kérdést ebből a témakörből! Sorsoláskor ügyeljen arra, hogy az adott témakörbe eső valamennyi feladatnak legyen esélye! (Feltételezheti, hogy a felhasználó helyesen adta meg egy létező témakör nevét.) Írassa ki a kérdést, kérje be a felhasználó válaszát, majd adja meg a válaszért járó pontszámot! (Helytelen válaszért 0 pont jár.) Ha a válasz helytelen volt, a helyes választ is közölje! A párbeszéd az alábbi formában jelenjen meg: Például: Milyen temakorbol szeretne kerdest kapni? tortenelem Mikor volt a mohacsi vesz? 1514 A valasz 0 pontot er. A helyes valasz: 1526 7. Generáljon egy 10 kérdésből álló feladatsort véletlenszerűen úgy, hogy egyetlen feladat se szerepeljen benne kétszer! (Ügyeljen azonban arra, hogy minden beolvasott feladatnak legyen esélye a kiválasztásra!) A feladatsort írassa ki a tesztfel.txt állományba az alábbi formátumban! (Az első szám a helyes megoldásért járó pontszám, ezt követi a helyes válasz, majd a kérdés egy-egy szóközzel elválasztva.) Az állomány végére írassa ki a feladatsorra összesen adható pontszámot is! Például: … 1 1526 Mikor volt a mohacsi vesz? … A feladatsorra osszesen 20 pont adhato.
Klemand
224.oldal
2016
2013 május idegennyelvű
Számok
package emeltinfo2013mid; import java.io.*; import java.util.*; /** * Számok * * @author Klemand */ public class EmeltInfo2013mid { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("A felszam.txt fájl beolvasása \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("felszam.txt")); String elsoSor; String sor; String[] daraboltSor; 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); } sor = elsoSor.trim(); daraboltSor = behozatal.readLine().trim().split(" "); szamok.add(new SzamokTipus(sor, daraboltSor)); while ((sor = behozatal.readLine()) != null) { //csak a sorpár első tagját kell vizsgálni sor = sor.trim(); daraboltSor = behozatal.readLine().trim().split(" "); szamok.add(new SzamokTipus(sor, daraboltSor)); } behozatal.close(); //2. feladat System.out.println("A 2. feladat megoldása \n"); System.out.println("Az adatfájlban " + szamok.size() + " feladat van. \n"); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); int i; for (i = 1; i <= szamok.size(); i++) { System.out.println(i + ". " + szamok.get(i - 1).tema + ": " + szamok.get(i - 1).kerdes); } System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása \n"); System.out.println("A matematika feladatok jellemzése \n"); int matDb = 0; int[] matPontDb = new int[3];
Klemand
225.oldal
2016
2013 május idegennyelvű
Számok
for (i = 1; i <= 3; i++) { matPontDb[i - 1] = 0; } for (i = 1; i <= szamok.size(); i++) { if (szamok.get(i - 1).tema.equals("matematika")) { matDb++; matPontDb[szamok.get(i - 1).pont - 1]++; } } System.out.println("Az adatfájlban " + matDb + " matematika feladat van."); System.out.println("1 pontot ér " + matPontDb[0] + " feladat, 2 pontot ér " + matPontDb[1] + " feladat, 3 pontot ér " + matPontDb[2] + " feladat. \n"); //4. feladat System.out.println("A 4. feladat megoldása \n"); int min = 1; int max = 1; for (i = 2; i <= szamok.size(); i++) { if (szamok.get(i - 1).valasz < szamok.get(min - 1).valasz) { min = i; } if (szamok.get(i - 1).valasz > szamok.get(max - 1).valasz) { max = i; } } System.out.println("A válaszok legkisebb számértéke: " + szamok.get(min - 1).valasz + ", a legnagyobb: " + szamok.get(max - 1).valasz + ". \n"); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.println("1. Tömblistával: "); System.out.print("Az adatfájlban szereplő témakörök:"); //A témakörök tömblista elkészítése int j; for (i = 1; i <= szamok.size(); i++) { j = 1; while ((j <= temakorok.size()) && (szamok.get(i - 1).tema.equals(temakorok.get(j - 1).tema) == false)) { j++; } if (j <= temakorok.size()) { temakorok.get(j - 1).db++; } else { temakorok.add(new TemakorokTipus(szamok.get(i - 1).tema, 1)); } } for (i = 1; i <= temakorok.size(); i++) { System.out.print(" " + temakorok.get(i - 1).tema); } System.out.println("\n");
Klemand
226.oldal
2016
2013 május idegennyelvű
Számok
System.out.println("2. Vektorral: "); System.out.print("Az adatfájlban szereplő témakörök:"); String[] temakor = new String[szamok.size()]; for (i = 1; i <= szamok.size(); i++) { temakor[i - 1] = ""; } boolean volt; int temadb = 0; for (i = 1; i <= szamok.size(); i++) { volt = false; for (j = 1; j <= szamok.size(); j++) { if (szamok.get(i - 1).tema.equals(temakor[j - 1])) { volt = true; } } if (volt == false) { temadb++; temakor[temadb - 1] = szamok.get(i - 1).tema; } } for (i = 1; i <= temadb; i++) { System.out.print(" " +temakor[i - 1]); } System.out.println("\n"); //6. feladat System.out.println("A 6. feladat megoldása \n"); System.out.println("Témakör bekérése - kérdés sorsolása - felelet bekérése - értékelés \n"); String temakorBe; System.out.print("Melyik témakörből szeretne kérdést kapni? Írja be ékezet nélkül: "); temakorBe = szovegBevitel(); System.out.println(""); //Véletlenszám előállítás 1 és a témakör kérdéseinek száma között i = 1; while (i <= temakorok.size() && !(temakorok.get(i - 1).tema.equals(temakorBe))) { i++; } if (i <= temakorok.size()) { //Ha tényleg biztosak lehetünk benne, hogy jól írta be a létező témakör nevét, akkor nem kell if. int sorszam = (int) ((Math.random() * temakorok.get(i - 1).db) + 1); System.out.println("(Az előállított véletlenszám: " + sorszam +") \n"); int dbTk = 0; i = 0; do { i++; if (szamok.get(i - 1).tema.equals(temakorBe)) { dbTk++; } } while (dbTk < sorszam); /*Biztosan lesz ennyi kérdés a témakörben, így a méretet nem kell figyelni. Hátultesztelős ciklus: ne növelje utólag meg az i-t! */ System.out.print(szamok.get(i - 1).kerdes + " "); String valaszBe = szovegBevitel();
Klemand
227.oldal
2016
2013 május idegennyelvű
Számok
if (szamok.get(i - 1).valasz == (Integer.parseInt(valaszBe))) { System.out.println("A válasz " + szamok.get(i - 1).pont + " pontot ér. \n"); } else { System.out.println("A válasz " + 0 + " pontot ér."); System.out.println("A helyes válasz: " + szamok.get(i - 1).valasz); System.out.println(""); } } else { System.out.println("Nincs ilyen témakör. \n"); } //7. feladat System.out.println("A 7. feladat megoldása \n"); System.out.println("Feladatsor generálása és kiíratása a tesztfel.txt fájlba \n"); int osszPont = 0; boolean[] kerdesek = new boolean[szamok.size()]; for (i = 1; i <= szamok.size(); i++) { kerdesek[i - 1] = false; } int[] kivalasztott = new int[10]; int n; i = 1; while (i <= 10) { n = (int) (szamok.size() * Math.random()) + 1; if (kerdesek[n - 1] != true) { //még nem volt ilyen szám kerdesek[n - 1] = true; //ez többet nem választható! kivalasztott[i - 1] = n; i++; } } PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("tesztfel.txt")); for (i = 1; i <= 10; i++) { osszPont += szamok.get(kivalasztott[i - 1] - 1).pont; kivitel.println(szamok.get(kivalasztott[i - 1] - 1).pont + " " + szamok.get(kivalasztott[i - 1] - 1).valasz + " " + szamok.get(kivalasztott[i - 1] - 1).kerdes); } kivitel.println("A feladatsorra összesen " + osszPont + " pont adható. \n"); kivitel.close(); System.out.println("A tesztfel.txt fájl kiíratása befejeződött. \n"); } //************************************************************
Klemand
228.oldal
2016
2013 május idegennyelvű
Számok
static ArrayList<SzamokTipus> szamok = new ArrayList<>(); public static class SzamokTipus { private private private private
final final final final
String kerdes; int valasz; int pont; String tema;
public SzamokTipus(String kerdesBe, String[] daraboltSor) //konstruktor { kerdes = kerdesBe; valasz = Integer.parseInt(daraboltSor[0]); pont = Integer.parseInt(daraboltSor[1]); tema = daraboltSor[2]; } } static ArrayList temakorok = new ArrayList<>(); public static class TemakorokTipus { private String tema; private int db; public TemakorokTipus(String temaBe, int dbBe) //konstruktor { tema = temaBe; db = dbBe; } } public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in)); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket } }
Klemand
229.oldal
2016
2013 május idegennyelvű
Számok
run: Az 1. feladat megoldása A felszam.txt fájl beolvasása A 2. feladat megoldása Az adatfájlban 49 feladat van. A beolvasás ellenőrzése: 1. tortenelem: Mikor volt a mohacsi vesz? 2. tortenelem: Melyik evben bomlott fel a Nyugat-Romai Birodalom? 3. tortenelem: Melyik evben kezdodott a Honfoglalas? 4. tortenelem: Mikor adtak ki az Aranybullat? 5. tortenelem: Melyik evben adtak ki Angliaban a Magna Chartat? 6. tortenelem: Mikor vezette be Karoly Robert a kapuadot? 7. tortenelem: Melyik evben volt a Budai Nagy Antal-fele parasztfelkeles? 8. tortenelem: Melyik evben egettek meg Husz Janost? 9. tortenelem: Melyik evben volt a nandorfehervari diadal? 10. tortenelem: Melyik evben volt a Dozsa-fele parasztfelkeles? 11. tortenelem: Mikor kotottek meg a zsitvatoroki beket? 12. tortenelem: Mikor volt a Kiegyezes? 13. tortenelem: Melyik evben vezettek be Magyarorszagon a 8 oras munkaidot? 14. tortenelem: Mikor volt az Anschluss? 15. tortenelem: Melyik evben alakult meg a NATO? 16. foldrajz: Milyen magas a Kekesteto? 17. foldrajz: Hany negyzetkilometer Magyarorszag terulete? 18. foldrajz: Mennyi a Fold atlagos sugara (10 km-re kerekitve)? 19. foldrajz: Hany orszagon halad at a Duna? 20. foldrajz: Mikor lett Magyarorszag az Europai Unio tagja? 21. foldrajz: Hany km hosszu az Amazonas? 22. foldrajz: Hanyadik az orszagok terulet szerinti rangsoraban Kanada? 23. foldrajz: Hanyadik helyen all India az orszagok nepesseg szerinti rangsoraban? 24. foldrajz: Hany szomszedja van Magyarorszagnak? 25. foldrajz: Hany km hosszu a Balaton? 26. foldrajz: Hany orszag alkotja az eurozonat (2012-ben)? 27. foldrajz: Hany megyeje van Magyarorszagnak? 28. foldrajz: Kb. hany ezer negyzetkilometer a Tisza vizgyujto terulete? 29. foldrajz: Hany kerulete van Budapestnek Budan? 30. foldrajz: Hany lakosa volt Magyarorszag legkisebb telepulesenek, Iborfianak, 2012 januar 1-en? 31. magyar: Hany predikator szerepel Moldova Gyorgy regenyenek cimeben? 32. kemia: Mennyi az oxigen rendszama? 33. kemia: Mennyi egy semleges kemhatasu oldat pH-ja? 34. matematika: Melyik a legkisebb primszam? 35. matematika: Mennyi 64 kobgyoke? 36. matematika: Hany atloja van a szabalyos nyolcszognek? 37. matematika: Hany oldallapja van az oktaedernek? 38. matematika: Hany fok a szabalyos otszog szogeinek osszege? 39. matematika: Mennyit kapunk, ha megnoveljuk 120-at 25%-kal? 40. matematika: Mennyivel tobb 90 fok szinusza -90 fok szinuszanal? 41. matematika: Mennyi egy 3 egyseg oldalu kocka terulete? 42. matematika: Mennyi 1000 tizes alapu logaritmusa? 43. matematika: Mi a Fibonacci-sorozat 6. eleme? 44. matematika: Mennyi az elso 100 szam osszege? 45. matematika: Mennyi 5 faktorialisa? 46. matematika: Melyik a legkisebb tokeletes szam? 47. matematika: Mi az 0, 2, 4, 6, ... sorozat kovetkezo tagja? 48. matematika: Mennyi -55 abszoluterteke? 49. matematika: Mennyi 4 es 6 legkisebb kozos tobbszorose?
Klemand
230.oldal
2016
2013 május idegennyelvű
Számok
A 3. feladat megoldása A matematika feladatok jellemzése Az adatfájlban 16 matematika feladat van. 1 pontot ér 5 feladat, 2 pontot ér 7 feladat, 3 pontot ér 4 feladat. A 4. feladat megoldása A válaszok legkisebb számértéke: 2, a legnagyobb: 93030. Az 5. feladat megoldása 1. Tömblistával: Az adatfájlban szereplő témakörök: tortenelem foldrajz magyar kemia matematika 2. Vektorral: Az adatfájlban szereplő témakörök: tortenelem foldrajz magyar kemia matematika A 6. feladat megoldása Témakör bekérése - kérdés sorsolása - felelet bekérése - értékelés Melyik témakörből szeretne kérdést kapni? Írja be ékezet nélkül: kemia (Az előállított véletlenszám: 1) (Az előállított véletlenszám: 1) Mennyi az oxigen rendszama? 8 A válasz 2 pontot ér. A 7. feladat megoldása Feladatsor generálása és kiíratása a tesztfel.txt fájlba A tesztfel.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 16 seconds)
tesztfel.txt:
3 3 2 1 2 3 1 3 1 1 A
77 Hany km hosszu a Balaton? 6370 Mennyi a Fold atlagos sugara (10 km-re kerekitve)? 24 Hany atloja van a szabalyos nyolcszognek? 19 Hany megyeje van Magyarorszagnak? 17 Hany orszag alkotja az eurozonat (2012-ben)? 8 Mi a Fibonacci-sorozat 6. eleme? 2004 Mikor lett Magyarorszag az Europai Unio tagja? 1215 Melyik evben adtak ki Angliaban a Magna Chartat? 1514 Melyik evben volt a Dozsa-fele parasztfelkeles? 895 Melyik evben kezdodott a Honfoglalas? feladatsorra összesen 20 pont adható.
Klemand
231.oldal
2016
2013 október
Közúti ellenőrzés
2013 október: Közúti ellenőrzés Bizonyára mindenki látott már rendőrjárőrt, aki szolgálata során egy út menti ellenőrző pontról a forgalmat figyelte. A járőr feladata lehet a szabálytalankodók kiszűrése mellett az elhaladó járművek szúrópróbaszerű vagy módszeres ellenőrzése. Bizonyos esetekben egy műszaki ellenőrző állomás is kitelepül, amely alkalmas a kiválasztott járművek műszaki állapotának felmérésére. Egy olyan nap adatait kell feldolgoznia, amelyen a rendőri mellett műszaki ellenőrzés is zajlott egy egyirányú út mentén. Az úton haladó legalább 50, de legfeljebb 1000 jármű adatait a jarmu.txt állományban tárolta el a rendőrautó forgalomrögzítő kamerájához csatlakoztatott gép. Az állomány sorai azonos szerkezetűek, az időt és a rendszámot tartalmazzák az elhaladás sorrendjében. A rendszám mindig 7 karakter hosszú, az angol ábécé nagybetűit, kötőjelet és számjegyeket tartalmaz ebben a sorrendben. A példában szereplőtől eltérő felépítésű rendszámok is lehetségesek. Például:
11 12 11 12 11 12 11 13 …
05 09 41 12
TI-2342 BU-5523 AAAA-99 DM-5632
A 2. sor mutatja, hogy a BU-5523 jármű 11 óra 12 perc 9 másodperckor haladt át az ellenőrző ponton. Készítsen programot, amely az alábbi kérdésekre válaszol! A program forráskódját mentse jaror néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie.) 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:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be a jarmu.txt állományban talált adatokat, s annak felhasználásával oldja meg a következő feladatokat!
2. Határozza meg, hogy aznap legalább hány óra hosszat dolgoztak az ellenőrzést végzők, ha munkaidejük egész órakor kezdődik, és pontosan egész órakor végződik! (Minden óra 0 perc 0 másodperckor kezdődik, és 59 perc 59 másodperccel végződik.) Az eredményt jelenítse meg a képernyőn!
3. Műszaki ellenőrzésre minden órában egy járművet választanak ki. Azt, amelyik abban az órában először halad arra. Az ellenőrzés óráját és az ellenőrzött jármű rendszámát jelenítse meg a képernyőn a következő formában: 9 óra: AB-1234! Minden óra adata külön sorba kerüljön! Csak azon órák adatai jelenjenek meg, amikor volt ellenőrizhető jármű!
4. A rendszám első karaktere külön jelentéssel bír. Az egyes betűk közül a „B” autóbuszt, a „K” kamiont, az „M” motort jelöl, a többi rendszámhoz személygépkocsi tartozik. Jelenítse meg a képernyőn, hogy az egyes kategóriákból hány jármű haladt el az ellenőrző pont előtt!
5. Mettől meddig tartott a leghosszabb forgalommentes időszak? A választ jelenítse meg a képernyőn a következő formában: 9:9:13 - 9:15:3!
Klemand
232.oldal
2016
2013 október
Közúti ellenőrzés
6. A rendőrök egy baleset közelében látott járművet keresnek rendszám alapján. A szemtanúk csak a rendszám bizonyos karaktereire emlékeztek, így a rendszám ismeretlen karaktereit a * karakterrel helyettesítve keresik a nyilvántartásban. Kérjen be a felhasználótól egy ilyen rendszámot, majd jelenítse meg a képernyőn az arra illeszthető rendszámokat!
7. Egy közúti ellenőrzés pontosan 5 percig tart. Amíg az ellenőrzés folyik, a járművek szabadon elhaladhatnak, a következő megállítására csak az ellenőrzés befejezése után kerül sor. Ha a rendőrök a legelső járművet ellenőrizték, akkor mely járműveket tudták ellenőrizni a szolgálat végéig? Írja az ellenőrzött járművek áthaladási idejét és rendszámát a vizsgalt.txt állományba az áthaladás sorrendjében, a bemenettel egyező formában! Ügyeljen arra, hogy az időadatokhoz tartozó számok a bevezető nullákat tartalmazzák!
Klemand
233.oldal
2016
2013 október
Közúti ellenőrzés
package emeltinfo2013okt; import java.io.*; import java.util.*; /** * Közúti ellenórzés * * @author Klemand */ public class EmeltInfo2013okt { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása"); System.out.println("A jarmu.txt fájl beolvasása \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("jarmu.txt")); String elsoSor; String sor; String[] daraboltSor; 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.trim().split(" "); jarmu.add(new JarmuTipus(daraboltSor)); while ((sor = behozatal.readLine()) != null) { daraboltSor = sor.trim().split(" "); jarmu.add(new JarmuTipus(daraboltSor)); } behozatal.close(); //2. feladat System.out.println("A 2. feladat megoldása \n"); int n = jarmu.size(); System.out.println("Az ellenőrzést végzők legalább " + (jarmu.get(n - 1).ora - jarmu.get(0).ora + 1) + " órát dolgoztak. \n"); //3. feladat System.out.println("A 3. feladat megoldása \n"); System.out.println("Óránkénti ellenőrzés: "); int i; int ora; System.out.println(jarmu.get(0).ora + " óra: " + jarmu.get(0).rendszam); ora = jarmu.get(0).ora; for (i = 2; i <= n; i++) { if (jarmu.get(i - 1).ora != jarmu.get(i - 2).ora) { System.out.println(jarmu.get(i - 1).ora + " óra: " + jarmu.get(i - 1).rendszam); } } System.out.println("");
Klemand
234.oldal
2016
2013 október
Közúti ellenőrzés
//4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.println("Kategóriánkénti statisztika az ellenőrzőpont előtti áthaladásról: "); int[] katDb = for (i = 1; i int kat = katDb[kat }
new int[4]; <= n; i++) { katMeghat(jarmu.get(i - 1).rendszam); - 1]++;
System.out.println("Autóbusz: " + katDb[0]); System.out.println("Kamion: " + katDb[1]); System.out.println("Motorkerékpár: " + katDb[2]); System.out.println("Személygépkocsi: " + katDb[3]); System.out.println(""); //5. feladat System.out.println("A 5. feladat megoldása \n"); System.out.print("A leghosszabb forgalommentes időszak: "); int leghosszabb = 2; for (i = 3; i <= n; i++) { if (jarmu.get(i - 1).ora * 3600 + jarmu.get(i - 1).perc * 60 + jarmu.get(i - 1).mp (jarmu.get(i - 2).ora * 3600 + jarmu.get(i - 2).perc * 60 + jarmu.get(i - 2).mp) > jarmu.get(leghosszabb - 1).ora * 3600 + jarmu.get(leghosszabb - 1).perc * 60 + jarmu.get(leghosszabb - 1).mp - (jarmu.get(leghosszabb - 2).ora * 3600 + jarmu.get(leghosszabb - 2).perc * 60 + jarmu.get(leghosszabb - 2).mp)) { leghosszabb = i; } } System.out.println(jarmu.get(leghosszabb - 2).ora + ":" + jarmu.get(leghosszabb - 2).perc + ":" + jarmu.get(leghosszabb - 2).mp + " - " + jarmu.get(leghosszabb - 1).ora + ":" + jarmu.get(leghosszabb - 1).perc + ":" + jarmu.get(leghosszabb - 1).mp); System.out.println("\n");
Klemand
235.oldal
2016
2013 október
Közúti ellenőrzés
//6. feladat System.out.println("A 6. feladat megoldása"); System.out.print("Egy hiányos rendszám keresése \n "); System.out.print("Kérem a rendszámot, a hiányzó karaktereket *-gal jelölve! "); String foszlany = szovegBevitel().toUpperCase(); System.out.println(""); System.out.println("A megfelelő rendszámok: "); boolean megfelel; int j; int KARDB = 7; if (foszlany.length() != KARDB) { System.out.println("Nem megfelelő a karakterek száma!"); } else { for (i = 1; i <= n; i++) { megfelel = true; j = 1; while (j <= KARDB && megfelel) { if (!(jarmu.get(i - 1).rendszam.substring(j - 1, j).equals (foszlany.substring(j - 1, j))) && !(foszlany.substring(j - 1, j).equals("*"))) { megfelel = false; } j++; } if (megfelel) { System.out.println(jarmu.get(i - 1).rendszam); } } } System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("Az ellenőrzött járművek kiíratása: \n"); System.out.println("1. for ciklussal a vizsgalt.txt fájlba"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("vizsgalt.txt")); kivitel.println(idoKonvertalas(jarmu.get(0).ora * 3600 + jarmu.get(0).perc * 60 + jarmu.get(0).mp) + " " + jarmu.get(0).rendszam); int kezdet = jarmu.get(0).ora * 3600 + jarmu.get(0).perc * 60 + jarmu.get(0).mp; for (i = 2; i <= n; i++) { if (jarmu.get(i - 1).ora * 3600 + jarmu.get(i - 1).perc * 60 + jarmu.get(i - 1).mp - kezdet >= 300) { kivitel.println(idoKonvertalas(jarmu.get(i - 1).ora * 3600 + jarmu.get(i - 1).perc * 60 + jarmu.get(i - 1).mp) + " " + jarmu.get(i - 1).rendszam); kezdet = jarmu.get(i - 1).ora * 3600 + jarmu.get(i - 1).perc * 60 + jarmu.get(i - 1).mp; } } kivitel.close(); System.out.println("A vizsgalt.txt fájl kiíratása befejeződött. \n");
Klemand
236.oldal
2016
2013 október
Közúti ellenőrzés
System.out.println("2. while ciklussal a vizsgaltw.txt fájlba"); kivitel = new PrintWriter(new FileWriter("vizsgaltw.txt")); kivitel.println(idoKonvertalas(jarmu.get(0).ora * 3600 + jarmu.get(0).perc * 60 + jarmu.get(0).mp) + " " + jarmu.get(0).rendszam); kezdet = jarmu.get(0).ora * 3600 + jarmu.get(0).perc * 60 + jarmu.get(0).mp; i = 2; while (i <= n) { while (i <= n && (jarmu.get(i - 1).ora * 3600 + jarmu.get(i - 1).perc * 60 + jarmu.get(i - 1).mp - kezdet < 300)) { i++; } if (i <= n) { kivitel.println(idoKonvertalas(jarmu.get(i - 1).ora * 3600 + jarmu.get(i - 1).perc * 60 + jarmu.get(i - 1).mp) + " " + jarmu.get(i - 1).rendszam); kezdet = jarmu.get(i - 1).ora * 3600 + jarmu.get(i - 1).perc * 60 + jarmu.get(i - 1).mp; } i++; } kivitel.close(); System.out.println("A vizsgaltw.txt fájl kiíratása befejeződött. \n"); } //************************************************************ static ArrayList<JarmuTipus> jarmu = new ArrayList<>(); public static class JarmuTipus { private private private private
final final final final
int ora; int perc; int mp; String rendszam;
public JarmuTipus(String[] daraboltSor) //konstruktor { ora = Integer.parseInt(daraboltSor[0]); perc = Integer.parseInt(daraboltSor[1]); mp = Integer.parseInt(daraboltSor[2]); rendszam = daraboltSor[3]; } }
public static int katMeghat(String rendszam) { String elso = rendszam.substring(0, 1); switch (elso) { case "B": return 1; case "K": return 2; case "M": return 3; default: return 4; } }
Klemand
237.oldal
2016
2013 október
Közúti ellenőrzés
public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in)); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket }
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; } }
Klemand
238.oldal
2016
2013 október
Közúti ellenőrzés
run: Az 1. feladat megoldása A jarmu.txt fájl beolvasása A 2. feladat megoldása Az ellenőrzést végzők legalább 6 órát dolgoztak. A 3. feladat megoldása Óránkénti ellenőrzés: 8 óra: FD-2717 9 óra: GK-3407 10 óra: RQ-8890 11 óra: IN-5066 12 óra: GC-0459 13 óra: CH-1893 A 4. feladat megoldása Kategóriánkénti statisztika az ellenőrzőpont előtti áthaladásról: Autóbusz: 10 Kamion: 12 Motorkerékpár: 15 Személygépkocsi: 317 A 5. feladat megoldása A leghosszabb forgalommentes időszak: 8:57:48 - 9:1:6
A 6. feladat megoldása Egy hiányos rendszám keresése Kérem a rendszámot, a hiányzó karaktereket *-gal jelölve! *****56 A megfelelő rendszámok: SM-6556 LX-6656 UW-6256 QA-4856 CL-1656 A 7. feladat megoldása Az ellenőrzött járművek kiíratása: 1. for ciklussal a vizsgalt.txt fájlba A vizsgalt.txt fájl kiíratása befejeződött. 2. while ciklussal a vizsgaltw.txt fájlba A vizsgaltw.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 15 seconds)
Klemand
239.oldal
2016
2013 október
Közúti ellenőrzés
vizsgalt.txt: 08 08 08 09 09 09 09 09 09 09 09 09 09 09 10 10 10 10 10 10 10 10 10 10 10 11 11 11
46 51 57 02 07 13 19 24 29 34 40 45 51 56 01 07 12 17 22 28 34 39 45 50 56 02 08 13
51 51 07 21 55 09 14 14 14 35 24 59 04 31 50 02 04 20 24 19 29 57 03 52 31 53 23 49
Klemand
11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13
FD-2717 FY-2063 LT-4076 EB-2944 VS-1521 RW-5733 SM-6556 XP-4672 YA-7536 FU-2341 XL-7193 II-4392 CK-0726 VD-9088 MJ-4313 LN-5680 NR-1269 CG-4491 YO-0524 BB-8519 XG-0235 DJ-9459 DH-2465 YZ-0459 VB-9322 IX-2030 VQ-9592 HW-1538
240.oldal
18 23 29 35 41 46 51 57 03 09 15 20 25 30 36 41 46 52 57 03 08 14 19 24 30 35 40 46
55 59 46 34 18 33 50 34 14 26 01 04 17 41 05 18 27 22 40 00 27 08 23 59 05 10 44 35
VG-2275 LJ-7985 PY-6651 KC-5813 IV-3641 KQ-2692 FF-4282 CH-5530 PH-8255 XD-7831 AC-9946 EL-6483 RS-2750 HU-6881 ZG-4536 OQ-8017 AS-8521 UB-9408 JM-4042 EM-3026 GL-2740 PQ-8950 JJ-0608 PM-2524 SJ-5336 IS-3397 RK-3908 BD-5782
2016
2014 május
Ipv6
2014 május: IPv6 A számítógépes hálózatok üzemeltetésében az IPv4-es címeket lassan leváltja az IPv6-os címzési rendszer, amely az eddigi 32 bit hosszúságú címek helyett 128 bit hosszúságú címeket használ. Az IPv6-os címeket hexadecimális alakban ábrázoljuk, nyolc darab négyes csoportba osztva. Az egyes számjegyek a tízes számrendszerben is használt számjegyek, valamint az a, b, c, d, e, f betűk lehetnek. Az egyes csoportokat kettősponttal választjuk el. Ezek alapján formailag megfelelő IPv6-os cím a következő: 2001:0db8:03cd:0000:0000:ef45:0006:0123 Egy nagyvállalatnál készítettek egy programot, ami a cég szerverén tárolt összes dokumentumból kigyűjtötte az IPv6-címeket. Az így keletkezett gyűjteményt az ip.txt fájl tárolja. Minden IP-címet csak az első előfordulásakor rögzítettek. Az állomány legalább 20, de legfeljebb 500 adatsort, soronként egy IP-címet tartalmaz a következő példának megfelelően: 2001:0db8:03cd:0000:0000:ef45:0006:0123 2001:0e10:0000:aabc:0000:01ac:0000:0001 fdf8:f53b:82e4:0000:0000:0000:0000:0053 fc00:0000:0000:ad65:0124:33ab:0100:6543 … A vállalatnál háromféle IP-cím fordul elő. A feladat megoldásában csak ezekkel a címekkel kell foglalkozni:
-
A 2001:0db8 kezdetű címek a dokumentációs címek, eszközöknek nincsenek kiosztva. A 2001:0e kezdetű címek az informatikai eszközöknek kiosztott globális egyedi címek. Az fc, valamint az fd kezdetű címek az eszközöknek kiosztott helyi egyedi címek.
Több szabály vonatkozik a címek rövidebb leírásának lehetőségére:
-
-
Az egyes csoportokban a bevezető nullák elhagyhatók. Például így leírva a fenti cím: 2001:db8:3cd:0:0:ef45:6:123 Kettő vagy több csak nullákból álló csoportot le lehet egyszerűsíteni két kettőspont közötti üres csoportra. Ezzel a szabállyal tovább egyszerűsítve az előző címet: 2001:db8:3cd::ef45:6:123 Ha egy címben több helyen is vannak csak nullákból álló csoportok, akkor is csak egyszer lehet ez utóbbi módszerrel rövidítést végrehajtani. Ilyen esetben mindig a több nullás csoportot kell rövidíteni. Ha azonos számú nullás csoport található a címen belül több helyen is, akkor balról az elsőt kell rövidíteni. Például: 2001:0000:0000:00f5:0000:0000:0000:0123 Rövidítve: 2001:0:0:f5::123
Készítsen programot, amely az ip.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse cimek néven! (A program megírásakor a megadott adatok helyességét, érvényességét nem kell ellenőriznie, feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.)
Klemand
241.oldal
2016
2014 május
Ipv6
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:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott. A képernyőre írást igénylő feladatok eredményét a feladatok utáni mintának megfelelően jelenítse meg!
1. Olvassa be az ip.txt állományban talált adatokat, s annak felhasználásával oldja meg a következő feladatokat!
2. Határozza meg és írja a képernyőre, hogy hány adatsor van az állományban! 3. Írja a képernyőre az állományban található legalacsonyabb IP-címet! A megoldásában felhasználhatja, hogy a betűk ASCII-kódjai a számok ASCII-kódjai után találhatók a kódtáblában.
4. Határozza meg, hogy az állományban hány darab IP-cím van az egyes fajtákból! Az eredményt jelenítse meg a képernyőn a mintának megfelelően!
5. Gyűjtse ki a sok.txt állományba azokat az IP-címeket, melyek legalább 18 nullát tartalmaznak! A fájlban minden sor elején szerepeljen az eredeti állományból a cím sorszáma! Ezt kövesse egy szóközzel elválasztva a cím az ip.txt állományban szereplő alakjával!
6. Kérjen be a felhasználótól egy sorszámot! Az állományban a megadott sorszámon található IP-címet rövidítse a csoportokon belüli bevezető nullák elhagyásával! Az állományban található alakot és a rövidített változatot írja a képernyőre egymás alá!
7. Az előző feladatban használt IP-címet rövidítse tovább az egymást követő nullás csoportok rövidítésére vonatkozó szabályoknak megfelelően! Az eredményt jelenítse meg a képernyőn! Amennyiben nem rövidíthető, írja ki: „Nem rövidíthető tovább.”! Minta a szöveges kimenetek kialakításához: 2. feladat: Az állományban 372 darab adatsor van. 3. feladat: A legalacsonyabb tárolt IP-cím: 2001:0db8:0000:00b9:0800:0f00:e02a:71ac 4. feladat: Dokumentációs cím: 106 darab Globális egyedi cím: 120 darab Helyi egyedi cím: 146 darab 6. feladat: Kérek egy sorszámot: 10 fcef:b0e7:7d20:0000:0000:0000:3b95:0565 fcef:b0e7:7d20:0:0:0:3b95:565 7. feladat: fcef:b0e7:7d20::3b95:565
Klemand
242.oldal
2016
2014 május
Ipv6
package emeltinfo2014maj; import java.io.*; import java.util.*; /** * IPv6 * * @author Klemand */ public class EmeltInfo2014maj { 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 ip.txt fájlból \n"); System.setProperty("file.encoding", "UTF-8"); //karakterkódolás beállítása BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("ip.txt")); String elsoSor; String sor; String[] daraboltSor; //Ügyeljünk rá, hogy a darabolt szöveg String tömb! 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(":"); ipv6.add(new IPv6Tipus(elsoSor, daraboltSor)); while ((sor = behozatal.readLine()) != null) { daraboltSor = sor.split(":"); ipv6.add(new IPv6Tipus(sor, daraboltSor)); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése "); System.out.println("Az utolsó 5 sor: \n"); for (int i = ipv6.size() - 4; i <= ipv6.size(); i++) { System.out.print(i + ". IPv6 cím: "); for (int k = 1; k <= 7; k++) { System.out.print(ipv6.get(i - 1).ipCim[k - 1] + ":"); } System.out.println(ipv6.get(i - 1).ipCim[7]); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Az IPv6 címek számának meghatározása \n"); System.out.println("Az állományban " + ipv6.size() + " darab adatsor van. \n");
Klemand
243.oldal
2016
2014 május
Ipv6
//3. feladat System.out.println("A 3. feladat megoldása"); System.out.println("A legalacsonyabb tárolt IP-cím: \n"); System.out.println("1. Szövegművelettel az eredeti IP cím alapján:"); int i; int min = 1; for (i = 2; i <= ipv6.size(); i++) { if (ipv6.get(i - 1).ip.compareTo(ipv6.get(min - 1).ip) < 0) { min = i; } } System.out.println(ipv6.get(min - 1).ip); System.out.println(""); System.out.println("2. Ciklussal a darabolt IP cím alapján:"); min = 1; for (i = 2; i <= ipv6.size(); i++) { if (alacsonyabb(ipv6.get(min - 1).ipCim, ipv6.get(i - 1).ipCim)) { min = i; } } for (int k = 1; k <= 8; k++) { System.out.print(ipv6.get(min - 1).ipCim[k - 1] + " "); } System.out.println("\n"); //4. feladat System.out.println("A 4. feladat megoldása"); for (i = 1; i <= ipv6.size(); i++) { ipv6.get(i - 1).dok = dokE(ipv6.get(i - 1).ipCim); ipv6.get(i - 1).glob = globE(ipv6.get(i - 1).ipCim); ipv6.get(i - 1).helyi = helyiE(ipv6.get(i - 1).ipCim); } int dokDb = 0; int globDb = 0; int helyiDb = 0; for (i = 1; i <= ipv6.size(); i++) { if (ipv6.get(i - 1).dok) { dokDb++; } if (ipv6.get(i - 1).glob) { globDb++; } if (ipv6.get(i - 1).helyi) { helyiDb++; } } System.out.println("Dokumentációs cím: " + dokDb + " darab"); System.out.println("Globális cím: " + globDb + " darab"); System.out.println("Helyi egyedi cím: " + helyiDb + " darab"); System.out.println("");
Klemand
244.oldal
2016
2014 május
Ipv6
//5. feladat System.out.println("Az 5. feladat megoldása"); System.out.println("A legalább 18 db nullát tartalmazó IP-címek kiírása a sok.txt fájlba \n"); for (i = 1; i <= ipv6.size(); i++) { ipv6.get(i - 1).nullSzam = nullSzamMeghat(ipv6.get(i - 1).ipCim); } PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("sok.txt")); int sokDb = 0; for (i = 1; i <= ipv6.size(); i++) { if (ipv6.get(i - 1).nullSzam >= 18) { sokDb++; kivitel.print(i + " "); for (int k = 1; k <= 7; k++) { kivitel.print(ipv6.get(i - 1).ipCim[k - 1] + ":"); } kivitel.println(ipv6.get(i - 1).ipCim[7]); } } kivitel.close(); System.out.println("A fájlkiírás befejeződött."); System.out.println("(" + sokDb + " db IP-cím tartalmaz legalább 18 db nullát.) \n"); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("Egy bekért sorszámú IP-cím rövidítése \n"); System.out.println("Kérek egy IP-sorszámot!"); int ipSorszam = sorSzamBeolvasas(1, ipv6.size()); System.out.println(""); for (int k = 1; k <= 7; k++) { System.out.print(ipv6.get(ipSorszam - 1).ipCim[k - 1] + ":"); } System.out.println(ipv6.get(ipSorszam - 1).ipCim[7]); System.out.println(""); String[] ipRovid = ipRovidites(ipv6.get(ipSorszam - 1).ipCim); for (int k = 1; k <= 7; k++) { System.out.print(ipRovid[k - 1] + ":"); } System.out.println(ipRovid[7]); System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("Az előbbi IP-cím további rövidítése \n"); System.out.println("1. for ciklussal: "); String ipUltraRovid1 = ipUltraRovidites1(ipRovid); System.out.println(ipUltraRovid1); System.out.println(""); System.out.println("2. while ciklussal: "); String ipUltraRovid2 = ipUltraRovidites2(ipRovid); System.out.println(ipUltraRovid2); System.out.println(""); } //************************************************************
Klemand
245.oldal
2016
2014 május
Ipv6
//A tömblista konstruktora static ArrayList ipv6 = new ArrayList<>(); public static class IPv6Tipus { private private private private private private
String ip; String[] ipCim = new String[8]; boolean dok; boolean glob; boolean helyi; int nullSzam;
public IPv6Tipus(String sor, String[] daraboltSor) //konstruktor { ip = sor; ipCim = daraboltSor; dok = false;//Kezdőértékek, futás közben állítjuk be a valódi értéküket glob = false; helyi = false; nullSzam = 0; } } static int m, n; public static boolean alacsonyabb(String[] cimMin, String[] cimAkt) { m = 1; boolean kesz = false; while ((!kesz) && (m <= 8)) { n = 1; while (n <= 4 && cimMin[m - 1].charAt(n - 1) == cimAkt[m - 1].charAt(n - 1)) { n++; } if (n <= 4) { kesz = true; } else { m++; } } return (cimAkt[m - 1].charAt(n - 1) < cimMin[m - 1].charAt(n - 1)); } public static boolean dokE(String[] cim) { String seged = ""; seged += cim[0]; seged += ":"; seged += cim[1]; return (seged.equals("2001:0db8")); } public static boolean globE(String[] cim) { String seged = ""; seged += cim[0]; seged += ":"; seged += cim[1].substring(0, 2); return (seged.equals("2001:0e")); }
Klemand
246.oldal
2016
2014 május
Ipv6
public static boolean helyiE(String[] cim) { String seged = ""; seged += cim[0].substring(0, 2); return (seged.equals("fc") || seged.equals("fd")); } public static int nullSzamMeghat(String[] cim) { int nullDb = 0; for (m = 1; m <= 8; m++) { for (n = 1; n <= 4; n++) { if (cim[m - 1].charAt(n - 1) == '0') { nullDb++; } } } return nullDb; } public static int sorSzamBeolvasas(int minSzam, int maxSzam) { int szam = 0; do { try { System.out.println(minSzam + " <= szám <= " + maxSzam); Scanner bevitel; bevitel = new Scanner(System.in); szam = bevitel.nextInt(); } catch (Exception e) { System.out.println("Számot kérek!"); } } while ((szam < 1) || (szam > maxSzam)); return szam; } public static String[] ipRovidites(String[] cim) { for (m = 1; m <= 8; m++) { if (cim[m - 1].substring(0, 3).equals("000")) { cim[m - 1] = cim[m - 1].substring(3, 4); } else if (cim[m - 1].substring(0, 2).equals("00")) { cim[m - 1] = cim[m - 1].substring(2, 4); } else if (cim[m - 1].substring(0, 1).equals("0")) { cim[m - 1] = cim[m - 1].substring(1, 4); } } return cim; }
Klemand
247.oldal
2016
2014 május
Ipv6
public static String ipUltraRovidites1(String[] cim) { String ipUR = ""; int nullaKezd = 0; int nullaVeg; int nullaHossz = 0; int maxNullaKezd = 0; int maxNullaVeg = 0; int maxNullaHossz = 0; for (m = 1; m <= 8; m++) { if (cim[m - 1].equals("0")) { if (nullaKezd == 0) { nullaKezd = m; } nullaHossz++; nullaVeg = m; if (nullaHossz > maxNullaHossz) { maxNullaKezd = nullaKezd; maxNullaVeg = nullaVeg; maxNullaHossz = nullaHossz; } } else { nullaKezd = 0; nullaHossz = 0; } } if (maxNullaHossz < 2) { ipUR = "Nem rövidíthető tovább."; } else { for (m = 1; m < maxNullaKezd; m++) { ipUR += cim[m - 1]; ipUR += ":"; } ipUR += ":"; for (m = maxNullaVeg + 1; m <= 8; m++) { ipUR += cim[m - 1]; if (m < 8) { ipUR += ":"; } } } return ipUR; }
Klemand
248.oldal
2016
2014 május
Ipv6
public static String ipUltraRovidites2(String[] cim) { String ipUR = ""; int nullaKezd; int nullaVeg; int nullaHossz; int maxNullaKezd = 0; int maxNullaVeg = 0; int maxNullaHossz = 0; m = 1; while (m <= 8) { if (cim[m - 1].equals("0")) { nullaKezd = m; nullaVeg = m; m++; while (m <= 8 && cim[m - 1].equals("0")) { nullaVeg++; m++; } nullaHossz = nullaVeg - nullaKezd + 1; if (nullaHossz > maxNullaHossz) { maxNullaKezd = nullaKezd; maxNullaVeg = nullaVeg; maxNullaHossz = nullaHossz; } } else { m++; } } if (maxNullaHossz < 2) { ipUR = "Nem rövidíthető tovább."; } else { for (m = 1; m < maxNullaKezd; m++) { ipUR += cim[m - 1]; ipUR += ":"; } ipUR += ":"; for (m = maxNullaVeg + 1; m <= 8; m++) { ipUR += cim[m - 1]; if (m < 8) { ipUR += ":"; } } } return ipUR; } }
Klemand
249.oldal
2016
2014 május
Ipv6
run: Az 1. feladat megoldása Az adatok beolvasása az ip.txt fájlból A beolvasás ellenőrzése Az utolsó 5 sor: 371. 372. 373. 374. 375.
IPv6 IPv6 IPv6 IPv6 IPv6
cím: cím: cím: cím: cím:
2001:0db8:00e9:e570:bd00:08a0:9fc0:c04d fc05:00c0:c08c:0f00:0d00:fcc0:0093:7008 fc11:0000:0000:0f00:0000:0000:0000:2222 fc11:0000:0000:0000:00a0:0000:0000:2222 fc11:0000:0000:0a00:00a0:0000:0000:2222
A 2. feladat megoldása Az IPv6 címek számának meghatározása Az állományban 375 darab adatsor van. A 3. feladat megoldása A legalacsonyabb tárolt IP-cím: 1. Szövegművelettel az eredeti IP cím alapján: 2001:0db8:0000:00b9:0800:0f00:e02a:71ac 2. Ciklussal a darabolt IP cím alapján: 2001 0db8 0000 00b9 0800 0f00 e02a 71ac A 4. feladat megoldása Dokumentációs cím: 106 darab Globális cím: 120 darab Helyi egyedi cím: 149 darab Az 5. feladat megoldása A legalább 18 db nullát tartalmazó IP-címek kiírása a sok.txt fájlba A fájlkiírás befejeződött. (74 db IP-cím tartalmaz legalább 18 db nullát.) A 6. feladat megoldása Egy bekért sorszámú IP-cím rövidítése Kérek egy IP-sorszámot! 1 <= szám <= 375 373 fc11:0000:0000:0f00:0000:0000:0000:2222 fc11:0:0:f00:0:0:0:2222 A 7. feladat megoldása Az előbbi IP-cím további rövidítése 1. for ciklussal: fc11:0:0:f00::2222 2. while ciklussal: fc11:0:0:f00::2222 BUILD SUCCESSFUL (total time: 3 seconds)
Klemand
250.oldal
2016
2014 május
Ipv6
sok.txt: 1 fc00:0610:0f00:89f0:00f0:0ed2:0000:000d 6 2001:0db8:0030:1a90:0200:9000:c000:0088 8 fc0c:2200:00d0:0db0:0900:0a05:0000:00ef 11 fc10:f000:0700:08d0:c000:0000:0000:a08b 16 2001:0e04:0600:4e00:903d:a001:0000:000b 26 fc0d:3505:9000:0fc0:06c0:0030:0000:0033 30 fc0e:00e0:0002:0000:009d:0400:1000:0097 35 2001:0e10:0290:00b0:010d:20b0:0008:00bf 40 2001:0e00:0800:2000:0000:3009:0000:730e 47 2001:0e00:b010:0f00:5500:10df:e00b:0009 50 fc00:0e00:00b1:100c:7420:0007:0064:0008 54 2001:0e00:0000:0040:03a7:0000:0009:800b 61 2001:0e9d:e000:0000:0400:0400:00fc:0c0c 62 2001:0e00:0000:ab00:0000:141e:3f0f:0c05 64 fd00:0000:c000:b008:1600:0c0f:d600:0b04 68 2001:0db8:0b20:1000:0880:000d:0000:a06a 69 fc00:8c00:00b0:0030:00c0:0e00:02c9:f00a 82 2001:0e00:0500:50d0:0830:9005:9400:d00f 89 2001:0e90:0050:0400:00d0:0d00:0150:8f62 92 fc20:b10e:0000:0200:0107:4f00:100c:0005 94 2001:0db8:0066:004f:0000:0c60:000a:0f06 96 2001:0e00:dd00:9400:0004:0000:00e8:0823 97 fc00:05c0:3480:00a0:0000:0000:0bc0:e01e 105 2001:0e40:d000:090f:8000:2f00:000b:009b 106 fc10:0504:20be:0060:0000:000e:500e:00ba 110 fd20:0000:1001:0006:300b:0401:0c88:0003 123 2001:0e00:100b:0400:0b00:64ab:0200:0073 128 2001:0e00:006e:0638:000f:0000:400c:0f0e 140 2001:0db8:a700:2a00:0000:0dda:0200:0003 146 2001:0e40:000d:0600:3000:00cd:00f5:000c 153 2001:0db8:01f0:09bf:00f0:0000:0100:000e 166 2001:0db8:0070:0610:0001:a000:000b:8003 167 2001:0e0e:b007:7003:00d0:003e:0009:0a0d 175 fc20:0008:0ed0:00c0:00e6:0a03:000d:000f 181 2001:0e84:8700:0100:0000:0000:d0e0:002d 188 fca4:0004:b900:0000:1000:b5f0:0007:00c3 189 fc0c:0091:0000:0000:0002:90d0:000e:063c 195 fc10:0430:000d:d430:000e:0000:8000:09ca
Klemand
199 201 207 209 214 220 228 230 240 253 255 256 257 266 269 271 279 281 287 289 296 308 312 327 328 333 341 347 356 361 364 365 366 373 374 375
251.oldal
fcd0:0f00:a400:0507:f007:0000:0b00:e00b 2001:0ed5:2030:3050:60f0:0000:0070:0207 2001:0e00:9105:dd00:000a:00a0:c0d0:00a7 2001:0e00:0090:0ce0:0000:00c0:7300:c0ed 2001:0e0a:2000:000d:00ad:4940:b400:0008 2001:0e0e:f002:fc00:03a0:0010:0000:0078 2001:0e50:0070:0002:5410:a000:6000:104e 2001:0e00:0202:0b00:0100:0f01:0407:0005 fc30:7000:7000:0000:e030:000a:0809:00ba fc5f:20f0:600a:0000:000e:0000:c000:f079 2001:0db8:e000:0000:3000:5b60:000e:0006 fd3f:0008:000b:6008:0000:0000:0d5d:a003 fc00:0000:0700:900b:0c00:0005:17f0:403b 2001:0ece:d049:0100:690a:a000:0000:0002 fc60:000e:9001:8010:0000:7100:f740:0008 2001:0e0a:05c0:0570:0000:2000:0000:4305 fc30:0000:0000:0000:0ca0:1b09:01d0:8cdd 2001:0e00:00e0:0e00:000c:8000:3066:1a0a 2001:0e60:c000:0010:000f:5b20:0000:038b 2001:0e00:0c80:000f:0000:00dd:0047:2b0c fc00:e0dc:d000:5704:0d0c:00f0:0000:0055 2001:0db8:0005:0007:0100:b900:002f:001a fc90:7040:d000:0000:2000:0500:008c:0554 2001:0ed0:0004:0060:f02b:0006:0000:5001 2001:0e70:900c:0700:0500:0800:b0d0:400e 2001:0ed0:0090:0000:010e:0098:0080:6d0c 2001:0e80:0050:00a0:c000:00a0:5030:0c02 fc00:67f4:c06f:000f:0900:0060:0000:0006 2001:0e59:000b:0000:00ab:0000:06d0:925c fc60:000b:4003:3000:8a0c:0005:c000:00cf 2001:0e04:0800:c300:8100:0000:5040:de09 fd00:7000:0002:0550:0171:0000:c000:9c9b 2001:0db8:0001:0f50:0100:0c00:0170:0041 fc11:0000:0000:0f00:0000:0000:0000:2222 fc11:0000:0000:0000:00a0:0000:0000:2222 fc11:0000:0000:0a00:00a0:0000:0000:2222
2016
2014 május idegennyelvű
Céllövészet
2014 május idegennyelvű: Céllövészet A Sor Lövészegylet rendszeresen rendez versenyt az alábbi, igen egyszerű szabályokkal:
•
A lövések leadására korlátozott idő áll rendelkezésre, ezért a versenyzők eltérő számú lövést adhatnak le.
• • •
A lövéseket sorszámozott korongokra kell leadni. Találatnak számít, ha a korongot bárhol érinti a lövedék. A lövésekhez pontértéket rendelnek: amíg nem hibázik valaki, minden találata 20 pontot ér; de rontás esetén minden hiba 1 ponttal csökkenti – egészen nulláig – a későbbi lövésekkel szerezhető pontszámot. A lövés pontértéke nem lehet negatív.
•
Az végez előrébb a versenyben, aki több pontot szerez. A holtversenyt nem döntik el, mindegyik versenyző ugyanolyan helyezéssel végez, tehát mindenki helyezése megegyezik a nála több pontot szerzett versenyzők számánál eggyel nagyobb számmal. A verseny.txt állományban versenyzőnként feljegyeztük a lövések eredményét. A fájl első sorában a versenyzők száma (2≤v≤100) szerepel. A következő v sorban legfeljebb l (4≤l≤40) karakter található, egy versenyző lövéseinek sorozata. Egy lövést egy karakter ír le, a – karakter a sikertelen, a + karakter a sikeres lövést rögzíti. Például: 5 +--+ -+-+++-+--+-++---++-A példában a 4. sor azt mutatja, hogy a 3-as rajtszámú lövőnek a 2. és az 5. lövése talált, tehát a versenyző csak két korongot talált el. Mivel elsőre hibázott, az első találat 19 pontot ér, aztán a két újabb hiba miatt már csak 17 pontot jelentett a második találat. Tehát összesen 36 pontot szerzett. Az 5. sorban szereplő, 4-es rajtszámú versenyző ugyancsak 2 találattal 40 pontot szerzett. Készítsen programot, amely a verseny.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse loves néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie, feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.) 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:), az 5. feladat esetén pedig a részfeladat betűjelét is! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.
Klemand
252.oldal
2016
2014 május idegennyelvű
Céllövészet
1. Olvassa be a verseny.txt állományban található adatokat, és annak felhasználásával oldja meg a következő feladatokat!
2. Írja a képernyőre azon versenyzők rajtszámát, akiknek egymás után két (vagy több) lövése is talált! A versenyzők rajtszámát egy-egy szóközzel válassza el egymástól!
3. Írja a képernyőre, hogy melyik versenyző adta le a legtöbb lövést! Ha többen is ugyanannyi lövést adtak le, elegendő egyikük rajtszámát kiírni.
4. Készítsen függvényt loertek néven az alábbi algoritmus alapján! A függvény egy + és – jeleket tartalmazó, legfeljebb 40 hosszúságú karaktersorozathoz hozzárendeli a feladatban képviselt pontértékét. A függvény elkészítésekor az algoritmusban megadott változóneveket használja! Az elkészített függvényt a további feladatok megoldásánál használja fel! A függvény bemenő paramétere az egy játékos lövéseit leíró karaktersorozat, értéke pedig az ahhoz rendelt pontszám. Függvény loertek(sor:karaktersorozat):egész szám aktpont:=20 ertek:=0 Ciklus i:=1-től hossz(sor)-ig Ha aktpont>0 és sor[i]=”-” akkor aktpont:=aktpont-1 Különben ertek:=ertek+aktpont Elágazás vége Ciklus vége loertek:=ertek Függvény vége
5. Kérje be a felhasználótól egy versenyző sorszámát, majd írja ki, hogy: a. hányadik lövései találtak (az értékeket egymástól szóközzel válassza el!) b. hány korongot talált el összesen c. milyen hosszú volt a leghosszabb hibátlan lövéssorozata d. hány pontot ért el! Az eredmény megjelenítése előtt írja képernyőre a részfeladat betűjelét is!
6. Állítsa elő a sorrend.txt állományban a verseny végeredményét! A fájlban soronként tüntesse fel a versenyző helyezését, rajtszámát és pontszámát! A helyezés megadásakor a holtversenyt a bevezetőben megfogalmazott szabályok alapján az alábbi mintához hasonlóan kezelje! Az adatokat egy-egy tabulátorral (ASCII kódja a 9-es) válassza el egymástól! A lista legyen pontszám szerint csökkenő! Például a feladat elején olvasható példa bemenet esetén a fájl tartalma: 1 2 3 3 5
Klemand
2 4 1 5 3
73 40 38 38 36
253.oldal
2016
2014 május idegennyelvű
Céllövészet
Példa a szöveges kimenetek kialakításához: 2. feladat: Az egymast kovetoen tobbszor talalo versenyzok: 2 4 5 3. feladat: A legtobb lovest leado versenyzo rajtszama: 2 5. feladat: Adjon meg egy rajtszamot! 2 5a. feladat: Celt ero lovesek: 2 4 5 6 5b. feladat: Az eltalalt korongok szama: 4 5c. feladat: A leghosszabb hibatlan sorozat hossza: 3 5d. feladat: A versenyzo pontszama: 73
Klemand
254.oldal
2016
2014 május idegennyelvű
Céllövészet
package emeltinfo2014mid; import java.io.*; import java.util.*; /** * Céllövészet * * @author Klemand */ public class EmeltInfo2014mid { 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 verseny.txt fájlból \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("verseny.txt")); String elsoSor; 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); } int v = Integer.parseInt(elsoSor); String sor; int i; for (i = 1; i <= v; i++) { sor = behozatal.readLine().trim(); verseny.add(new VersenyTipus(i, sor)); } behozatal.close(); //Ellenőrzés System.out.println("A beolvasás ellenőrzése \n"); for (i = 1; i <= verseny.size(); i++) { System.out.println(i + ". versenyző lőeredménye: " + verseny.get(i - 1).eredmeny); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása \n"); System.out.print("A következő versenyzőknek talált egymás után több lövése is:"); for (i = 1; i <= v; i++) { if (verseny.get(i - 1).eredmeny.contains("++")) { System.out.print(" " + i); } } System.out.println("\n");
Klemand
255.oldal
2016
2014 május idegennyelvű
Céllövészet
//3. feladat System.out.println("A 3. feladat megoldása \n"); System.out.print("A legtöbb lövést leadó versenyző rajtszáma: "); int max = 1; for (i = 2; i <= v; i++) { if (verseny.get(i - 1).eredmeny.length() > verseny.get(max - 1).eredmeny.length()) { max = i; } } System.out.println(max + "\n"); //4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.println("A loertek függvény elkészítése \n"); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.println("Egy versenyző sorszámának bekérése és eredményének kiértékelése \n"); int rajtszam = egeszBevitel(1, v); String sorozat = verseny.get(rajtszam - 1).eredmeny; int hossz = sorozat.length(); System.out.println("Az 5. a. feladat megoldása \n"); System.out.print("A következő lövései találtak:"); for (i = 1; i <= hossz; i++) { if (sorozat.substring(i - 1, i).equals("+")) { System.out.print(" " + i); } } System.out.println("\n"); System.out.println("Az 5. b. feladat megoldása \n"); System.out.print("Összesen: "); int db = 0; for (i = 1; i <= hossz; i++) { if (sorozat.substring(i - 1, i).equals("+")) { db++; } } System.out.println(db + " korongot talált el. \n"); System.out.println("Az 5. c. feladat megoldása \n"); System.out.print("A leghosszabb hibátlan lövéssorozatának hossza for ciklussal: "); int leghosszabb = 0; int akthossz = 0; for (i = 1; i <= hossz; i++) { if (sorozat.substring(i - 1, i).equals("+")) { akthossz++; if (akthossz > leghosszabb) { leghosszabb = akthossz; } } else { akthossz = 0; } } System.out.println(leghosszabb + " \n");
Klemand
256.oldal
2016
2014 május idegennyelvű
Céllövészet
System.out.print("A leghosszabb hibátlan lövéssorozatának hossza while ciklussal: "); leghosszabb = 0; i = 1; while (i <= hossz) { while (i <= hossz && sorozat.substring(i - 1, i).equals("-")) { i++; } if (i <= hossz) { akthossz = 1; i++; while (i <= hossz && sorozat.substring(i - 1, i).equals("+")) { akthossz++; i++; } if (akthossz > leghosszabb) { leghosszabb = akthossz; } } } System.out.println(leghosszabb + " \n"); System.out.println("Az 5. d. feladat megoldása \n"); System.out.print("A lőeredménye: "); int pontszam = loertek(sorozat); System.out.println(pontszam + " pont \n"); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println("A verseny végeredményének kiíratása a sorrend.txt fájlba"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("sorrend.txt")); //A verseny tömblista maximumkiválasztásos rendezése pontszám szerint VersenyTipus asztal; int j; for (i = 1; i <= v; i++) { max = i; for (j = i + 1; j <= v; j++) { if (verseny.get(j - 1).pontszam > verseny.get(max - 1).pontszam) { max = j; } } asztal = verseny.get(i - 1); verseny.set(i - 1, verseny.get(max - 1)); verseny.set(max - 1, asztal); } //A helyezés meghatározása rekurzív függvénnyel for (i = 1; i <= v; i++) { verseny.get(i - 1).helyezes = helyezesMeghat(i); kivitel.println(verseny.get(i - 1).helyezes + "\t" + verseny.get(i - 1).rajtszam + "\t" + verseny.get(i - 1).pontszam); } kivitel.close(); System.out.println("A sorrend.txt fájl kiíratása befejeződött. \n"); }
Klemand
257.oldal
2016
2014 május idegennyelvű
Céllövészet
//************************************************************ //A tömblista konstruktora static ArrayList verseny = new ArrayList<>(); public static class VersenyTipus { private private private private
final int rajtszam; final String eredmeny; final int pontszam; int helyezes;
public VersenyTipus(int rajtszamBe, String sor) //konstruktor { rajtszam = rajtszamBe; eredmeny = sor; pontszam = loertek(eredmeny); helyezes = 0; //kezdőérték, amit alkalmas pillanatban (a rendezés után) állítunk be } } public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } public static int loertek(String sor) { int aktpont = 20; int ertek = 0; for (int i = 1; i <= sor.length(); i++) { if (aktpont > 0 && sor.substring(i - 1, i).equals("-")) { aktpont -= 1; } else { ertek += aktpont; } } int loertek = ertek; return loertek; } public static int helyezesMeghat(int s) { if (s == 1) { return s; } else if (verseny.get(s - 1).pontszam < verseny.get(s - 2).pontszam) { return s; } else { return helyezesMeghat(s - 1); } } }
Klemand
258.oldal
2016
2014 május idegennyelvű
Céllövészet
run: Az 1. feladat megoldása Az adatok beolvasása a verseny.txt fájlból A beolvasás ellenőrzése 1. versenyző lőeredménye: +--+ 2. versenyző lőeredménye: --+++3. versenyző lőeredménye: -+--+-4. versenyző lőeredménye: ++--5. versenyző lőeredménye: -++-6. versenyző lőeredménye: --+-+++----------------+-+ 7. versenyző lőeredménye: +-++--+ 8. versenyző lőeredménye: -+-+++-+ 9. versenyző lőeredménye: -+--+-+ 10. versenyző lőeredménye: --+++11. versenyző lőeredménye: -+--+12. versenyző lőeredménye: ++-13. versenyző lőeredménye: -+-14. versenyző lőeredménye: -++----------------+-+ 15. versenyző lőeredménye: +-++-+--+ 16. versenyző lőeredménye: -+-+++17. versenyző lőeredménye: -+--+-+18. versenyző lőeredménye: ++---+ 19. versenyző lőeredménye: -++-+20. versenyző lőeredménye: --+-+++---+-------------+-+ 21. versenyző lőeredménye: +-++--+ A 2. feladat megoldása A következő versenyzőknek talált egymás után több lövése is: 2 4 5 6 7 8 10 12 14 15 16 18 19 20 21 A 3. feladat megoldása A legtöbb lövést leadó versenyző rajtszáma: 20 A 4. feladat megoldása A loertek függvény elkészítése Az 5. feladat megoldása Egy versenyző sorszámának bekérése és eredményének kiértékelése Kérem a számot! (1 <= beírt szám <= 21) :20 Az 5. a. feladat megoldása A következő lövései találtak: 3 5 6 7 11 25 27 Az 5. b. feladat megoldása Összesen: 7 korongot talált el. Az 5. c. feladat megoldása A leghosszabb hibátlan lövéssorozatának hossza for ciklussal: 3 A leghosszabb hibátlan lövéssorozatának hossza while ciklussal: 3 Az 5. d. feladat megoldása A lőeredménye: 84 pont
Klemand
259.oldal
2016
2014 május idegennyelvű
Céllövészet
A 6. feladat megoldása A verseny végeredményének kiíratása a sorrend.txt fájlba A sorrend.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 5 seconds)
sorrend.txt: 1 2 3 4 4 6 7 8 9 10 10 12 12 14 15 15 17 17 19 19 21
15 8 20 7 21 16 6 18 19 10 2 17 9 14 4 12 1 5 3 11 13
Klemand
92 90 84 75 75 73 70 57 56 54 54 52 52 43 40 40 38 38 36 36 19
260.oldal
2016
2014 október
Nézőtér
2014 október: Nézőtér A Fregoli Színházban a jegyeladásokat elektronikusan rögzítik. A színházban 15 sor, és soronként 20 szék van. A sorokat 1-től 15-ig számozzák, a sorokon belül pedig a székeket 1-től 20-ig. Egy előadásra a pillanatnyilag eladott jegyek eloszlását a foglaltsag.txt szöveges állomány tartalmazza, melyben „x” jelzi a foglalt és „o” a szabad helyeket. Például: ooxxxoxoxoxoxxxooxxx xxxxxxxxxxxxxxxxxxxx oxxxxxoooxxxxxxxxxxo … Az első sor 1-2. széke például még szabad, míg a 2. sorba az összes jegyet eladták. A jegyek ára nem egyforma, összege a helytől függően ötféle lehet. Azt, hogy az adott szék az öt közül melyik árkategóriába tartozik, a kategoria.txt fájl tartalmazza az alábbi formában: Például: 33222111111111122233 43322221111112222334 44433322222222333444 … A példa szerint az 1. sor 2. széke a 3. kategóriába, a 2. sor 1. széke a 4. kategóriába esik. Készítsen programot nezoter néven a következő feladatok megoldására! A program futása során a képernyőre való kiíráskor, illetve az adatok billentyűzetről való beolvasásakor utaljon a feladat sorszámára (például: 3. feladat), és a kiírandó, illetve bekérendő tartalomra! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be és tárolja el a foglaltsag.txt és a kategoria.txt fájl adatait! 2. Kérje be a felhasználótól egy sor, és azon belül egy szék számát, majd írassa ki a képernyőre, hogy az adott hely még szabad-e vagy már foglalt!
3. Határozza meg, hogy hány jegyet adtak el eddig, és ez a nézőtér befogadóképességének hány százaléka! A százalékértéket kerekítse egészre, és az eredményt a következő formában írassa ki a képernyőre: Például: Az előadásra eddig 156 jegyet adtak el, ez a nézőtér 42%-a.
4. Határozza meg, hogy melyik árkategóriában adták el a legtöbb jegyet! Az eredményt írassa ki a képernyőre az alábbi formában: Például: A legtöbb jegyet a(z) 3. árkategóriában értékesítették.
5. A jegyek árát kategóriánként a következő táblázat tartalmazza: árkategória ár (Ft)
Klemand
1
2
3
4
5
5000
4000
3000
2000
1500
261.oldal
2016
2014 október
Nézőtér
Mennyi lenne a színház bevétele a pillanatnyilag eladott jegyek alapján? Írassa ki az eredményt a képernyőre!
6. Mivel az emberek általában nem egyedül mennek színházba, ha egy üres hely mellett nincs egy másik üres hely is, akkor azt nehezebben lehet értékesíteni. Határozza meg, és írassa ki a képernyőre, hogy hány ilyen „egyedülálló” üres hely van a nézőtéren!
7. A színház elektronikus eladási rendszere az érdeklődőknek az üres helyek esetén a hely árkategóriáját jeleníti meg, míg a foglalt helyeket csak egy „x” karakterrel jelzi. Készítse el ennek megfelelően a fenti adatokat tartalmazó szabad.txt fájlt! Például: 33xxx1x1x1x1xxx22xxx xxxxxxxxxxxxxxxxxxxx 4xxxxx222xxxxxxxxxx4 …
Klemand
262.oldal
2016
2014 október
Nézőtér
package emeltinfo2014okt; import java.io.*; import java.util.*; /** * Nézőtér * * @author Klemand */ public class EmeltInfo2014okt { public static void main(String[] args) throws IOException { //1. feladat System.out.println("A 1. feladat megoldása"); System.out.println("A foglaltsag.txt és a kategoria.txt fájlok beolvasása "); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("foglaltsag.txt")); int i, j; String elsoSor; String[] daraboltSor; String[][] foglaltsag = new String[15][20]; 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 <= 20; j++) { foglaltsag[0][j - 1] = daraboltSor[j - 1]; } for (i = 2; i <= 15; i++) { daraboltSor = behozatal.readLine().split(""); for (j = 1; j <= 20; j++) { foglaltsag[i - 1][j - 1] = daraboltSor[j - 1]; } } behozatal.close(); System.out.println(""); int[][] kategoria = new int[15][20]; behozatal = new BufferedReader(new FileReader("kategoria.txt")); int n, m; 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 <= 20; j++) { kategoria[0][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } for (i = 2; i <= 15; i++) { daraboltSor = behozatal.readLine().split(""); for (j = 1; j <= 20; j++) { kategoria[i - 1][j - 1] = Integer.parseInt(daraboltSor[j - 1]); } } behozatal.close();
Klemand
263.oldal
2016
2014 október
Nézőtér
System.out.println(""); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); System.out.println("Foglaltság: "); for (i = 1; i <= 15; i++) { for (j = 1; j <= 20; j++) { System.out.print(foglaltsag[i - 1][j - 1]); } System.out.println(""); } System.out.println(""); System.out.println("Kategória: "); for (i = 1; i <= 15; i++) { for (j = 1; j <= 20; j++) { System.out.print(kategoria[i - 1][j - 1]); } System.out.println(""); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.println("Egy bekért hely foglaltságának eldöntése \n "); System.out.print("Kérem a sor számát! "); int sor = egeszBevitel(1, 15); System.out.print("Kérem a szék számát! "); int szek = egeszBevitel(1, 20); System.out.println(""); if (foglaltsag[sor - 1][szek - 1].equals("x")) { System.out.println("A hely foglalt."); } else { System.out.println("A hely szabad."); } System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása \n"); int NEZOTER = 300; int eladottDb = 0; for (i = 1; i <= 15; i++) { for (j = 1; j <= 20; j++) { if (foglaltsag[i - 1][j - 1].equals("x")) { eladottDb++; } } } System.out.println("Az előadásra eddig " + eladottDb + " darab jegyet adtak el, ez a nézőtér "); double szazalek = (double) eladottDb / NEZOTER; szazalek *= 100; System.out.printf("%.0f", szazalek); System.out.println("%-a. \n"); //4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.println("Melyik árkategóriából adták el a legtöbb jegyet? \n"); int[] eladottKatDb = new int[5];
Klemand
264.oldal
2016
2014 október
Nézőtér
for (i = 1; i <= 5; i++) { eladottKatDb[i - 1] = 0; } for (i = 1; i <= 15; i++) { for (j = 1; j <= 20; j++) { if (foglaltsag[i - 1][j - 1].equals("x")) { eladottKatDb[kategoria[i - 1][j - 1] - 1]++; } } } int max = 1; for (i = 2; i <= 5; i++) { if (eladottKatDb[i - 1] > eladottKatDb[max - 1]) { max = i; } } System.out.println("A legtöbb jegyet a(z) " + max + ". árkategóriában értékesítették. \n"); //Ellenőrzés: System.out.println("Az eladott jegyek száma árkategóriák szerint: \n"); eladottDb = 0; for (i = 1; i <= 5; i++) { System.out.println(i + ". kategória: " + eladottKatDb[i - 1] + " db"); eladottDb += eladottKatDb[i - 1]; } System.out.println("--------------------"); System.out.println("Összesen: " + eladottDb + " db"); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása \n"); System.out.print("Az aktuális összbevétel: "); int bevetel = 0; for (i = 1; i <= 15; i++) { for (j = 1; j <= 20; j++) { if (foglaltsag[i - 1][j - 1].equals("x")) { switch (kategoria[i - 1][j - 1]) { case 1: bevetel += 5000; break; case 2: bevetel += 4000; break; case 3: bevetel += 3000; break; case 4: bevetel += 2000; break; default: bevetel += 1500; } } } } System.out.println(bevetel + " Ft. \n");
Klemand
265.oldal
2016
2014 október
Nézőtér
//6. feladat System.out.println("A 6. feladat megoldása \n"); System.out.print("Az egyedülálló üres helyek száma: "); boolean egyedulallo; int egyedulalloDb = 0; for (i = 1; i <= 15; i++) { for (j = 1; j <= 20; j++) { egyedulallo = false; if (j == 1 && foglaltsag[i - 1][j - 1].equals("o") && foglaltsag[i - 1][j].equals("x")) { egyedulallo = true; } if (j > 1 && j < 20 && foglaltsag[i - 1][j - 2].equals("x") && foglaltsag[i - 1][j - 1].equals("o") && foglaltsag[i - 1][j].equals("x")) { egyedulallo = true; } if (j == 20 && foglaltsag[i - 1][j - 1].equals("o") && foglaltsag[i - 1][j - 2].equals("x")) { egyedulallo = true; } if (egyedulallo) { egyedulalloDb++; } } } System.out.println(egyedulalloDb + " db."); System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása \n"); System.out.println("A szabad helyek árkategóriájának kiíratása a szabad.txt fajlba \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("szabad.txt")); for (i = 1; i <= 15; i++) { for (j = 1; j <= 20; j++) { if (foglaltsag[i - 1][j - 1].equals("x")) { kivitel.print("x"); } if (foglaltsag[i - 1][j - 1].equals("o")) { kivitel.print(kategoria[i - 1][j - 1]); } } kivitel.println(); } kivitel.close(); System.out.println("A szabad.txt fájl kiíratása befejeződött. \n"); } //************************************************************
Klemand
266.oldal
2016
2014 október
Nézőtér
public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } }
Klemand
267.oldal
2016
2014 október
Nézőtér
run: A 1. feladat megoldása A foglaltsag.txt és a kategoria.txt fájlok beolvasása
A beolvasás ellenőrzése: Foglaltság: xxoxoxoxoxoxooxxxxox xxxxxxxxxxxxxxxxooox xoxoxoxoxoxoxoxoxoxo ooxoxoxoxoxoxoxooxox xxxxxxxxxxxxxxxxoooo xxxxxxxxxxxxxxxxxxxx oooooooooooooooooooo xxxxxxxxxxooxxxxxxxx xooxxxxxxxxxoxxxxxoo xxxxxxoxxxxxxxoxxooo xooooooooxoooooooxxx ooooooxoxoxoxoxoxoxo oxxxxxxxxxxxxxxxxxoo xxxxxxxxxxxxooooooox oxxxxxxxxxxxxxoooooo Kategória: 22222111111111122222 22222111111111122222 22222111111111122222 22222111111111122222 33322211111111222333 33333222211222233333 33333222211222223333 33333222222222233333 44444333322233344444 44444333333333344444 55444443333333444455 55555544444444555555 55555544444444555555 55555544444444555555 55555555555555555555 A 2. feladat megoldása Egy bekért hely foglaltságának eldöntése Kérem a sor számát! Kérem a számot! (1 <= beírt szám <= 15) :14 Kérem a szék számát! Kérem a számot! (1 <= beírt szám <= 20) :14 A hely szabad. A 3. feladat megoldása Az előadásra eddig 187 darab jegyet adtak el, ez a nézőtér 62%-a. A 4. feladat megoldása Melyik árkategóriából adták el a legtöbb jegyet? A legtöbb jegyet a(z) 2. árkategóriában értékesítették.
Klemand
268.oldal
2016
2014 október
Nézőtér
Ellenőrzés: Az eladott jegyek száma árkategóriák szerint: 1. kategória: 35 db 2. kategória: 47 db 3. kategória: 38 db 4. kategória: 32 db 5. kategória: 35 db -------------------Összesen: 187 db Az 5. feladat megoldása Az aktuális összbevétel: 593500 Ft. A 6. feladat megoldása Az egyedülálló üres helyek száma: 35 db. A 7. feladat megoldása A szabad helyek árkategóriájának kiíratása a szabad.txt fájlba A szabad.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 7 seconds)
szabad.txt: xx2x2x1x1x1x11xxxx2x xxxxxxxxxxxxxxxx222x x2x2x1x1x1x1x1x2x2x2 22x2x1x1x1x1x1x22x2x xxxxxxxxxxxxxxxx2333 xxxxxxxxxxxxxxxxxxxx 33333222211222223333 xxxxxxxxxx22xxxxxxxx x44xxxxxxxxx3xxxxx44 xxxxxx3xxxxxxx3xx444 x54444433x3333444xxx 555555x4x4x4x4x5x5x5 5xxxxxxxxxxxxxxxxx55 xxxxxxxxxxxx4455555x 5xxxxxxxxxxxxx555555
Klemand
269.oldal
2016
2015 május
Expedíció
2015 május: Expedíció Valamikor a távközlés hőskorában egy ritka farkasfaj tudományos megfigyelésére expedíciót szerveztek a sarkkörön túlra. A magukkal vitt rádió csak napi egy adásra volt alkalmas, arra is csak 90 időegységig, időegységenként egy karaktert továbbítva. Az expedíció rádiósának üzeneteit több rádióamatőr is igyekezett lejegyezni. A feladatban a rádióamatőrök által lejegyzett üzeneteket kell feldolgoznia. A veetel.txt fájl tartalmazza a rádióamatőrök által feljegyzett üzeneteket. Minden sorpár egy-egy feljegyzést tartalmaz.
•
A sorpár első sorában két szám áll, az első a nap sorszáma, a második pedig – az előzőtől egy szóközzel elválasztva – a rádióamatőré.
•
A sorpár második sorában a feljegyzéshez tartozó pontosan 90 karakter áll. A vett karakter az angol ábécé kisbetűje, számjegy, / jel vagy szóköz lehet. Ha az adott időegységben nem volt egyértelműen azonosítható a vett jel, akkor # karakter szerepel. Ha a tényleges üzenet befejeződött, az adó a fennmaradó időegységekben $ jelet küld.
•
A napok sorszáma 1 és 11, a rádióamatőrök sorszáma 1 és 20 közötti egész szám lehet.
•
Ha a megfigyelés során láttak farkasokat, akkor az üzenet két, / jellel elválasztott egész számmal, a látott kifejlett és kölyök egyedek számával kezdődik, amelyet szóköz követ. Más esetben nem szám az első karakter.
Például: 2 15 1/0 #gy#domb##l fig###tu# f#i#s ho#a##dalyoz$$...
A fenti sorpár első sora mutatja, hogy az üzenet a 2. napon érkezett és a 15-ös rádióamatőr rögzítette. 1 felnőtt és 0 kölyök farkast figyeltek meg. Mivel a második sorban a 45. karakter $ jel, és előtte nem # jel szerepel, ezért az üzenet biztosan 44 karakter hosszú. Készítsen programot, amely a veetel.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse radio néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie, feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.) 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:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be és tárolja a veetel.txt fájl tartalmát! 2. Írja a képernyőre, hogy melyik rádióamatőr rögzítette az állományban szereplő első és melyik az utolsó üzenetet!
3. Adja meg az összes olyan feljegyzés napját és a rádióamatőr sorszámát, amelynek szövegében a „farkas” karaktersorozat szerepel!
4. Készítsen statisztikát, amely megadja, hogy melyik napon hány rádióamatőr készített feljegyzést. Azok a napok 0 értékkel szerepeljenek, amikor nem született feljegyzés! Az eredmény a képernyőn jelenjen meg a napok sorszáma szerint növekvően! A megjelenítést a feladat végén látható minta szerint alakítsa ki!
Klemand
270.oldal
2016
2015 május
Expedíció
5. A rögzített üzenetek alapján kísérelje meg helyreállítani az expedíció által küldött üzenetet! Készítse el az adaas.txt fájlt, amely napok szerinti sorrendben tartalmazza a küldött üzeneteket! Ha egy időpontban senkinél nem volt vétel, akkor azon a ponton a # jel szerepeljen! (Feltételezheti, hogy az azonos üzenethez tartozó feljegyzések között nincs ellentmondás.) Az alábbi minta az első napról tartalmaz három üzenetet: 1 13 #abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$#### 1 19 ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$ 1 9 ta#o#t#v##tu#k nag# #zel#20 fok#hi##g fa#k#snyo#okat la#tun# #e#y#pat##na#$$###$$#$#$$$$$$$
A helyreállított üzenet: tabort vertunk nagy szel#20 fok hideg farkasnyomokat lattunk e#y pataknal$$$$$$$$$$$$$$$$$
6. Készítsen függvényt szame néven az alábbi algoritmus alapján! A függvény egy karaktersorozathoz hozzárendeli az igaz vagy a hamis értéket. A függvény elkészítésekor az algoritmusban megadott változóneveket használja! Az elkészített függvényt a következő feladat megoldásánál felhasználhatja. Függvény szame(szo:karaktersorozat): logikai valasz:=igaz Ciklus i:=1-től hossz(szo)-ig ha szo[i]<'0' vagy szo[i]>'9' akkor valasz:=hamis Ciklus vége szame:=valasz Függvény vége
7. Olvassa be egy nap és egy rádióamatőr sorszámát, majd írja a képernyőre a megfigyelt egyedek számát (a kifejlett és kölyök egyedek számának összegét)! Ha nem volt ilyen feljegyzés, a „Nincs ilyen feljegyzés” szöveget jelenítse meg! Ha nem volt megfigyelt egyed vagy számuk nem állapítható meg, a „Nincs információ” szöveget jelenítse meg! Amennyiben egy számot közvetlenül # jel követ, akkor a számot tekintse nem megállapíthatónak! Minta a szöveges kimenetek kialakításához: 2. feladat: Az első üzenet rögzítője: 13 Az utolsó üzenet rögzítője: 18 3. feladat: 10. nap 16. rádióamatőr … 4. feladat: 1. nap: 13 rádióamatőr 2. nap: 14 rádióamatőr … 7. feladat: Adja meg a nap sorszámát! 2 Adja meg a rádióamatőr sorszámát! 15 A megfigyelt egyedek száma: 1
Klemand
271.oldal
2016
2015 május
Expedíció
package emeltinfo2015maj; import java.io.*; import java.util.*; /** * Expedíció * * @author Klemand */ public class EmeltInfo2015maj { public static void main(String[] args) throws IOException { //1. feladat System.out.println("A 1. feladat megoldása"); System.out.println("A veetel.txt fájl beolvasása "); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("veetel.txt")); String elsoSor, sor; String[] daraboltSor; 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.trim().split(" "); sor = behozatal.readLine(); veetel.add(new VeetelTipus(daraboltSor, sor)); while ((sor = behozatal.readLine()) != null) { daraboltSor = sor.trim().split(" "); sor = behozatal.readLine(); veetel.add(new VeetelTipus(daraboltSor, sor)); } behozatal.close(); System.out.println(""); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); System.out.println("Az első 10 vétel: \n"); int i; for (i = 1; i <= 10; i++) { System.out.printf("Sorszám: %3d", i); System.out.printf(", nap: %2d", veetel.get(i - 1).nap); System.out.printf(", rádiós: %2d", veetel.get(i - 1).radios); System.out.println(", üzenet: " + veetel.get(i - 1).uzenet); } System.out.println(""); System.out.println("Az utolsó 10 vétel: \n"); for (i = veetel.size() - 9; i <= veetel.size(); i++) { System.out.printf("Sorszám: %3d", i); System.out.printf(", nap: %2d", veetel.get(i - 1).nap); System.out.printf(", rádiós: %2d", veetel.get(i - 1).radios); System.out.println(", üzenet: " + veetel.get(i - 1).uzenet); } System.out.println("");
Klemand
272.oldal
2016
2015 május
Expedíció
//2. feladat System.out.println("A 2. feladat megoldása \n"); System.out.println("Az első üzenetet rögzítő rádiós: " + veetel.get(0).radios); System.out.println("Az utolsó üzenetet rögzítő rádiós: " + veetel.get(veetel.size() - 1).radios); System.out.println(""); //3. feladat System.out.println("A 3. feladat megoldása \n"); //Előfeldolgozás: a veetel tömblista napok, azon belül rádiósok szerinti rendezése System.out.println("Előfeldolgozás: a veetel tömblista napok, azon belül rádiósok szerinti rendezése \n"); //Először a rádiósok szerint rendezünk pl. a minimumkiválasztásos rendezéssel int j, min; VeetelTipus asztal; for (i = 1; i <= veetel.size(); i++) { min = i; for (j = i + 1; j <= veetel.size(); j++) { if (veetel.get(j - 1).radios < veetel.get(min - 1).radios) { 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 = veetel.get(i - 1); veetel.set(i - 1, veetel.get(min - 1)); veetel.set(min - 1, asztal); } /*A napok szerinti rendezés már nem lehet a minimumkiválasztásos rendezés, mert az elrontaná a rádiósok szerinti rendezésünket, ilyenkor pl. a beillesztéses rendezést alkalmazhatjuk.*/ for (i = 2; i <= veetel.size(); i++) { for (j = i - 1; j >= 1; j--) { if (veetel.get(j - 1).nap > veetel.get(j).nap) { asztal = veetel.get(j - 1); veetel.set(j - 1, veetel.get(j)); veetel.set(j, asztal); } } } //Ellenőrzés System.out.println("A rendezés ellenőrzése: \n"); for (i = 1; i <= veetel.size(); i++) { System.out.printf("%2d", veetel.get(i - 1).nap); System.out.printf(". nap, %2d", veetel.get(i - 1).radios); System.out.println(". rádiós: " + veetel.get(i - 1).uzenet); } System.out.println(""); System.out.println("Mely napokon, mely rádiósok feljegyzésében szerepel a farkas szó? \n"); for (i = 1; i <= veetel.size(); i++) { if (veetel.get(i - 1).uzenet.contains("farkas")) { System.out.println(veetel.get(i - 1).nap + ". nap " + veetel.get(i - 1).radios + ". rádióamatőr"); }
Klemand
273.oldal
2016
2015 május
Expedíció
} System.out.println(""); //4. feladat System.out.println("A 4. feladat megoldása \n"); System.out.println("Naponta hány amatőr készített feljegyzést? \n"); int NAPDB = 11; int[] napokDb = new int[NAPDB]; int osszDb = 0; int n; for (n = 1; n <= NAPDB; n++) { napokDb[n - 1] = 0; } for (i = 1; i <= veetel.size(); i++) { napokDb[veetel.get(i - 1).nap - 1]++; osszDb++; } for (n = 1; n <= NAPDB; n++) { System.out.println(n + ". nap: " + napokDb[n - 1] + " rádióamatőr"); } System.out.println(""); //Ellenőrzés System.out.println("Ellenőrzés:"); System.out.println("Ez összesen: " + osszDb + " feljegyzés."); System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása "); System.out.println("A helyreállított üzenetek kiíratása az adaas.txt fájlba \n"); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("adaas.txt")); String helyreallitott; int k; int KDB = 90; int napKezd = 1; for (n = 1; n <= NAPDB; n++) {//n a napokat számolja helyreallitott = ""; for (k = 1; k <= KDB; k++) {//k a karaktereket számolja az üzenetben i = napKezd; //i a feljegyzéseket számolja while (i <= napKezd + napokDb[n - 1] - 1 && veetel.get(i - 1).uzenet.substring(k - 1, k).equals("#")) { i++; } if (i <= napKezd + napokDb[n - 1] - 1) { helyreallitott += veetel.get(i - 1).uzenet.substring(k - 1, k); } else { helyreallitott += "#"; } } napKezd += napokDb[n - 1]; kivitel.println(helyreallitott); } kivitel.close(); System.out.println("Az adaas.txt fájl kiíratása befejeződött. \n");
Klemand
274.oldal
2016
2015 május
Expedíció
//6. feladat System.out.println("A 6. feladat megoldása "); System.out.println("A szamE függvény elkészítése \n"); //7. feladat System.out.println("A 7. feladat megoldása "); System.out.println("Egy bekért napon egy bekért rádiós által megfigyelt farkasok száma \n"); System.out.print("Kérem a nap sorszámát: "); int napBe = egeszBevitel(1, 11); System.out.print("Kérem a rádiós sorszámát: "); int radiosBe = egeszBevitel(1, 20); System.out.println(""); //1. megoldás: while ciklussal System.out.println("1. megoldás: while ciklussal: "); i = 1; String aktUzenet; int kezdet = 1; int kifejlett; int kolyok; while (i <= veetel.size() && !(veetel.get(i - 1).nap == napBe && veetel.get(i - 1).radios == radiosBe)) { i++; } if (i > veetel.size()) { System.out.println("Nincs ilyen feljegyzés"); } else { aktUzenet = veetel.get(i - 1).uzenet; k = kezdet; while (k < KDB && szamE(aktUzenet.substring(0, k))) { k++; } if (k > 1 && k < KDB && aktUzenet.substring(k - 1, k).equals("/")) { kifejlett = Integer.parseInt(aktUzenet.substring(0, k - 1)); kezdet = k; k++; while (kezdet < KDB && szamE(aktUzenet.substring(kezdet, k))) { k++; } if (k > kezdet && k < KDB && aktUzenet.substring(k - 1, k).equals(" ")) { kolyok = Integer.parseInt(aktUzenet.substring(kezdet, k - 1)); System.out.println("A megfigyelt egyedek száma: " + (kifejlett + kolyok)); } else { System.out.println("Nincs információ"); } } else { System.out.println("Nincs információ"); } } System.out.println("");
Klemand
275.oldal
2016
2015 május
Expedíció
//2. megoldás: index függvénnyel és darabolással System.out.println("2. megoldás: index függvénnyel és darabolással: "); i = 1; int index1; int index2; while (i <= veetel.size() && !(veetel.get(i - 1).nap == napBe && veetel.get(i - 1).radios == radiosBe)) { i++; } if (i > veetel.size()) { System.out.println("Nincs ilyen feljegyzés"); } else { aktUzenet = veetel.get(i - 1).uzenet; index1 = aktUzenet.indexOf(" "); index2 = aktUzenet.indexOf("/"); String[] daraboltSzam = aktUzenet.substring(0, index1).split("/"); if (szamE(daraboltSzam[0]) && szamE(daraboltSzam[1])) { System.out.println("A megfigyelt egyedek száma: " + (Integer.parseInt(daraboltSzam[0]) + Integer.parseInt(daraboltSzam[1]))); } else { System.out.println("Nincs információ"); } } System.out.println(""); } //************************************************************ static ArrayList veetel = new ArrayList<>(); public static class VeetelTipus { private final int nap; private final int radios; private final String uzenet; public VeetelTipus(String[] daraboltSor, String sor) //konstruktor { nap = Integer.parseInt(daraboltSor[0]); radios = Integer.parseInt(daraboltSor[1]); uzenet = sor; } } public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; }
Klemand
276.oldal
2016
2015 május
Expedíció
public static boolean szamE(String szo) { boolean valasz = true; int i; for (i = 1; i <= szo.length(); i++) { if (szo.charAt(i - 1) < '0' || szo.charAt(i - 1) > '9') { valasz = false; } } return valasz; } }
Klemand
277.oldal
2016
2015 május
Expedíció
run: A 1. feladat megoldása A veetel.txt fájl beolvasása A beolvasás ellenőrzése: Az első 10 vétel: Sorszám: 1, nap: 1, rádiós: 13, üzenet: #abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$#### Sorszám: 2, nap: 1, rádiós: 19, üzenet: ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$ Sorszám: 3, nap: 6, rádiós: 19, üzenet: 0/# a #a#akon##uli ##mb## ##l#kok jatszo#####del ####l$$$#$$$$$#$#$#$#$$###$##$$##$$$$#$$$ Sorszám: 4, nap: 5, rádiós: 17, üzenet: a pat#k#a###ar##sok #em#j#l#nt##ztek nyomok volt#k$$$$#$$$#$$$#$#$##$$$$###$####$$#$$$$#$# Sorszám: 5, nap: 10, rádiós: 16, üzenet: e#zakrol gy#ko#i farkasuvol#es#ha#lat###k#$$$$$$#$$$$$$#$##$#$#$$$##$#$##$##$$$$$$##$#$##$ Sorszám: 6, nap: 7, rádiós: 5, üzenet: 1/3#sot#te##s ##ott##u#tek#fe# a# er#o#szelen$$##$$#$$#$$$#$$$####$$##$$#$$#$###$$$$$$$$#$ Sorszám: 7, nap: 6, rádiós: 15, üzenet: 0/# a pata#on tu#i#d#mbo# #olyko# jats##tt###### koru###$$$$$##$$#$$$$#$$#$###$$$#$$$####$ Sorszám: 8, nap: 11, rádiós: 3, üzenet: #3/0#s#te##d#s#elot##egy ege## fal####al#dt ve### a ##tak#ment#####$#$$$$##$$$$###$$$###$# Sorszám: 9, nap: 8, rádiós: 12, üzenet: verofe#yes n##fe#y#enyhu## i#o$$##$$##$$$#$#$$$$$$$$$##$##$##$$$#$$$$$#$#$#$$$$$###$$$$#$# Sorszám: 10, nap: 1, rádiós: 9, üzenet: ta#o#t#v##tu#k nag# #zel#20 fok#hi##g fa#k#snyo#okat la#tun##e#y#pat##na#$$###$$#$#$$$$$$$ Az utolsó 10 vétel: Sorszám: 144, nap: 4, rádiós: 1, üzenet: hoviha##m##t##n#m v####megfi#y#les rendberak#uk a####sze#el####$#$$$##$$$##$$$$#$$$$#$$$$$ Sorszám: 145, nap: 4, rádiós: 3, üzenet: hovih#r m#att nem vo## m##figy#l#s r#ndberak#uk a##el#ze##l##t$$$$$#$$$$$#$#$#$$$#$#$$$##$ Sorszám: 146, nap: 9, rádiós: 14, üzenet: 1/0 csak a#n#steny jel#nt ### del ko###$##$##$$#$$$$$$#$$$$$##$$#$$#$#$#$$##$$$$$$$$#$###$ Sorszám: 147, nap: 9, rádiós: 2, üzenet: 1/##csa##a#no####y je#ent#m#g d#l#ko#ul#$$#$$###$#$#####$##$#$###$$#$#$$##$$$$$$$#$$$$###$ Sorszám: 148, nap: 10, rádiós: 19, üzenet: ##z###o##g###ori fa#ka#uvolte# #allats#i#$$$#$#$#$##$$$#$#$##$#$$$$$#$#$$$$$$$$#$$$$$$#$$$ Sorszám: 149, nap: 1, rádiós: 8, üzenet: #ab### v#rt#n# nag# s#el#20##ok h###g#f##kas#yomoka# l#tt### e## p##akn##$#$#$##$$$$$$#$$$ Sorszám: 150, nap: 1, rádiós: 4, üzenet: ta#or##ve#t#nk #agy#szel 20 #ok#h#deg f#r#a#ny#m#k#t l#tt#nk##gy#pataknal$$#$$##$$#$$$$#$$ Sorszám: 151, nap: 11, rádiós: 8, üzenet: 13/# s##et#### ###tt eg# egesz fal#a hal#d# v#####a patak mente#$######$####$#$$$###$$$$#$ Sorszám: 152, nap: 3, rádiós: 19, üzenet: 2#3 ####z#szeliran##miatt #s## ##vid idei##$#$$$#$$#$#$$#$##$$$$$$#$$$$#$##$$#$$$$$$$$$#$$ Sorszám: 153, nap: 4, rádiós: 18, üzenet: hovi##r##i### ##m vo#t#meg##gy#les rend##r#ktuk#a fe#s####lest$#$$###$$$$#$$#$###$###$$#$$ A 2. feladat megoldása Az első üzenetet rögzítő rádiós: 13 Az utolsó üzenetet rögzítő rádiós: 18 A 3. feladat megoldása Előfeldolgozás: a veetel tömblista napok, azon belül rádiósok szerinti rendezése A rendezés ellenőrzése: 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 2. 2. 2. 2. 2. 2. 2. 2.
nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap,
Klemand
1. 2. 3. 4. 6. 8. 9. 12. 13. 14. 17. 18. 19. 1. 2. 3. 4. 6. 8. 9. 10. 12.
rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós:
t#bor# ve##u#k###gy sz#l#2# fok#hideg #a##asnyom#k## latt##k#egy#p#tak#al$$#$$###$$$$$$$$$ #abort #ertu#k#nagy##ze# 20 ### hideg f###a#n##mokat ###tunk#eg# pat#k#al$$$##$$##$##$$$$$ ####rt #ert##k#nagy#sze#### fo# h##eg####kasnyomoka##l#t#u###e####a#a##al$$$$$$$#$##$#$#$$ ta#or##ve#t#nk #agy#szel 20 #ok#h#deg f#r#a#ny#m#k#t l#tt#nk##gy#pataknal$$#$$##$$#$$$$#$$ ta#o#t#ve##unk na#y#szel 20 #ok #id#g #a#k##nyomoka##la#tu## e#y ##ta#nal$$$#$##$#$$$$$$$# #ab### v#rt#n# nag# s#el#20##ok h###g#f##kas#yomoka# l#tt### e## p##akn##$#$#$##$$$$$$#$$$ ta#o#t#v##tu#k nag# #zel#20 fok#hi##g fa#k#snyo#okat la#tun##e#y#pat##na#$$###$$#$#$$$$$$$ tabort ve#tunk #a## #z#l 2# ##k###d#g #ar##s#y#mo#a###a###nk egy p##a#n##$#$$#$$#$$#$$$$$$ #abor# #e#tun###agy#szel#2# #o##h#d#g ##rkasn#o#oka# #a#tunk e####a#akn##$#$#$##$$$$$$#### t#b#rt v#rtunk nagy sz#l 20 fok hid## far#a##yom##a# #a#tun# e#y#pataknal##$$#$$$$$$#$#$$$ tabort#vert#nk nagy #zel 20 f#k hi#e# far#a#n##mo#at #attu#k#### pa#aknal###$$#$$$$$$$$$## ##b##t #er#unk nagy#s#e###0 fo# ##d## ##rk#s###m#ka# ##ttu## e#y#pata#nal#$$#$#$#$$$##$$$$ ta###t##ertunk ##gy #zel#####ok hide##f#r##sn#omo#at ##ttu## e#y patak#al$#$$$$$###$$$$$$$ #/0 #gy dom##ol fi####tuk####s# ###aka#a#yoz##$$#$##$$##$$##$$#$$$$$##$$#$$$#$$$$$$$$$#### ### egy #o#brol #igy#l#uk #r#s###o#akad#ly##$$$$$$$$$$$##$$$####$$##$$$$$#$$$$##$$#$#$#$## 1/0 ##y domb##l##igyeltuk###i###ho akada#yoz$$#$##$$$$$#$$$$##$######$$$$$##$#$#$$$$$#$$#$ #/0 #g##dom##ol figyel### ##i#s ho#a#adal#oz$$#$#$#$$$####$##$#$$$$$#$$##$#$#$$$$$$#$#$#$# 1#0 egy #om#rol fig##ltuk f#iss ho akadaly#z#$$$$###$$####$#$###$$##$#$$$$$$$$$#$$$$$$$##$ 1/# #gy do#br#l figye#t## f#### ho a#ad#l#oz#$$$#$#$#$#$##$#$$$$#$$$$#$###$$$$$$$$$##$$$$$ 1## egy #o##rol#figyelt#k #ris###o #k##a#y###$$#$#$#$$$$###$$$$#$#$$$$$$#$$$$$#$##$$$$$$$# 1/# egy do#bro# #igy#l#uk friss h#####d#l###$$$$##$$$$$$$$####$###$#$$$#$$##$#$$$$###$$$$# #/# e#y#do##r#l figyel####fr#ss ## ak#dal#oz$####$$$$$##$$$#$###$$$$$##$$$$#$$$##$#$###$$#
278.oldal
2016
2015 május 2. 2. 2. 2. 2. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 4. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 5. 6. 6. 6. 6. 6. 6. 6. 6. 6. 6. 6. 6. 6. 6. 6. 7. 7.
nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap,
Klemand
13. 14. 15. 16. 19. 2. 3. 4. 6. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 19. 1. 2. 3. 4. 5. 6. 7. 9. 12. 13. 14. 15. 16. 18. 19. 2. 3. 4. 5. 6. 8. 9. 11. 12. 13. 14. 15. 16. 17. 1. 3. 4. 6. 7. 8. 9. 10. 11. 12. 13. 15. 17. 18. 19. 2. 3.
Expedíció rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós:
### egy#d#m#ro# fig##l#uk #r####h# a#adal##z#$#$$$$#$$$#$$#$$$#$$#$$$$##$#$#$$##$$$$$$$$#$ #/# egy#dom##ol #igye#t#k ###s# ho ak##a#yoz$$#$$$$#$$$##$#$#$$$#####$##$$$$$$$#$##$#$$#$$ 1/0 #gy#domb##l fig###tu# f#i#s ho#a##dalyoz$$$$##$$##$#$$#$$#$#$$##$$#$$#$$$$#$$$$#$$$$#$ 1#0#e#y #om#rol #i#y###uk f#i###ho#a##dalyoz$####$##$##$$##$##$$$$#$$$#$#$$#$$$#$$$$$##$$$ #/# eg# dom#rol#figy#lt#k friss#h##a##d###oz###$#$$#$#$$$$$$$#$$$$$$#$$$#$$#$$$##$#$$#$#$# #/##ross##sze##r##y ###tt #sak#ro#i# i#eig##$$#$##$$$$#$$$$$#$$###$#$$#$$$$##$$#$$###$#$#$ 2/3 ro#s# sz####a#y miatt ##ak##ovi# id#i###$##$#$####$$##$$#$#$$$####$$$$$#$#$#$$$$$#$$$# 2/3##ossz s#e#i#any miat# ###k rovid #d##g$$#$$$#$#$$$$$$$$$$$$$$$##$#$##$$##$$$###$###$$# ##3#rossz s#eli##ny#m#a#t#cs###r#v#d #d####$$$#$$$$#$#$#$########$#$$#$###$$$#$#$#$#####$$ 2## ##ssz #z##ir#n# miatt #s## r##i# ##ei#$$#$$$###$$$$$$$$$$$$$##$$$$$$#$#$$$$$$$##$$$$$$ 2/# #o#sz sze#i#a## #ia## csak ro#id###e##$$$###$$$$#$$#$#$$$$$##$####$$##$#$$$#$#$#$##$$# 2/3####sz#sze##ra#y mi##t csa##ro#id#ideig#$$$$#$$$$$#$$$$#$#$$$$$#$$#$$$$##$$$#$##$$$$$#$ 2/3###ssz#sz#l#rany miatt c#ak#ro##d i###g$####$$#$##$$##$$#$$$$##$#$$$$$$$$$#$$##$#$#$##$ 2/###os#z##zel#ra#y #iatt #s#k#r##id#id##g$$#$$$$#$#$$$$$$$$###$$$$$$$$#####$$#$$#$$$##$$$ 2/3##o#s###zelira#y m##tt c#a###o##d #d#ig#$$$#$$$$##$$##$$##$$$$$$####$####$$#$$###$$$$$$ 2/# ##ssz szelira#####at# #### r#vi##i###g##$$#$$$#$#$$$$$$##$#$$#$$$$#$$##$$$$###$##$$$$$ 2/# #o#sz s#el#ra#y#m#at# csak rovid #deig#$$$$$#$$$$$$$#$$$#######$#$$$$#$$$#$#$$#$$$$##$ ##3#ro#sz s##lir#ny #iatt #sak#rov#d#id##g$#$$$$$$$#$#####$$#$$##$$$$$$$#$##$#$$$#$$$$#$$# 2## ro#sz szel##any#miatt##sa##r#vid#ide#g#####$#$$#$$$$$$$$####$#$$$$$$$##$$$#$$$$$$#$$$$ 2#3 ####z#szeliran##miatt #s## ##vid idei##$#$$$#$$#$#$$#$##$$$$$$#$$$$#$##$$#$$$$$$$$$#$$ hoviha##m##t##n#m v####megfi#y#les rendberak#uk a####sze#el####$#$$$##$$$##$$$$#$$$$#$$$$$ h#v##ar #iatt ne# #olt #egfigyel## r#n#beraktuk a#felszerelest$$$$$$$$$##$$$####$$$##$$#$# hovih#r m#att nem vo## m##figy#l#s r#ndberak#uk a##el#ze##l##t$$$$$#$$$$$#$#$#$$$#$#$$$##$ #oviha# mia#t ne##vo## meg##g#e#es##endberakt###a fe###erele#t$$$$##$#$#$$$##$#$#$$$$$##$$ #o#iha# m###t ##m#v#l####gf##ye#es ren#be#aktuk a fels##rel#st$#$#$$##$#$#$###$#$$##$$$#$# ho###ar #iat##nem #olt#me###g##les#rendb#ra#t#k a fe#sz#r##est##$$$#$#$#$$$$#$###$$$$#$#$$ #o#i### #ia#t#nem v#l# me#f#gyeles re##berak#uk # f#l##e###est$$$#$#$$$$$$#$$$$##$$$$##$$$ h#v#har m#a#t#nem ##lt meg#igye#es #endbera##uk a###lsze####st##$#$$#$$##$$$#$#$$#$#$$$#$$ #ovihar m#a#t nem ###t megf##y#les#re#d#eraktuk ##fels###elest$$$#$#$$$##$$$##$##$$#$#$$## ##v##ar#mi##t n###v#lt meg##gyel#s ren#b####tuk # f#l#zer##est$$$#$$###$$$#$$$#$$###$$$$$$ hovihar #iatt #em #o#t megf#gyeles ##nd##r#ktuk#a fels#ere#e#t$#$##$##$$#$###$##$##$$$$#$$ #ovihar##iatt nem v##t m#g#igy#l## #e#dbe#akt## a f#lsze#e#est$###$$#$$###$$$$$$#$$$$$$$$# hoviha# ##at# n#m#v#l# me#fi#ye#es r#n#beraktu# # fel#zere#est$$$$#$$$$$$$$$$$$$$$#$#$$$$$ hovi##r##i### ##m vo#t#meg##gy#les rend##r#ktuk#a fe#s####lest$#$$###$$$$#$$#$###$###$$#$$ ##vih## miatt #em##o## m#gfi#####s rendb#r###uk a fel##erelest$#$$$$$$$$$$$$###$$###$##$$$ # #ata##al#fark#sok#nem ##lentkeztek#n#o#ok vo#tak$$$$$$#$##$$##$$$#$$##$$$$####$$$#$$###$ a######na# f#rka### n## #elen#kez#ek ##om#k vo#tak#$$#$$$$$$$$$$$#$$#$#$#$$$#$$$$#$##$$$$# a#p#tak##l far#asok##e# ####ntke###k n#om####olt##$$$$$#$#$$####$#$$#$###$$#$#$$$$$$$#$$#$ a #at#k####fa#ka#o###em je#entke#te# n#om#k ##l####$$$$$$$$$#$$$#$$$$$#$$#$#$$$$#$##$##$## # ##tak#a# #arka##k n#m #elen####tek##yomo##v#l#ak$$#$$$$$$$#$$######$##$#$##$$$$#$$$$#$#$ a pataknal fark#s## n#m #el#n#ke#t###ny#mok #o###k$#$$$$$$$$$$$$##$$###$$$###$$$$#$###$$$$ # pata##al#f#rk#sok nem j##ent#ezt## nyomok v##tak$$#$$$$##$$$$$$$$#$##$##$##$$$##$$$$$##$ a###t#k##l#farka##k #e# #e#e#tkeztek ny##o##v#lt#k$#$$##$##$$$#$$#$$#$######$####$$$###$$$ a #ataknal ##rkasok#n####el#nt##z##k#ny#m## vo##ak$#$#$$$$##$$$#$#$$$#$$$$$$$$$$$$#$#$#$## a p#ta#na# fa#kas#k #e# ##le#tk##t###nyo##k volt#k$$#$#$#$$$$#$#$$$$#$$$$###$$$$$##$$#$#$$ # #at#knal#f#rka#ok##e# jele##kez#ek ny#m## vo#t#k$$#$$$$#$##$$$$##$$$$$$$$$$$$$$$###$$$#$ a##a##kn#l farkasok #em jel##tkez#e#####mok ##ltak$##$$###$$$$$#$$$#$$#$$$$$$$$$$##$##$$## a ##t#kn#l#f#rkaso# #em je#e###e#tek#nyomok ##ltak$$$$##$$##$$#$$$$#$$#$$#$$$#$$$$$$#$#$## a pat#k#a###ar##sok #em#j#l#nt##ztek nyomok volt#k$$$$#$$$#$$$#$#$##$$$$###$####$$#$$$$#$# ####a pa#a#on tul# do#bon#ko###ok #atszotta# del #o###$$#$#$$###$$$##$$$$$$#$##$$$###$$##$ 0/##a#pa#ako# ###i ###b## kol#kok##at##o#tak de# ##ru##$$$$#$$$$$$$$$$$$$$$#$#$$#$#$$##$$$ 0/# a patakon tuli d#mb###koly#ok ja#s#ot##k#del #orul$$$$$$$$$$#$#$$#$#$##$#$$$$$$$$#$$$# 0#3 a#patakon#tul##d#m#o###ol##ok###t##ottak #el #or#l$$$#$##$$$$###$$#$$$$$$####$$#$$$### 0/3 # ##t#kon tu#i#do#b#n ko#yk####a#s##ttak###l k##ul$$$$#$#$$$####$$$$#$$$$$$#$$#$$$$$#$ 0#3 a pat#k###tu#i #ombo##k#lykok j#tszotta##d## korul$##$$##$#$#$#$#$#$$$$$$$$#$#$$$$#$$# 0/3 a pat#kon tu#i#d#m#o##kolykok##atszot#ak del##orul#$##$#$$###$$$$$$$#$$$#$#$###$$#$##$ 0/3#a pa#a#on##uli#dombon#kol##o# ##tszot### #e######l$$$$$$#$$$$$##$#$#$$$#$$$#$$$$$$$$$$ ##3 # #atakon##uli ##mb#n k#l###k ja#sz#t#ak d#l ko#ul$$$#$#$$$#$#$##$$$$$$$#$#$$####$$#$$ 0#3#a##atakon #ul# ##m#o###o#yk#k ja####tt#k##e####r#l##$$##$$#$#$#$$$$#$$$$$$#$#$##$$$$#$ 0#3#a pa#akon #u## d#mbo# koly#ok#j#t##o###k del###ru###$$$$$$##$#$$####$$$##$$#$$#$##$$$# 0/# a pata#on tu#i#d#mbo# #olyko# jats##tt###### koru###$$$$$##$$#$$$$#$$#$###$$$#$$$####$ 0/3 # pat#ko# #ul##d#mbon#kolyk## j##s#o##a##de# #oru#$$$######$$$$$#$$$##$$$$$#$$$$##$$$$ 0/##a #ata##n tu#i ##m##n koly##k jatszo#ta# del kor##$$$$$#$$$$$$#$$$$$$$$#$$$$#$#$###### 0/# a #a#akon##uli ##mb## ##l#kok jatszo#####del ####l$$$#$$$$$#$#$#$#$$###$##$$##$$$$#$$$ 1/3 s#tete#es ####t t#nt#k f## a# #r#o s##le#$$$#$$$$$$$$$####$$###$$$#$##$$####$$####$$$# 1/# ##te##d#s##l### t#nt#k##el### e### szelen#$$$#$$#$$#$#$$$###$$#$$##$$$$#$$$$$$#$$$##$$
279.oldal
2016
2015 május 7. 7. 7. 7. 7. 7. 7. 7. 7. 7. 8. 8. 8. 8. 8. 8. 8. 8. 8. 8. 8. 8. 8. 8. 9. 9. 9. 9. 9. 9. 9. 9. 9. 9. 9. 9. 9. 10. 10. 10. 10. 10. 10. 10. 10. 10. 10. 10. 10. 10. 10. 11. 11. 11. 11. 11. 11. 11. 11. 11. 11. 11. 11. 11. 11.
nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap, nap,
Klemand
4. 5. 6. 7. 9. 11. 13. 14. 15. 16. 1. 2. 3. 4. 6. 7. 8. 9. 10. 12. 14. 16. 17. 19. 2. 3. 4. 5. 6. 7. 9. 10. 12. 13. 14. 15. 19. 1. 2. 6. 7. 8. 10. 11. 12. 13. 14. 15. 16. 18. 19. 2. 3. 4. 6. 7. 8. 10. 11. 12. 13. 14. 16. 17. 18.
Expedíció rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós: rádiós:
#/3##o#ete##s #lo#t tu#te# #e# #z e### szel###$#$$$###$$$$$#$$#$$$##$$$$#$$$###$#$$$#$#$$# 1/3#sot#te##s ##ott##u#tek#fe# a# er#o#szelen$$##$$#$$#$$$#$$$####$$##$$#$$#$###$$$$$$$$#$ 1#3#s###t#de# #lott tu##e# fe# a# #rdo #zele###$$##$$$$$$$#$$$####$#$###$##$$$#$$##$$$$$$$ #/3#s#t##edes e#ott #u#tek#### ## e#d# #z##e#$#$#$#$$$#$$$####$##$$#$$$$#$#$####$$$$##$#$# 1/3#s#te#ed#s#el##t t#ntek #el #z ##do###elen$$$$$$$$#$$#$$#$$$$##$$###$$$##$$$##$$###$$## #/3#so###ed###elo#t tun##k fe# #z##rd# sz#len$$$$$$$$$$$##$$#$$$$$$$$$#$$$#$$$#$#$$$$#$$#$ 1/# s##e#ed#s #l#t#####te# fel #z#e### #zel#n$$$$$$$$$$$$$$#$$#$$$$$$$$$$$$##$$$##$##$$$#$ #/# sotete####el#tt t##tek #el #z #rd##s#elen$$##$#$###$$$$$$####$#$##$#$#$##$$#$$##$$$$$# 1## so##ted#s elo#t tunt###f#l#az##rdo sze####$$###$$#$$#$$#$$$$$###$#$$$$$$#$$$#$$$$##$#$ 1/##sotetede##e#ott#t#nt#k ##l az #rdo #ze###$##$###$$$$#$#$#$$$##$$$$$$$#$$$$$$#$#$$$###$ ve#of#ny#s #apf#ny eny#ulo #do$$$$$$#$$$$#$$###$$$$##$$$$$$$$##$#$$#$$$$$$$$$$#$#$$#$$$#$$ v#rofeny#s##a##eny e#y#u#o#i#o$$#$$$$$$#$$$$$###$$$$$$#$$$#$$#$$##$#$$$$$$##$$#####$$#$$$$ v#rofeny#s#napfe#y####hu#o i#o##$$$$$$$##$#$#$#$$#$$$$$###$#$$$$$$$#$##$##$$#$##$$###$$$#$ ##rof####s na#f### en#hul# ###$$##$##$#$#$$$$#$$#$###$$#$$#$#$##$$$$$#$##$$$##$$$$$#$#$$## v#r##en### #apfeny e#yh##o id##$#$$####$#$##$#$$$$####$#$#$#$$#$$$$$$$$$$$$##$$$#$$$$$$$$# #erofenyes napfeny e##hulo ##o$$#$$$#$#$$#$##$$$#$#$#$$$$$#$#$$$$#$$$$$$$$#$#$$##$#$#$#$$# verofen##s napfe## en#h##o#ido#$$$##$$$$$$$$$#$#$$$#$#$$$#$$#$$##$#$$#$##$$$$$$$$$####$$#$ #er##en#e# na##eny #nyhulo#i##$$$#$$$#$$#$$$$#$$##$$#$$$$###$$##$$##$$#$$$$$$##$###$$$$$#$ v###fenyes #ap##ny ###h#lo##do$$#$#$##$$$$$$####$###$##$####$$##$$$$$$$$##$$#$#$$$$$$#$$$$ verofe#yes n##fe#y#enyhu## i#o$$##$$##$$$#$#$$$$$$$$$##$##$##$$$#$$$$$#$#$#$$$$$###$$$$#$# v#ro#e#### n#pfe#y enyh### #do#$#$$###$$#$$$$$$$#$$$$$$$#$#$$$$$$$#$$$#$$$##$$#$$###$$#$#$ #erof#ny#s###pfe#y ##y#u#o id#$$$##$#$$$##$$$$$#$#$$$$$$$$$$###$$$$$$#$#$$##$#$$$$$#$$#$## v#ro#enyes ####eny#e#yh##o ido$$$$#$$$$$$#$$#$###$$$#$$$$$$$$$$#$$$$#$###$$$#$#$$#$$$$#$$# verofenyes n#pf##y eny#u#o i###$$##$$$$$$#$$$$$##$$$$#$###$$#$$##$$$$$#$$$#$$$$##$$$###$$$ 1/##csa##a#no####y je#ent#m#g d#l#ko#ul#$$#$$###$#$#####$##$#$###$$#$#$$##$$$$$$$#$$$$###$ #/0 cs#####n#st#n# j#le####eg d#l #orul#$##$$$$$##$$$$######$$$$#$$#$$$$##$$#$#$$$$$$$$$$$ #/0 csak## nos##ny ##lent me# del #o#u#$$$##$$##$$#$$$$$$$$$$$$$$$$$$##$#$$$$$$$$$$##$#$#$ 1/# #sak # noste#y jele#t#m## d###kor###$$#$$$$$$#$$$$#$######$$#$$###$###$#$##$#$#$$$$$#$ #/0#c### ##nos#### ###en##me# del k##u##$$$$$#$$$$##$#$$$$#$##$$$#$$$$$$$#$##$$$$$$##$##$$ #/###s#k a n#st### jelent #eg###l korul$$$$$$$#$$$$#$$$$$$##$$$$#$###$$$#$$$$$$#$$#$$#$### #/0 csak a#nosteny#####nt ### ##l k##ul$#$$###$$$$$#$$$$#$$$#$$#$#$$$$##$$$#$#$$$#$#$$#### 1/# ##ak a#nosteny #e#e#t#m#g###l kor###$$#$$$##$$##$$#$###$$$#$$$##$$$#$#$#$$$$#$$###$$$# #/0#c#ak a#noste#y #el#nt me# del k#r#l$$#$#$$$$$$$$##$#$###$###$#$#$$$$#$#$$$$$$$#$#$$$$# 1## c#ak#a#n##te#y ##l##t ##g #e# k#ru#$$$#$#$$$$$###$$$$$$#$$#$#$$#$$$$$$$$$$$$#$$#$##$#$ 1/0 csak a#n#steny jel#nt ### del ko###$##$##$$#$$$$$$#$$$$$##$$#$$#$#$#$$##$$$$$$$$#$###$ 1/# csa# a#nost#ny#j##e###me# del##oru###$#$$##$$#$$$$$$$$###$$$#$#$$#$$$#$$$#$$##$$$$$$## ##0 csak## #os#e#y#jelent me# d#l#k###l$$$$$$###$$$##$$$$$$$$$#$#$##$$###$#$$$$$$$$#####$# esza#ro# g#akori f#rk##uvolt#s hallats#ik$#$##$$$#$$$$$#$$#$$##$$#$$$#$$#$##$#$$$#$$#$#$#$ #s##krol gya##ri fa#ka###o##e# hallatsz#k$##$$$#$$$$$$$$$#$$#$#$##$$$$#$$$#$$#$#$$##$#$$$$ e##akro##g#ako#i f####s##ol#es hallats###$$#$$$#$$#$$$##$#$$$$$$$$#$$##$$$$$$$$$#$##$$$$$# e#z#kr#l gyakor# fark#s##o###s #allats###$#$$###$$$##$$$$$$$$###$$$#$#$$##$$$$$##$$$$$$$## #s#ak##l#g#ako## fa##asu#o#te# ##llatsz#k$$$##$#$#$$$#$$#$#$$$$$$$##$$$$$$#$$$#$##$$$$$#$# eszakro# #y#ko## #arkasu#olte# #allat#z##$###$$$$$$$$$$#$$##$$#$##$$$$#$$$$$#$$$#######$#$ ##zakrol#g##k### f###a#uvolt#s ##l#at#zi#$##$$$$$$$$#$$$#$$##$#$$$$$#$$$$$$#$#$$$$$#$#$##$ esz#kro# g#a#ori#fark#suvol#es #al#a##zik$$$##$$$$#$$$##$$##$$##$$$#$#$$$$$$#####$$$$$$##$ es#a#rol #yakor# f#rk##uvolte# #al##t##ik$$$$##$##$#$#$$##$$$$####$$$$$$$$$$$#$#$$$$$$#$$# es#ak##l###a###i fa####uv#lte# #alla#szik$$$$$$$$##$$###$#$$$$#$###$$#$$#$$$#$$#$$$$#$$$$$ es#akrol#gy#kor# fark##uv##tes#ha###tsz#k#$$$$#$$$##$#$$#$$#$$$#$$$#$#$#$$$$$$#$#$$$$#$$$# e#zakrol gy#ko#i farkasuvol#es#ha#lat###k#$$$$$$#$$$$$$#$##$#$#$$$##$#$##$##$$$$$$##$#$##$ #szakrol ##akori#fa#kas#v##tes #all#t##ik$$##$#$$$$$$$#$##$$$#$$$$$$$$##$#$$$##$#$$$#$##$$ ##z###o##g###ori fa#ka#uvolte# #allats#i#$$$#$#$#$##$$$#$#$##$#$$$$$#$#$$$$$$$$#$$$$$$#$$$ 13/0 #ote#e#es e#o## ##y #g#sz#fa##a h#l#d##ve#ig#a#pa#ak men#en$$$$$$##$$$$$$$$$$$#$$#$$$ #3/0#s#te##d#s#elot##egy ege## fal####al#dt ve### a ##tak#ment#####$#$$$$##$$$$###$$$###$# 13#0##otet#des##lott##g# e#e## #al#a hal#dt###gi# a patak ###ten$$$$$###$$$$$###$$$$$$#$$$ 13/0 sotete#es###o#t#eg# #ges###alk# hal##t #egi# # pata# me#t#n$$$###$$#$##$##$$#$$$#$$$# 13#0 #ote###es elot# eg# e#e#z fa#ka##al#dt vegi# a #at###me##en$$$$#$$$$#$$$$$#$$#$$$#$$# 13/# s##et#### ###tt eg# egesz fal#a hal#d# v#####a patak mente#$######$####$#$$$###$$$$#$ ##/0 s#tetedes ##o#t egy e##sz#f##ka##aladt v#gi# a###tak#me#t##$$$#####$$$#$$$##$#$##$$#$ 13/# ######d#s ###t# #g# egesz#f#lka hal#d####gig # pa#a##me####$$$####$$$$$$$#$$$#$$#$#$# 13/0 s#tete#e# #l####eg####es##fa#k# halad##ve#i# # #atak me#te#$$$#$#$$$$#$$$##$$##$$#$$# 13/0#s#tete##s elot# egy###esz #alka###l#dt ve##g a pata# men#en##$####$$$$$$#$$$####$#$$$ ###0 sotet##e# ##ot# eg# eg#s##fa#ka h##adt v#### a pa##k###n###$#$#$#$$$$#$$###$$$$$#$$#$ 1#/0#so#et#### e#o#t egy egesz#falka #a#adt v#gig## ##ta# me#te##$##$$##$$#$$#$$$$$###$$$# 1#/0 s#t##ede####o#t#eg##e#es##falka h##adt####ig#a #atak me#t#n$#$$$$##$#$##$$$$$#$#$$#$$ 13/0###t##ed#s#elot##egy#egesz####ka#haladt vegig#a#pa#####enten$$###$$$$##$$$$$$$$#$$$$$$
280.oldal
2016
2015 május
Expedíció
Mely napokon, mely rádiósok feljegyzésében szerepel a farkas szó? 5. nap 15. rádióamatőr 10. nap 16. rádióamatőr A 4. feladat megoldása Naponta hány amatőr készített feljegyzést? 1. nap: 13 rádióamatőr 2. nap: 14 rádióamatőr 3. nap: 15 rádióamatőr 4. nap: 15 rádióamatőr 5. nap: 14 rádióamatőr 6. nap: 15 rádióamatőr 7. nap: 12 rádióamatőr 8. nap: 14 rádióamatőr 9. nap: 13 rádióamatőr 10. nap: 14 rádióamatőr 11. nap: 14 rádióamatőr Ellenőrzés: Ez összesen: 153 feljegyzés. Az 5. feladat megoldása A helyreállított üzenetek kiíratása az adaas.txt fájlba Az adaas.txt fájl kiíratása befejeződött. A 6. feladat megoldása A szamE függvény elkészítése A 7. feladat megoldása Egy bekért napon egy bekért rádiós által megfigyelt farkasok száma Kérem a nap sorszámát: Kérem a számot! (1 <= beírt szám <= 11) :3 Kérem a rádiós sorszámát: Kérem a számot! (1 <= beírt szám <= 20) :3 1. megoldás: while ciklussal: A megfigyelt egyedek száma: 5 2. megoldás: index függvénnyel és darabolással: A megfigyelt egyedek száma: 5 BUILD SUCCESSFUL (total time: 7 seconds)
adaas.txt: tabort vertunk nagy szel 20 fok hideg farkasnyomokat lattunk egy pataknal$$$$$$$$$$$$$$$$$ 1/0 egy dombrol figyeltuk friss ho akadalyoz$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 2/3 rossz szelirany miatt csak rovid ideig$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ hovihar miatt nem volt megfigyeles rendberaktuk a felszerelest$$$$$$$$$$$$$$$$$$$$$$$$$$$$ a pataknal farkasok nem jelentkeztek nyomok voltak$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 0/3 a patakon tuli dombon kolykok jatszottak del korul$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 1/3 sotetedes elott tuntek fel az erdo szelen$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ verofenyes napfeny enyhulo ido$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 1/0 csak a nosteny jelent meg del korul$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ eszakrol gyakori farkasuvoltes hallatszik$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 13/0 sotetedes elott egy egesz falka haladt vegig a patak menten$$$$$$$$$$$$$$$$$$$$$$$$$$
Klemand
281.oldal
2016
2015 május idegennyelvű
Latin táncok
2015 május idegennyelvű: Latin táncok A Latin Tánciskola tanulói latin táncokat tanulnak, ezek a következők: cha-cha, salsa, rumba, samba, jive, tango, bachata. A tanulók a tanév végén bemutatót tartottak. A bemutatón minden táncot csupán egyszer mutattak be, azonban az egyes táncok bemutatóján több pár is szerepelt. Az év végi bemutató táncrendjét a tancrend.txt fájl tartalmazza. A fájlban a táncok a bemutató tényleges sorrendjében szerepelnek. Tánconként minden párhoz három sor tartozik, ezek rendre a bemutatott táncot, majd a pár lány, végül a pár fiú tagjának utónevét tartalmazzák: cha-cha Katalin Bertalan cha-cha Adrienn Lajos salsa Katalin Bertalan A fenti példa szerint a cha-chát két pár, Katalin és Bertalan, valamint Adrienn és Lajos mutatták be, a cha-cha után pedig a salsa következett. Egy személy a különböző táncokat eltérő partnerekkel is bemutathatja, de feltételezheti, hogy a táncosok között nincs két azonos nevű. A fájl legfeljebb 140 tánc és táncospár nevét tartalmazza, továbbá tudjuk, hogy legfeljebb 20 fiú, és legfeljebb 20 lány vett részt a bemutatón. Készítsen programot, amely a tancrend.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse tanciskola néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie, feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.) 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:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be a tancrend.txt állományban talált adatokat, s annak felhasználásával oldja meg a következő feladatokat!
2. Írassa ki a képernyőre, hogy melyik volt az elsőként és melyik az utolsóként bemutatott tánc neve! 3. Hány pár mutatta be a sambát? A választ jelenítse meg a képernyőn! 4. Írassa ki a képernyőre, hogy Vilma mely táncokban szerepelt! 5. Kérje be egy tánc nevét, majd írassa ki a képernyőre, hogy az adott táncot Vilma kivel mutatta be! Például ha a bekért tánc a samba, és Vilma párja Bertalan volt, akkor „A samba bemutatóján Vilma párja Bertalan volt.” szöveg jelenjen meg! Ha Vilma az adott tánc bemutatóján nem szerepelt, akkor azt írja ki a képernyőre, hogy „Vilma nem táncolt samba-t.”.
Klemand
282.oldal
2016
2015 május idegennyelvű
Latin táncok
6. Készítsen listát a bemutatón részt vett fiúkról és lányokról! A listát a szereplok.txt nevű szöveges állományba mentse el a következő formátumban: a neveket vesszők válasszák el egymástól, de az utolsó név után már ne szerepeljen írásjel. Például: Lányok: Lujza, Katalin, Andrea, Emma Fiúk: Ferenc, Ambrus, Andor, Kelemen, Bertalan Írja ki a képernyőre, hogy melyik fiú szerepelt a legtöbbször a fiúk közül, és melyik lány a lányok közül! Ha több fiú, vagy több lány is megfelel a feltételeknek, akkor valamennyi fiú, illetve valamennyi lány nevét írja ki!
Klemand
283.oldal
2016
2015 május idegennyelvű
Latin táncok
package emeltinfo2015mid; import java.io.*; import java.util.*; /** * Latin táncok * * @author Klemand */ public class EmeltInfo2015mid { public static void main(String[] args) throws IOException { //1. feladat System.out.println("A 1. feladat megoldása"); System.out.println("A tancrend.txt fájl beolvasása "); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("tancrend.txt")); String sor1, sor2, sor3; sor1 = behozatal.readLine(); //Ha van UTF-8 azonosító a fájl elején, elhagyjuk a sor elejéről: if (sor1.charAt(0) == (char) 0xFEFF) { sor1 = sor1.substring(1); } sor2 = behozatal.readLine(); sor3 = behozatal.readLine(); tancrend.add(new TancrendTipus(sor1, sor2, sor3)); while ((sor1 = behozatal.readLine()) != null) { sor2 = behozatal.readLine(); sor3 = behozatal.readLine(); tancrend.add(new TancrendTipus(sor1, sor2, sor3)); } behozatal.close(); System.out.println(""); //Ellenőrzés System.out.println("A beolvasás ellenőrzése: \n"); int i; for (i = 1; i <= tancrend.size(); i++) { System.out.println(i + ". tánc: " + tancrend.get(i - 1).tanc + ", lány: " + tancrend.get(i - 1).lany + ", fiú: " + tancrend.get(i - 1).fiu); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása "); System.out.println("Az elsőként bemutatott tánc neve: " + tancrend.get(0).tanc); System.out.println("Az utolsóként bemutatott tánc neve: " + tancrend.get(tancrend.size() - 1).tanc); System.out.println("");
Klemand
284.oldal
2016
2015 május idegennyelvű
Latin táncok
//3. feladat System.out.println("A 3. feladat megoldása "); int sambaDb = 0; for (i = 1; i <= tancrend.size(); i++) { if (tancrend.get(i - 1).tanc.equals("samba")) { sambaDb++; } } System.out.println("A sambát " + sambaDb + " pár mutatta be. \n"); //4. feladat System.out.println("A 4. feladat megoldása "); System.out.print("Vilma a következő táncokban szerepelt: "); for (i = 1; i <= tancrend.size(); i++) { if (tancrend.get(i - 1).lany.equals("Vilma")) { System.out.print(tancrend.get(i - 1).tanc + " "); } } System.out.println("\n"); //5. feladat System.out.println("Az 5. feladat megoldása "); System.out.println("Kivel táncolta Vilma a bekért táncot? \n"); System.out.print("Kérem a tánc nevét: "); String tancBe = szovegBevitel(); System.out.println(""); i = 1; while (i <= tancrend.size() && !(tancrend.get(i - 1).tanc.equals(tancBe) && tancrend.get(i - 1).lany.equals("Vilma"))) { i++; } if (i <= tancrend.size()) { System.out.println("A " + tancBe + " bemutatóján Vilma párja " + tancrend.get(i - 1).fiu + " volt."); } else { System.out.println("Vilma nem táncolt " + tancBe + "-t."); } System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása "); System.out.println("A bemutatón részt vevők listájának kiíratása a szereplok.txt fájlba \n"); //A következő feladatok előkészítése: a lanyok és fiuk tömblisták feltöltése int j; for (i = 1; i <= tancrend.size(); i++) { j = 1; while (j <= lanyok.size() && !(lanyok.get(j - 1).nev.equals(tancrend.get(i - 1).lany))) { j++; } if (j <= lanyok.size()) { lanyok.get(j - 1).tancDb++; } else { lanyok.add(new LanyokTipus(tancrend.get(i - 1).lany, 1)); }
Klemand
285.oldal
2016
2015 május idegennyelvű
Latin táncok
j = 1; while (j <= fiuk.size() && !(fiuk.get(j - 1).nev.equals(tancrend.get(i - 1).fiu))) { j++; } if (j <= fiuk.size()) { fiuk.get(j - 1).tancDb++; } else { fiuk.add(new FiukTipus(tancrend.get(i - 1).fiu, 1)); } } PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("szereplok.txt")); kivitel.print("Lányok: "); for (i = 1; i < lanyok.size(); i++) { kivitel.print(lanyok.get(i - 1).nev + ", "); } kivitel.println(lanyok.get(lanyok.size() - 1).nev); kivitel.print("Fiúk: "); for (i = 1; i < fiuk.size(); i++) { kivitel.print(fiuk.get(i - 1).nev + ", "); } kivitel.println(fiuk.get(fiuk.size() - 1).nev); kivitel.close(); System.out.println("A szereplok.txt fájl kiíratása befejeződött. \n"); //7. feladat System.out.println("A 7. feladat megoldása "); System.out.println("A legtöbbször szereplők nemenként: \n"); int lanyMaxDb = 0; int fiuMaxDb = 0; for (i = 1; i < lanyok.size(); i++) { if (lanyok.get(i - 1).tancDb > lanyMaxDb) { lanyMaxDb = lanyok.get(i - 1).tancDb; } } System.out.print("Lányok:"); for (i = 1; i < lanyok.size(); i++) { if (lanyok.get(i - 1).tancDb == lanyMaxDb) { System.out.print(" " + lanyok.get(i - 1).nev); } } System.out.println("\n"); for (i = 1; i < fiuk.size(); i++) { if (fiuk.get(i - 1).tancDb > lanyMaxDb) { lanyMaxDb = fiuk.get(i - 1).tancDb; } } System.out.print("Fiúk:"); for (i = 1; i < fiuk.size(); i++) { if (fiuk.get(i - 1).tancDb == lanyMaxDb) { System.out.print(" " + fiuk.get(i - 1).nev); } } System.out.println("\n");
Klemand
286.oldal
2016
2015 május idegennyelvű
Latin táncok
//Ellenőrzés System.out.println("Ellenőrzés "); System.out.println("A szereplések száma: \n"); int osszDb = 0; for (i = 1; i <= lanyok.size(); i++) { System.out.println(lanyok.get(i - 1).nev + ": " + lanyok.get(i - 1).tancDb); osszDb += lanyok.get(i - 1).tancDb; } System.out.println("-------------"); System.out.println("Összesen: " + osszDb); System.out.println(""); osszDb = 0; for (i = 1; i <= fiuk.size(); i++) { System.out.println(fiuk.get(i - 1).nev + ": " + fiuk.get(i - 1).tancDb); osszDb += lanyok.get(i - 1).tancDb; } System.out.println("-------------"); System.out.println("Összesen: " + osszDb); System.out.println(""); } //************************************************************ static ArrayList tancrend = new ArrayList<>(); public static class TancrendTipus { private final String tanc; private final String lany; private final String fiu; public TancrendTipus(String tancBe, String lanyBe, String fiuBe) //konstruktor { tanc = tancBe; lany = lanyBe; fiu = fiuBe; } } public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in)); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket }
Klemand
287.oldal
2016
2015 május idegennyelvű
Latin táncok
static ArrayList lanyok = new ArrayList<>(); public static class LanyokTipus { private final String nev; private int tancDb; public LanyokTipus(String nevBe, int db) //konstruktor { nev = nevBe; tancDb = db; } } static ArrayList fiuk = new ArrayList<>(); public static class FiukTipus { private final String nev; private int tancDb; public FiukTipus(String nevBe, int db) //konstruktor { nev = nevBe; tancDb = db; } } }
Klemand
288.oldal
2016
2015 május idegennyelvű
Latin táncok
run: A 1. feladat megoldása A tancrend.txt fájl beolvasása A beolvasás ellenőrzése: 1. tánc: cha-cha, lány: Luca, fiú: Kelemen 2. tánc: cha-cha, lány: Katalin, fiú: Bertalan 3. tánc: cha-cha, lány: Adrienn, fiú: Lajos 4. tánc: cha-cha, lány: Emma, fiú: Igor 5. tánc: cha-cha, lány: Vilma, fiú: Kolos 6. tánc: cha-cha, lány: Szilvia, fiú: Alfonz 7. tánc: cha-cha, lány: Elza, fiú: Tivadar 8. tánc: cha-cha, lány: Fruzsina, fiú: Ede 9. tánc: salsa, lány: Szilvia, fiú: Imre 10. tánc: salsa, lány: Judit, fiú: Attila 11. tánc: salsa, lány: Katalin, fiú: Bertalan 12. tánc: salsa, lány: Gabriella, fiú: Kelemen 13. tánc: salsa, lány: Irma, fiú: Kolos 14. tánc: salsa, lány: Fruzsina, fiú: Tivadar 15. tánc: rumba, lány: Emma, fiú: Alfonz 16. tánc: rumba, lány: Szilvia, fiú: Attila 17. tánc: rumba, lány: Katalin, fiú: Bertalan 18. tánc: rumba, lány: Adrienn, fiú: Lajos 19. tánc: rumba, lány: Luca, fiú: Kelemen 20. tánc: rumba, lány: Judit, fiú: Kolos 21. tánc: rumba, lány: Elza, fiú: Salamon 22. tánc: rumba, lány: Vilma, fiú: Imre 23. tánc: rumba, lány: Fruzsina, fiú: Tivadar 24. tánc: rumba, lány: Irma, fiú: Marcell 25. tánc: samba, lány: Gabriella, fiú: Alfonz 26. tánc: samba, lány: Szilvia, fiú: Igor 27. tánc: samba, lány: Elza, fiú: Kelemen 28. tánc: samba, lány: Katalin, fiú: Bertalan 29. tánc: samba, lány: Adrienn, fiú: Lajos 30. tánc: samba, lány: Emma, fiú: Kolos 31. tánc: samba, lány: Luca, fiú: Attila 32. tánc: samba, lány: Irma, fiú: Imre 33. tánc: samba, lány: Szabina, fiú: Ede 34. tánc: samba, lány: Fruzsina, fiú: Marcell 35. tánc: jive, lány: Emma, fiú: Attila 36. tánc: jive, lány: Katalin, fiú: Bertalan 37. tánc: jive, lány: Elza, fiú: Kelemen 38. tánc: jive, lány: Judit, fiú: Kolos 39. tánc: jive, lány: Irma, fiú: Marcell 40. tánc: jive, lány: Szilvia, fiú: Alfonz 41. tánc: tango, lány: Vilma, fiú: Tivadar 42. tánc: tango, lány: Katalin, fiú: Bertalan 43. tánc: tango, lány: Adrienn, fiú: Lajos 44. tánc: tango, lány: Irma, fiú: Kolos 45. tánc: tango, lány: Luca, fiú: Salamon 46. tánc: tango, lány: Emma, fiú: Imre 47. tánc: tango, lány: Gabriella, fiú: Igor 48. tánc: tango, lány: Elza, fiú: Alfonz 49. tánc: tango, lány: Judit, fiú: Attila 50. tánc: tango, lány: Szilvia, fiú: Kelemen 51. tánc: tango, lány: Fruzsina, fiú: Ede 52. tánc: tango, lány: Szabina, fiú: Marcell 53. tánc: bachata, lány: Katalin, fiú: Bertalan 54. tánc: bachata, lány: Emma, fiú: Kelemen 55. tánc: bachata, lány: Irma, fiú: Ede 56. tánc: bachata, lány: Szilvia, fiú: Igor 57. tánc: bachata, lány: Luca, fiú: Alfonz 58. tánc: bachata, lány: Elza, fiú: Attila A 2. feladat megoldása Az elsőként bemutatott tánc neve: cha-cha Az utolsóként bemutatott tánc neve: bachata
Klemand
289.oldal
2016
2015 május idegennyelvű
Latin táncok
A 3. feladat megoldása A sambát 10 pár mutatta be. A 4. feladat megoldása Vilma a következő táncokban szerepelt: cha-cha rumba tango Az 5. feladat megoldása Kivel táncolta Vilma a bekért táncot? Kérem a tánc nevét: tango A tango bemutatóján Vilma párja Tivadar volt. A 6. feladat megoldása A bemutatón részt vevők listájának kiíratása a szereplok.txt fájlba A szereplok.txt fájl kiíratása befejeződött. A 7. feladat megoldása A legtöbbször szereplők nemenként: Lányok: Katalin Szilvia Fiúk: Kelemen Bertalan Ellenőrzés A szereplések száma: Luca: 5 Katalin: 7 Adrienn: 4 Emma: 6 Vilma: 3 Szilvia: 7 Elza: 6 Fruzsina: 5 Judit: 4 Gabriella: 3 Irma: 6 Szabina: 2 ------------Összesen: 58 Kelemen: 7 Bertalan: 7 Lajos: 4 Igor: 4 Kolos: 6 Alfonz: 6 Tivadar: 4 Ede: 4 Imre: 4 Attila: 6 Salamon: 2 Marcell: 4 ------------Összesen: 58 BUILD SUCCESSFUL (total time: 26 seconds)
szereplok.txt: Lányok: Luca, Katalin, Adrienn, Emma, Vilma, Szilvia, Elza, Fruzsina, Judit, Gabriella, Irma, Szabina Fiúk: Kelemen, Bertalan, Lajos, Igor, Kolos, Alfonz, Tivadar, Ede, Imre, Attila, Salamon, Marcell
Klemand
290.oldal
2016
2015 október
Fej vagy írás
2015 október: Fej vagy írás Ha egy szabályos pénzérmét feldobunk, ugyanannyi a valószínűsége annak, hogy leesés után az érme értéke lesz felül (írás, I), mint annak, hogy a címert tartalmazó másik oldala (fej, F). Ezért gyakran „pénzfeldobással” sorsolnak, például így döntik el, hogy melyik csapat kezdhet el egy futballmeccset. Feladata a pénzfeldobás szimulálása, illetve pénzfeldobással kapott sorozatok elemzése lesz. A feladatok során az írást az I, a fejet az F nagybetű jelzi. Például egy 5 feldobásból álló sorozat esetén: I I F I F Készítsen programot fejvagyiras néven a következő feladatok megoldására! A program futása során a képernyőre való kiíráskor, illetve az adatok billentyűzetről való beolvasásakor utaljon a feladat sorszámára és a kiírandó, illetve bekérendő adatra! Az ékezetmentes kiírás is elfogadott.
1. Szimuláljon egy pénzfeldobást, ahol azonos esélye van a fejnek és az írásnak is! Az eredményt írassa ki a képernyőre a mintának megfelelően!
2. Kérjen be a felhasználótól egy tippet, majd szimuláljon egy pénzfeldobást! Írassa ki a képernyőre a felhasználó tippjét és a dobás eredményét is, majd tájékoztassa a felhasználót az eredményről következő formában: „Ön eltalálta.” vagy „Ön nem találta el.”! A kiserlet.txt állományban egy pénzfeldobás-sorozat eredményét találja. Mivel a sorozat hossza tetszőleges lehet, ezért az összes adat memóriában történő egyidejű eltárolása nélkül oldja meg a következő feladatokat! Feltételezheti, hogy egymilliónál több adata nem lesz.
3. Állapítsa meg, hány dobásból állt a kísérlet, és a választ a mintának megfelelően írassa ki a képernyőre!
4. Milyen relatív gyakorisággal dobtunk a kísérlet során fejet? (A fej relatív gyakorisága a fejet eredményező dobások és az összes dobás hányadosa.) A relatív gyakoriságot a mintának megfelelően két tizedesjegy pontossággal, százalék formátumban írassa ki a képernyőre!
5. Hányszor fordult elő ebben a kísérletben, hogy egymás után pontosan két fejet dobtunk? A választ a mintának megfelelően írassa ki a képernyőre! (Feltételezheti, hogy a kísérlet legalább 3 dobásból állt.) Például az IFFFFIIFFIFFFIFF sorozatban kétszer fordult elő, hogy egymás után pontosan két fejet dobtunk.
6. Milyen hosszú volt a leghosszabb, csak fejekből álló részsorozat? Írassa ki a választ a képernyőre a mintának megfelelően, és adja meg egy ilyen részsorozat első tagjának helyét is! (A minta tagjainak számozását eggyel kezdjük.)
Klemand
291.oldal
2016
2015 október
Fej vagy írás
Sokan azt hiszik, hogy ha már elég sok fejet dobtunk, akkor a következő dobás nagyobb valószínűséggel lesz írás, mint fej. Ennek ellenőrzésére vonatkozik a következő feladat.
7. Állítson elő és tároljon a memóriában 1000 db négy dobásból álló sorozatot! Számolja meg, hogy hány esetben követett egy háromtagú „tisztafej” sorozatot fej, illetve hány esetben írás! Az eredményt írassa ki a dobasok.txt állományba úgy, hogy az első sorba kerüljön az eredmény, a második sorban pedig egy-egy szóközzel elválasztva, egyetlen sorban szerepeljenek a dobássorozatok! Például: FFFF: 12, FFFI: 14 FIFI IIIF IFIF IIII FFII FFFF IIFI FFII FFFI … Minta (a forrásállomány alapján készült, valós adatokat tartalmaz):
Klemand
292.oldal
2016
2015 október
Fej vagy írás
package emeltinfo2015okt; import java.io.*; /** * Fej vagy írás * * @author Klemand */ public class EmeltInfo2015okt { public static void main(String[] args) throws IOException { //1. feladat System.out.println("Az 1. feladat megoldása "); System.out.println("Pénzfeldobás szimulálása \n"); String dobas = dobasSzim(); System.out.println("A pénzfeldobás eredménye: " + dobas); System.out.println(""); //Ellenőrzés System.out.println("A dobások esélyazonosságának ellenőrzése: "); int dobasDb = 1000000; int fejDb = 0; int irasDb = 0; int i; for (i = 1; i <= dobasDb; i++) { dobas = dobasSzim(); if (dobas.equals("F")) { fejDb++; } else { irasDb++; } } double arany = (double) fejDb / dobasDb; arany *= 100; System.out.print(dobasDb + " dobásból " + fejDb + " fej és " + irasDb + " írás lett, a fej relatív gyakorisága "); System.out.printf("%.2f", arany); System.out.println("% volt."); System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása "); System.out.println("Egy felhasználói tippelés eredménye \n"); System.out.print("Tippeljen! (F/I) = "); String tipp = szovegBevitel().toUpperCase(); //Kisbetűs beírás esetén is működjön! dobas = dobasSzim(); System.out.println("A tipp " + tipp + ", a dobás eredménye " + dobas + " volt."); if (dobas.equals(tipp)) { System.out.println("Ön eltalálta."); } else { System.out.println("Ön nem találta el."); } System.out.println("");
Klemand
293.oldal
2016
2015 október
Fej vagy írás
/*A következő feladatokat a kiserlet.txt fájl alapján, de annak memóriában történő teljes tárolása nélkül kell megoldani, azaz egyszerre csak néhány sor lehet a memóriában! */ //3. és 4. feladat System.out.println("A 3. feladat megoldása"); System.out.print("A kiserlet.txt fájlban tárolt kísérlet "); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("kiserlet.txt")); dobasDb = 0; fejDb = 0; irasDb = 0; String sor1; String sor; sor1 = behozatal.readLine(); //Ha van UTF-8 azonosító a fájl elején, elhagyjuk a sor elejéről: if (sor1.charAt(0) == (char) 0xFEFF) { sor1 = sor1.substring(1); } dobasDb++; if (sor1.equals("F")) { fejDb++; } else { irasDb++; } while ((sor = behozatal.readLine()) != null) { dobasDb++; if (sor.equals("F")) { fejDb++; } else { irasDb++; } } behozatal.close(); System.out.println(dobasDb + " dobásból állt."); System.out.println(""); System.out.println("A 4. feladat megoldása"); arany = (double) fejDb / dobasDb; arany *= 100; System.out.print("A kísérlet során a fej relatív gyakorisága "); System.out.printf("%.2f", arany); System.out.println("% volt."); System.out.println("");
Klemand
294.oldal
2016
2015 október
Fej vagy írás
//Az áttekinthetőség kedvéért nem egyetlen beolvasással oldjuk meg a feladatokat. //5. feladat System.out.println("Az 5. feladat megoldása "); behozatal = new BufferedReader(new FileReader("kiserlet.txt")); int ffDb = 0; sor1 = behozatal.readLine(); if (sor1.charAt(0) == (char) 0xFEFF) { sor1 = sor1.substring(1); } String sor2 = behozatal.readLine(); String sor3 = behozatal.readLine(); if (dobasDb == 3) { if ((sor1 + sor2 + sor3).equals("FFI") || (sor1 + sor2 + sor3).equals("IFF")) { ffDb++; } } else { String sor4 = behozatal.readLine(); for (i = 4; i <= dobasDb; i++) { if ((sor1 + sor2 + sor3 + sor4).equals("IFFI")) { ffDb++; } if (i < dobasDb) { sor1 = sor2; sor2 = sor3; sor3 = sor4; sor4 = behozatal.readLine(); } } if ((sor2 + sor3 + sor4).equals("IFF")) { ffDb++; } } behozatal.close(); System.out.println("A kísérlet során " + ffDb + " alkalommal dobtak pontosan két fejet egymás után."); System.out.println("");
Klemand
295.oldal
2016
2015 október
Fej vagy írás
//6. feladat System.out.println("A 6. feladat megoldása "); System.out.print("A leghosszabb tisztafej sorozat "); behozatal = new BufferedReader(new FileReader("kiserlet.txt")); int fAktKezdet = 0; int fAktHossz = 0; int fMaxKezdet = 0; int fMaxHossz = 0; sor1 = behozatal.readLine(); if (sor1.charAt(0) == (char) 0xFEFF) { sor1 = sor1.substring(1); } if (sor1.equals("F")) { fAktKezdet = 1; fMaxKezdet = 1; fMaxHossz = 1; } for (i = 2; i <= dobasDb; i++) { sor = behozatal.readLine(); if (sor.equals("F")) { fAktHossz++; if (fAktKezdet == 0) { fAktKezdet = i; } if (fAktHossz > fMaxHossz) { fMaxHossz = fAktHossz; fMaxKezdet = fAktKezdet; } } else { fAktKezdet = 0; fAktHossz = 0; } } behozatal.close(); System.out.println(fMaxHossz + " tagból áll, kezdete a(z) " + fMaxKezdet + ". dobás."); System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása "); System.out.println("Egy szimulált kísérletsorozat eredményének kiíratása a dobasok.txt fájlba \n"); String[] sorozat = new String[1000]; int ffffDb = 0; int fffiDb = 0; for (i = 1; i <= 1000; i++) { sorozat[i - 1] = sorozatSzim(); if (sorozat[i - 1].equals("FFFF")) { ffffDb++; } if (sorozat[i - 1].equals("FFFI")) { fffiDb++; } }
Klemand
296.oldal
2016
2015 október
Fej vagy írás
PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("dobasok.txt")); kivitel.println("FFFF: " + ffffDb + ", FFFI: " + fffiDb); for (i = 1; i <= 1000; i++) { kivitel.print(sorozat[i - 1] + " "); } kivitel.close(); System.out.println("A dobasok.txt fájl kiíratása befejeződött. \n"); } //************************************************************ public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in)); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket } public static String dobasSzim() { double veletlenSzam = Math.random(); if (veletlenSzam < 0.5) { //Az eredmény a [0;1[ intervallumba eshet return "F"; } else { return "I"; } } public static String sorozatSzim() { int i; String sor = ""; for (i = 1; i <= 4; i++) { sor += dobasSzim(); } return sor; } }
Klemand
297.oldal
2016
2015 október
Fej vagy írás
run: Az 1. feladat megoldása Pénzfeldobás szimulálása A pénzfeldobás eredménye: F A dobások esélyazonosságának ellenőrzése: 1000000 dobásból 499715 fej és 500285 írás lett, a fej relatív gyakorisága 49,97% volt. A 2. feladat megoldása Egy felhasználói tippelés eredménye Tippeljen! (F/I) = f A tipp F, a dobás eredménye I volt. Ön nem találta el. A 3. feladat megoldása A kiserlet.txt fájlban tárolt kísérlet 4321 dobásból állt. A 4. feladat megoldása A kísérlet során a fej relatív gyakorisága 51,03% volt. Az 5. feladat megoldása A kísérlet során 259 alkalommal dobtak pontosan két fejet egymás után. A 6. feladat megoldása A leghosszabb tisztafej sorozat 11 tagból áll, kezdete a(z) 947. dobás. A 7. feladat megoldása Egy szimulált kísérletsorozat eredményének kiíratása a dobasok.txt fájlba A dobasok.txt fájl kiíratása befejeződött. BUILD SUCCESSFUL (total time: 3 seconds) dobasok.txt: FFFF: 56, FFII IIFI IFFF FFIF IIFI FIFI FIIF IIFI IIFI IFIF FFFI IIFF IFII FFFI FFIF FIII FIII IIIF IIIF FIIF IIFF FFFI FFIF FIIF FIFF FFII FIFF FFFI IIFI FIFF FIFI IIFF FFFI FIII IIFI FIII FIII FFFF FFFF IFFF FIFF IFFI IFFI IIII FFIF IIII FFII IFIF FIFF FFFF …
Klemand
FFFI: 62 IIIF FFIF FIFI FFFI FIII FIII FIII IFFF IFII FIIF FFIF IIFF FIII IFFF IIIF FFII FFFI IIIF IFIF IFFF IIFF IFFI IIFF IIII IFFF IFIF IIFF IFFF IIFI IFIF IIFI FIFF FFIF FIFF IIII FFIF IIFF IFFI IFFI FIFF IIFI FIFF IFII FIIF FFFI FFFI IFII FIFI IFFF FFFI
IIII IFII FFFF FIII IFII FIII IIFI FIIF IFFI FFIF IFIF FFII IFFF FFFI FFII IIFF IIII IIFI IFII IFIF FFFI IFFF FIIF FIIF IIIF
FIFF FIFI IFII FFIF IFFI IIII FIFI FIFI FIFI FFIF IIII FIII FFII FIFI IFIF FIFF FIII IFFF FFII FIIF IFFF FIII IIFF IFII FFFI
FIFF IFFF IFIF IFFF FFII FIII IIIF FIIF FFII FIIF IFIF FIII FIFF FIIF IFFF FFFF FIII IFFF IIIF FFFF IIFF IFFI FIII IIIF IIIF
FFIF FIFF FIII FFII IIFI IIIF FFII FFFF IIFI FIII IFFI FIFF IIFI FIFF IFFF FIII FFFF FIFF IIFF FFIF FIIF IIFF IIFF FIII IIFI
IFFF FIIF FFII IIIF IIII FIIF FIIF FFFI FFII IFII IFII FFII IIFF FIFI IFFI IFFI IFFI FIFI IIII FFIF IFFI FFIF IFII IIIF FFFF
FIFF IIFI FIIF IFFI IIFF FIFI IFIF FIFI FIFI FIFF IFFI FFFF FIFI FFII IIFF FFFF IFIF FFFF IFFF IIFF FFFF IFFF IFFI FFII IFIF
FIFI FFFF IFFF IIII IFIF IFIF IFII IIFI IIII IFII FFIF FIII IFFI FFFI FFIF FIIF IIFF FFII IFFF IIII FIIF IFII FFFI FFIF IFIF
IFFI IIFI IIIF FIFI FFFF FIFI FFFI FIFI FFIF IFIF IIFF IFII FIIF IFFF FIII FFFI FIIF FIII FIFF IFII FIFI IFII FIIF IFFI FFFF
298.oldal
FFFF IFFF FFII FIII IFIF IFFF FIFI FFFF FFFF FIIF IIFF FFFI IIII IFFF IIFI IFFF IFII FFFF FIFF IIFF FIFF IFIF IIFF FFFF IIII
FFII IIFF FIII IIFI FIIF IIII IIII FFFF FIFF IFIF IFII IFFI FIFI IFFF IFFF FIFF FIFF FFFF IIFI FFFI IFFI IIII FIFF FIII IFFI
FFFI IIFF FFIF FIFI FFFI IIFI IIFF IIFI IFII IIIF IIFF FFIF FIFF IFIF IFFI IIIF IFII FIFI FFFF FIFI FFFI FIIF FIIF FIFF IFII
IFFI FIFI IIFI FFFF IIFF IIII IFII FIFF FFFI IFII FIIF IIIF IFFF IIIF IFFF IFIF FFFF FIII FFFI IFIF FIFI IIFI FFIF IIFF FFFI
IFII FFII IFFI IFII IIII FIFF IIFI FIFF IFFF IIFI IIFF IIII FFFI IIFI FIFI IFII FIFF FIFI IIFI FFFF FIFF IIFI FFIF IFIF FFII
IIFI IFFF IIFF IFIF IIIF IIFF IFII IFII FIII IIFI IIFI FIII FIFF FIFI IIIF FFIF FFFI IIFI FIIF FFIF IFIF FFFI FFIF FIIF FIFF
FIFF IFII IFFI FFIF IFII FFIF IIIF FFFI IIFI IIIF FFFF IFII IIII IIII FIII IFII IFFF IIFF FIII FIFI IIFF IIFI FFII IIII FFFF
FFIF FIFF IFIF IIFI IFFF FIFF IIIF FIIF IIFF FIFF FIIF IFIF IFFF IIFI IIFF FIFF FIFF IFIF IIFI IIII FFII FIII FIFF IFFF IFIF
IIII FFFI IFIF IFII FFFI IIFF IIII FFFF IIFF FIIF FFFI FFFI IFII FIFF IFFF IIII IFII FIII FIFF FIFI IIII IIIF FFFI IFFF FFIF
2016
2016 május
Ötszáz
2016 május: Ötszáz Egy apróságokat árusító boltban minden árucikk darabja 500 Ft. Ha egy vásárlás során valaki egy adott árucikkből több darabot is vesz, a második ára már csak 450 Ft, a harmadik pedig 400 Ft, de a negyedik és további darabok is ennyibe kerülnek, tehát az ár a harmadik ugyanazon cikk vásárlása után már nem csökken tovább. A pénztárhoz menők kosarában legalább 1 és legfeljebb 20 darab árucikk lehet. A kosarak tartalmát a penztar.txt fájl írja le, amelyben soronként egy-egy árucikk neve vagy az F karakter szerepel. A fájlban legfeljebb 1000 sor lehet. Az F karakter azt jelzi, hogy az adott vásárlónak nincs már újabb árucikk a kosarában, fizetés következik. Az árucikkek neve ékezet nélküli, több szóból is állhat, hossza legfeljebb 30 karakter. Példa a penztar.txt fájl első néhány sorára: toll F colostok HB ceruza HB ceruza colostok toll szatyor csavarkulcs doboz F
A példa alapján az első vásárló összesen 1 tollat vásárolt, ezért összesen 500 Ft-ot kell fizetnie. A második vásárlás során hatféle árucikket vásároltak – a HB ceruzából és a colostokból többet is –, összesen 3900 Ft értékben. Készítsen programot, amely a penztar.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse otszaz néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie, és feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.) 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:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be és tárolja el a penztar.txt fájl tartalmát! 2. Határozza meg, hogy hányszor fizettek a pénztárnál! 3. Írja a képernyőre, hogy az első vásárlónak hány darab árucikk volt a kosarában! 4. Kérje be a felhasználótól egy vásárlás sorszámát, egy árucikk nevét és egy darabszámot! A következő három feladat megoldásánál ezeket használja fel! Feltételezheti, hogy a program futtasásakor csak a bemeneti állományban rögzített adatoknak megfelelő vásárlási sorszámot és árucikknevet ad meg a felhasználó.
Klemand
299.oldal
2016
2016 május
Ötszáz
5. Határozza meg, hogy a bekért árucikkből a. melyik vásárláskor vettek először, és melyiknél utoljára! b. összesen hány alkalommal vásároltak! 6. Határozza meg, hogy a bekért darabszámot vásárolva egy termékből mennyi a fizetendő összeg! A feladat megoldásához készítsen függvényt ertek néven, amely a darabszámhoz a fizetendő összeget rendeli!
7. Határozza meg, hogy a bekért sorszámú vásárláskor mely árucikkekből és milyen mennyiségben vásároltak! Az árucikkek nevét tetszőleges sorrendben megjelenítheti.
8. Készítse el az osszeg.txt fájlt, amelybe soronként az egy-egy vásárlás alkalmával fizetendő összeg kerüljön a kimeneti mintának megfelelően! Minta a szöveges kimenetek kialakításához: 2. feladat A fizetések száma: 141 3. feladat Az első vásárló 1 darab árucikket vásárolt. 4. feladat Adja meg egy vásárlás sorszámát! 2 Adja meg egy árucikk nevét! kefe Adja meg a vásárolt darabszámot! 2 5. Az Az 32
feladat első vásárlás sorszáma: 5 utolsó vásárlás sorszáma: 139 vásárlás során vettek belőle.
6. feladat 2 darab vételekor fizetendő: 950 7. feladat 1 toll 1 szatyor 1 doboz 1 csavarkulcs 2 colostok 2 HB ceruza
Részlet az osszeg.txt fájlból: 1: 2: 3: 4: 5: 6: 7: …
Klemand
500 3900 2300 1000 2500 2900 950
300.oldal
2016
2016 május
Ötszáz
package emeltinfo2016maj; import java.io.*; import java.util.*; /** * Ötszáz * * @author Klemand */ public class EmeltInfo2016maj { public static void main(String[] args) throws IOException { //1. feladat System.out.println("A 1. feladat megoldása"); System.out.println("A penztar.txt fájl beolvasása \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("penztar.txt")); String elsoSor, sor; 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); } int vasarlo = 1; penztar.add(new PenztarTipus(vasarlo, elsoSor)); while ((sor = behozatal.readLine()) != null) { if (sor.equals("F")) { vasarlo++; } else { penztar.add(new PenztarTipus(vasarlo, sor)); } } behozatal.close(); vasarlo--; System.out.println("A beolvasás ellenőrzése"); int i; int ssz = 0; int hossz = penztar.size(); for (i = 1; i <= hossz; i++) { if (penztar.get(i - 1).vasarlo > ssz) { System.out.println(""); System.out.print(penztar.get(i - 1).vasarlo + ". vásárlás: " + penztar.get(i - 1).arucikk); ssz++; } else { System.out.print(", " + penztar.get(i - 1).arucikk); } } System.out.println("\n"); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.print("A fizetések száma: " + penztar.get(hossz - 1).vasarlo); System.out.println("\n");
Klemand
301.oldal
2016
2016 május
Ötszáz
//3. feladat System.out.println("A 3. feladat megoldása"); System.out.print("Az első vásárló: "); int db = 0; i = 1; while (i <= hossz && penztar.get(i - 1).vasarlo == 1) { db++; i++; } System.out.println(db + " darab árucikket vásárolt. \n"); System.out.println("A további feladatok előkészítése: a vasarlas tömblista elkészítése \n"); int j; for (i = 1; i <= hossz; i++) { j = 1; while ((j <= vasarlas.size()) && ((penztar.get(i - 1).vasarlo != vasarlas.get(j - 1).vasarlo) || !(penztar.get(i - 1).arucikk.equals(vasarlas.get(j - 1).arucikk)))) { j++; } if (j <= vasarlas.size()) { vasarlas.get(j - 1).darab++; } else { vasarlas.add(new VasarlasTipus(penztar.get(i - 1).vasarlo, penztar.get(i - 1).arucikk, 1)); } } System.out.println("A vasarlas tömblista ellenőrzése"); ssz = 0; for (i = 1; i <= vasarlas.size(); i++) { if (vasarlas.get(i - 1).vasarlo > ssz) { System.out.println(""); System.out.print(vasarlas.get(i - 1).vasarlo + ". vásárlás: " + vasarlas.get(i - 1).darab + " db " + vasarlas.get(i - 1).arucikk); ssz++; } else { System.out.print(", " + vasarlas.get(i - 1).darab + " " + vasarlas.get(i - 1).arucikk); } } System.out.println("\n"); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.println("Paraméterek bekérése"); System.out.print("Adja meg a vásárlás sorszámát! "); int vasarlasDb = penztar.get(hossz - 1).vasarlo; int sorszam = egeszBevitel(1, vasarlasDb); System.out.print("Adja meg az árucikk nevét! "); String arucikk = szovegBevitel(); System.out.print("Adja meg a vásárolt darabszámot! "); int darabszam = egeszBevitel(1, 20); System.out.println("");
Klemand
302.oldal
2016
2016 május
Ötszáz
//5. feladat System.out.println("Az 5. feladat megoldása"); System.out.print("A bekért árucikkből az első vásárlás sorszáma: "); i = 1;//Kiválasztás, tudjuk, hogy létezik ilyen árucikk while (i <= vasarlas.size() && !(vasarlas.get(i - 1).arucikk.equals(arucikk))) { i++; } System.out.println(vasarlas.get(i - 1).vasarlo); System.out.print("Az utolsó vásárlás sorszáma: "); i = vasarlas.size();//Kiválasztás, tudjuk, hogy létezik ilyen árucikk while (i >= 1 && !(vasarlas.get(i - 1).arucikk.equals(arucikk))) { i--; } System.out.println(vasarlas.get(i - 1).vasarlo); db = 0; for (i = 1; i <= vasarlas.size(); i++) { if (vasarlas.get(i - 1).arucikk.equals(arucikk)) { db++; } } System.out.println(db + " vásárlás során vettek belőle."); System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.println(darabszam + " darab vételekor fizetendő: " + ertek(darabszam)); System.out.println(""); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A bekért vásárlás adatai: "); for (i = 1; i <= vasarlas.size(); i++) { if (vasarlas.get(i - 1).vasarlo == sorszam) { System.out.println(vasarlas.get(i - 1).darab + " " + vasarlas.get(i - 1).arucikk); } } System.out.println(""); //8. feladat System.out.println("A 8. feladat megoldása"); System.out.println("A vásárlások alkalmával fizetendő összegek kiírása az osszeg.txt fájlba. "); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("osszeg.txt")); int osszeg = ertek(vasarlas.get(0).darab); for (i = 2; i <= vasarlas.size(); i++) { if (vasarlas.get(i - 1).vasarlo == vasarlas.get(i - 2).vasarlo) { osszeg += ertek(vasarlas.get(i - 1).darab); } else { kivitel.println(vasarlas.get(i - 2).vasarlo + ": " + osszeg); osszeg = ertek(vasarlas.get(i - 1).darab); } } kivitel.println(vasarlas.get(vasarlas.size() - 1).vasarlo + ": " + osszeg); kivitel.close();
Klemand
303.oldal
2016
2016 május
Ötszáz
System.out.println(""); System.out.println("A fájlkiírás befejeződött. \n"); } //************************************************************ static ArrayList penztar = new ArrayList<>(); public static class PenztarTipus { private final int vasarlo; private final String arucikk; public PenztarTipus(int vasarloBe, String sor) { vasarlo = vasarloBe; arucikk = sor; } } static ArrayList vasarlas = new ArrayList<>(); public static class VasarlasTipus { private final int vasarlo; private final String arucikk; private int darab; public VasarlasTipus(int vasarloBe, String arucikkBe, int darabBe) { vasarlo = vasarloBe; arucikk = arucikkBe; darab = darabBe; } } public static int egeszBevitel(int MIN, int MAX) { int x = -1000000000; do { System.out.print("Kérem a számot! (" + MIN + " <= beírt szám <= " + MAX + ") :"); try { Scanner szamBill = new Scanner(System.in); x = szamBill.nextInt(); } catch (Exception e) { System.out.println("Egész számot kérek!"); } } while ((x < MIN) || (x > MAX)); return x; } public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in)); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket }
Klemand
304.oldal
2016
2016 május
Ötszáz
public static int ertek(int db) { switch (db) { case 1: return 500; case 2: return 950; case 3: return 1350; default: return 1350 + (db - 3) * 400; } } }
Klemand
305.oldal
2016
2016 május
Ötszáz
run: A 1. feladat megoldása A penztar.txt fájl beolvasása A beolvasás ellenőrzése 1. vásárlás: toll 2. vásárlás: colostok, HB ceruza, HB ceruza, colostok, toll, szatyor, csavarkulcs, doboz 3. vásárlás: szatyor, szatyor, doboz, doboz, szatyor 4. vásárlás: filctoll, toll 5. vásárlás: HB ceruza, kefe, csavarkulcs, colostok, doboz 6. vásárlás: colostok, colostok, kefe, ceruzaelem, szatyor, szatyor 7. vásárlás: toll, toll 8. vásárlás: kefe, csavarkulcs, kefe, colostok 9. vásárlás: szatyor, csavarkulcs, kefe, colostok, ceruzaelem, ceruzaelem, ceruzaelem, ceruzaelem 10. vásárlás: colostok, csavarkulcs, HB ceruza 11. vásárlás: doboz 12. vásárlás: szatyor, csavarkulcs, HB ceruza, szatyor 13. vásárlás: HB ceruza 14. vásárlás: csavarkulcs 15. vásárlás: kefe, colostok 16. vásárlás: ceruzaelem 17. vásárlás: szatyor 18. vásárlás: toll, csavarkulcs 19. vásárlás: colostok, szatyor 20. vásárlás: toll, HB ceruza, doboz, toll 21. vásárlás: csavarkulcs 22. vásárlás: filctoll 23. vásárlás: toll, doboz 24. vásárlás: doboz, doboz, HB ceruza 25. vásárlás: kefe 26. vásárlás: HB ceruza, filctoll, szatyor, colostok, doboz, ceruzaelem, ceruzaelem, szatyor, szatyor, HB ceruza 27. vásárlás: doboz 28. vásárlás: toll, doboz, szatyor 29. vásárlás: HB ceruza, colostok, HB ceruza 30. vásárlás: doboz, filctoll 31. vásárlás: toll 32. vásárlás: HB ceruza, filctoll 33. vásárlás: toll, HB ceruza, ceruzaelem 34. vásárlás: HB ceruza, csavarkulcs, csavarkulcs, kefe 35. vásárlás: szatyor, doboz 36. vásárlás: szatyor 37. vásárlás: colostok, csavarkulcs 38. vásárlás: colostok, csavarkulcs 39. vásárlás: ceruzaelem, doboz, filctoll 40. vásárlás: ceruzaelem 41. vásárlás: csavarkulcs 42. vásárlás: colostok, kefe, doboz, toll, filctoll 43. vásárlás: kefe, colostok, csavarkulcs 44. vásárlás: toll 45. vásárlás: kefe, doboz, colostok 46. vásárlás: szatyor, kefe, toll, colostok, toll 47. vásárlás: filctoll, csavarkulcs, szatyor 48. vásárlás: HB ceruza 49. vásárlás: colostok, HB ceruza 50. vásárlás: colostok, HB ceruza 51. vásárlás: colostok 52. vásárlás: kefe, szatyor, colostok 53. vásárlás: HB ceruza, ceruzaelem 54. vásárlás: toll 55. vásárlás: ceruzaelem 56. vásárlás: kefe 57. vásárlás: toll 58. vásárlás: ceruzaelem, filctoll
Klemand
306.oldal
2016
2016 május
Ötszáz
59. vásárlás: filctoll, szatyor, colostok 60. vásárlás: colostok 61. vásárlás: ceruzaelem, filctoll, doboz, colostok, toll 62. vásárlás: ceruzaelem 63. vásárlás: kefe 64. vásárlás: doboz, HB ceruza 65. vásárlás: szatyor, colostok 66. vásárlás: filctoll, doboz 67. vásárlás: colostok, szatyor 68. vásárlás: doboz 69. vásárlás: ceruzaelem, ceruzaelem 70. vásárlás: kefe, doboz, colostok, doboz, kefe, csavarkulcs 71. vásárlás: HB ceruza, csavarkulcs 72. vásárlás: ceruzaelem 73. vásárlás: filctoll, toll, colostok, kefe, filctoll 74. vásárlás: filctoll, doboz, csavarkulcs, kefe, kefe 75. vásárlás: csavarkulcs, doboz, HB ceruza, kefe 76. vásárlás: colostok, szatyor, colostok 77. vásárlás: filctoll, ceruzaelem, HB ceruza, filctoll, HB ceruza 78. vásárlás: ceruzaelem, ceruzaelem 79. vásárlás: HB ceruza, csavarkulcs, toll, szatyor, toll, filctoll, ceruzaelem 80. vásárlás: csavarkulcs 81. vásárlás: csavarkulcs, ceruzaelem, doboz, doboz 82. vásárlás: colostok 83. vásárlás: toll, HB ceruza 84. vásárlás: kefe, ceruzaelem 85. vásárlás: HB ceruza 86. vásárlás: ceruzaelem 87. vásárlás: colostok, doboz 88. vásárlás: szatyor 89. vásárlás: HB ceruza, kefe, doboz 90. vásárlás: szatyor 91. vásárlás: colostok 92. vásárlás: csavarkulcs, filctoll 93. vásárlás: HB ceruza, szatyor, filctoll 94. vásárlás: csavarkulcs, kefe, filctoll, toll, csavarkulcs, doboz, szatyor 95. vásárlás: HB ceruza, colostok, filctoll 96. vásárlás: doboz, colostok, colostok, toll, kefe, kefe, colostok, csavarkulcs 97. vásárlás: csavarkulcs, toll 98. vásárlás: ceruzaelem, csavarkulcs, szatyor, toll 99. vásárlás: toll, filctoll 100. vásárlás: kefe 101. vásárlás: kefe, toll, doboz, HB ceruza, HB ceruza 102. vásárlás: filctoll, toll 103. vásárlás: csavarkulcs 104. vásárlás: colostok, ceruzaelem 105. vásárlás: HB ceruza 106. vásárlás: toll, colostok 107. vásárlás: toll 108. vásárlás: filctoll, doboz 109. vásárlás: toll, doboz, toll, csavarkulcs, csavarkulcs, ceruzaelem 110. vásárlás: colostok 111. vásárlás: ceruzaelem, ceruzaelem, toll, szatyor, colostok 112. vásárlás: colostok 113. vásárlás: szatyor 114. vásárlás: doboz, filctoll, colostok, colostok, doboz, HB ceruza, colostok 115. vásárlás: doboz, toll 116. vásárlás: filctoll 117. vásárlás: csavarkulcs, csavarkulcs, szatyor, szatyor 118. vásárlás: filctoll, kefe 119. vásárlás: kefe, HB ceruza, szatyor, HB ceruza, doboz 120. vásárlás: doboz, HB ceruza, colostok, toll, szatyor, ceruzaelem, toll, colostok, szatyor, toll 121. vásárlás: HB ceruza, toll, ceruzaelem, kefe, HB ceruza, kefe 122. vásárlás: HB ceruza, HB ceruza, szatyor
Klemand
307.oldal
2016
2016 május 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141.
vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás:
Ötszáz szatyor doboz kefe, filctoll csavarkulcs, kefe szatyor, kefe ceruzaelem, colostok, filctoll ceruzaelem toll, doboz, toll, szatyor HB ceruza, csavarkulcs, filctoll HB ceruza HB ceruza kefe, toll, HB ceruza doboz, colostok, HB ceruza, ceruzaelem csavarkulcs, toll, csavarkulcs HB ceruza doboz, szatyor kefe, kefe, csavarkulcs, kefe csavarkulcs ceruzaelem
A 2. feladat megoldása A fizetések száma: 141 A 3. feladat megoldása Az első vásárló: 1 darab árucikket vásárolt. A további feladatok előkészítése: a vasarlas tömblista elkészítése A vasarlas tömblista ellenőrzése 1. vásárlás: 1 db toll 2. vásárlás: 2 db colostok, 2 HB ceruza, 1 toll, 1 szatyor, 1 csavarkulcs, 1 doboz 3. vásárlás: 3 db szatyor, 2 doboz 4. vásárlás: 1 db filctoll, 1 toll 5. vásárlás: 1 db HB ceruza, 1 kefe, 1 csavarkulcs, 1 colostok, 1 doboz 6. vásárlás: 2 db colostok, 1 kefe, 1 ceruzaelem, 2 szatyor 7. vásárlás: 2 db toll 8. vásárlás: 2 db kefe, 1 csavarkulcs, 1 colostok 9. vásárlás: 1 db szatyor, 1 csavarkulcs, 1 kefe, 1 colostok, 4 ceruzaelem 10. vásárlás: 1 db colostok, 1 csavarkulcs, 1 HB ceruza 11. vásárlás: 1 db doboz 12. vásárlás: 2 db szatyor, 1 csavarkulcs, 1 HB ceruza 13. vásárlás: 1 db HB ceruza 14. vásárlás: 1 db csavarkulcs 15. vásárlás: 1 db kefe, 1 colostok 16. vásárlás: 1 db ceruzaelem 17. vásárlás: 1 db szatyor 18. vásárlás: 1 db toll, 1 csavarkulcs 19. vásárlás: 1 db colostok, 1 szatyor 20. vásárlás: 2 db toll, 1 HB ceruza, 1 doboz 21. vásárlás: 1 db csavarkulcs 22. vásárlás: 1 db filctoll 23. vásárlás: 1 db toll, 1 doboz 24. vásárlás: 2 db doboz, 1 HB ceruza 25. vásárlás: 1 db kefe 26. vásárlás: 2 db HB ceruza, 1 filctoll, 3 szatyor, 1 colostok, 1 doboz, 2 ceruzaelem 27. vásárlás: 1 db doboz 28. vásárlás: 1 db toll, 1 doboz, 1 szatyor 29. vásárlás: 2 db HB ceruza, 1 colostok 30. vásárlás: 1 db doboz, 1 filctoll 31. vásárlás: 1 db toll 32. vásárlás: 1 db HB ceruza, 1 filctoll 33. vásárlás: 1 db toll, 1 HB ceruza, 1 ceruzaelem 34. vásárlás: 1 db HB ceruza, 2 csavarkulcs, 1 kefe
Klemand
308.oldal
2016
2016 május 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98.
vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás: vásárlás:
Klemand
Ötszáz 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 2 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1
db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db db
szatyor, 1 doboz szatyor colostok, 1 csavarkulcs colostok, 1 csavarkulcs ceruzaelem, 1 doboz, 1 filctoll ceruzaelem csavarkulcs colostok, 1 kefe, 1 doboz, 1 toll, 1 filctoll kefe, 1 colostok, 1 csavarkulcs toll kefe, 1 doboz, 1 colostok szatyor, 1 kefe, 2 toll, 1 colostok filctoll, 1 csavarkulcs, 1 szatyor HB ceruza colostok, 1 HB ceruza colostok, 1 HB ceruza colostok kefe, 1 szatyor, 1 colostok HB ceruza, 1 ceruzaelem toll ceruzaelem kefe toll ceruzaelem, 1 filctoll filctoll, 1 szatyor, 1 colostok colostok ceruzaelem, 1 filctoll, 1 doboz, 1 colostok, 1 toll ceruzaelem kefe doboz, 1 HB ceruza szatyor, 1 colostok filctoll, 1 doboz colostok, 1 szatyor doboz ceruzaelem kefe, 2 doboz, 1 colostok, 1 csavarkulcs HB ceruza, 1 csavarkulcs ceruzaelem filctoll, 1 toll, 1 colostok, 1 kefe filctoll, 1 doboz, 1 csavarkulcs, 2 kefe csavarkulcs, 1 doboz, 1 HB ceruza, 1 kefe colostok, 1 szatyor filctoll, 1 ceruzaelem, 2 HB ceruza ceruzaelem HB ceruza, 1 csavarkulcs, 2 toll, 1 szatyor, 1 filctoll, 1 ceruzaelem csavarkulcs csavarkulcs, 1 ceruzaelem, 2 doboz colostok toll, 1 HB ceruza kefe, 1 ceruzaelem HB ceruza ceruzaelem colostok, 1 doboz szatyor HB ceruza, 1 kefe, 1 doboz szatyor colostok csavarkulcs, 1 filctoll HB ceruza, 1 szatyor, 1 filctoll csavarkulcs, 1 kefe, 1 filctoll, 1 toll, 1 doboz, 1 szatyor HB ceruza, 1 colostok, 1 filctoll doboz, 3 colostok, 1 toll, 2 kefe, 1 csavarkulcs csavarkulcs, 1 toll ceruzaelem, 1 csavarkulcs, 1 szatyor, 1 toll
309.oldal
2016
2016 május
Ötszáz
99. vásárlás: 1 db toll, 1 filctoll 100. vásárlás: 1 db kefe 101. vásárlás: 1 db kefe, 1 toll, 1 doboz, 2 HB ceruza 102. vásárlás: 1 db filctoll, 1 toll 103. vásárlás: 1 db csavarkulcs 104. vásárlás: 1 db colostok, 1 ceruzaelem 105. vásárlás: 1 db HB ceruza 106. vásárlás: 1 db toll, 1 colostok 107. vásárlás: 1 db toll 108. vásárlás: 1 db filctoll, 1 doboz 109. vásárlás: 2 db toll, 1 doboz, 2 csavarkulcs, 1 ceruzaelem 110. vásárlás: 1 db colostok 111. vásárlás: 2 db ceruzaelem, 1 toll, 1 szatyor, 1 colostok 112. vásárlás: 1 db colostok 113. vásárlás: 1 db szatyor 114. vásárlás: 2 db doboz, 1 filctoll, 3 colostok, 1 HB ceruza 115. vásárlás: 1 db doboz, 1 toll 116. vásárlás: 1 db filctoll 117. vásárlás: 2 db csavarkulcs, 2 szatyor 118. vásárlás: 1 db filctoll, 1 kefe 119. vásárlás: 1 db kefe, 2 HB ceruza, 1 szatyor, 1 doboz 120. vásárlás: 1 db doboz, 1 HB ceruza, 2 colostok, 3 toll, 2 szatyor, 1 ceruzaelem 121. vásárlás: 2 db HB ceruza, 1 toll, 1 ceruzaelem, 2 kefe 122. vásárlás: 2 db HB ceruza, 1 szatyor 123. vásárlás: 1 db szatyor 124. vásárlás: 1 db doboz 125. vásárlás: 1 db kefe, 1 filctoll 126. vásárlás: 1 db csavarkulcs, 1 kefe 127. vásárlás: 1 db szatyor, 1 kefe 128. vásárlás: 1 db ceruzaelem, 1 colostok, 1 filctoll 129. vásárlás: 1 db ceruzaelem 130. vásárlás: 2 db toll, 1 doboz, 1 szatyor 131. vásárlás: 1 db HB ceruza, 1 csavarkulcs, 1 filctoll 132. vásárlás: 1 db HB ceruza 133. vásárlás: 1 db HB ceruza 134. vásárlás: 1 db kefe, 1 toll, 1 HB ceruza 135. vásárlás: 1 db doboz, 1 colostok, 1 HB ceruza, 1 ceruzaelem 136. vásárlás: 2 db csavarkulcs, 1 toll 137. vásárlás: 1 db HB ceruza 138. vásárlás: 1 db doboz, 1 szatyor 139. vásárlás: 3 db kefe, 1 csavarkulcs 140. vásárlás: 1 db csavarkulcs 141. vásárlás: 1 db ceruzaelem A 4. feladat megoldása Paraméterek bekérése Adja meg a vásárlás sorszámát! Kérem a számot! (1 <= beírt szám <= 141) :96 Adja meg az árucikk nevét! toll Adja meg a vásárolt darabszámot! Kérem a számot! (1 <= beírt szám <= 20) :4 Az 5. feladat megoldása A bekért árucikkből az első vásárlás sorszáma: 1 Az utolsó vásárlás sorszáma: 136 36 vásárlás során vettek belőle. A 6. feladat megoldása 4 darab vételekor fizetendő: 1750
Klemand
310.oldal
2016
2016 május A A 1 3 1 2 1
Ötszáz
7. feladat megoldása bekért vásárlás adatai: doboz colostok toll kefe csavarkulcs
A 8. feladat megoldása A vásárlások alkalmával fizetendő összegek kiírása az osszeg.txt fájlba. A fájlkiírás befejeződött. BUILD SUCCESSFUL (total time: 13 seconds)
Osszeg.txt: 1: 500 2: 3900 3: 2300 4: 1000 5: 2500 6: 2900 7: 950 8: 1950 9: 3750 10: 1500 11: 500 12: 1950 13: 500 14: 500 15: 1000 16: 500 17: 500 18: 1000 19: 1000 20: 1950 21: 500 22: 500 23: 1000 24: 1450 25: 500 26: 4750 27: 500 28: 1500 29: 1450 30: 1000 31: 500 32: 1000 33: 1500 34: 1950 35: 1000 36: 500
Klemand
37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
1000 1000 1500 500 500 2500 1500 500 1500 2450 1500 500 1000 1000 500 1500 1000 500 500 500 500 1000 1500 500 2500 500 500 1000 1000 1000 1000 500 950 2900 1000 500
73: 2450 74: 2450 75: 2000 76: 1450 77: 2400 78: 950 79: 3450 80: 500 81: 1950 82: 500 83: 1000 84: 1000 85: 500 86: 500 87: 1000 88: 500 89: 1500 90: 500 91: 500 92: 1000 93: 1500 94: 3450 95: 1500 96: 3800 97: 1000 98: 2000 99: 1000 100: 500 101: 2450 102: 1000 103: 500 104: 1000 105: 500 106: 1000 107: 500 108: 1000
311.oldal
109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141:
2900 500 2450 500 500 3300 1000 500 1900 1000 2450 4750 2900 1450 500 500 1000 1000 1000 1500 500 1950 1500 500 500 1500 2000 1450 500 1000 1850 500 500
2016
2016 május idegennyelvű
Zár
2016 május idegennyelvű: Zár Egy ajtót elektronikus zárral láttak el. A zárat egy ismétlődő pontokat nem tartalmazó, megfelelő irányban rajzolt, törött vonalból álló mintával lehet nyitni. A minta megadását egy szabályos tízszög segíti, amelynek csúcsait 0-tól 9-ig sorszámozták, így a leghosszabb használható minta 10 számjegyet tartalmazhat. Az ajtót nyitó kódszám megadásánál csupán az alakzat és annak iránya érdekes, ezért a 135 mintával nyitható zárat a 802 is nyitja (vagy akár a 024 kódszám is), de a 208 nem. Tehát ebben a mintában a zár csak az óramutató járásával megegyező irányban nyílik. A nyitás az egyes számok egymást követő megérintésével történik. Az ajto.txt fájl soronként egy-egy nyitási próbálkozás adatait tartalmazza. A fájlban legfeljebb 500 sor, soronként legalább 3, legfeljebb 10 karakter lehet. Készítsen programot, amely az ajto.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse zar néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie, feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.) 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:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.
1. Olvassa be és tárolja el az ajto.txt fájl tartalmát! 2. Kérjen be a felhasználótól egy számjegysorozatot, amely a zár kódszáma lesz! (Feltételezheti, hogy a felhasználó ismétlődés nélküli jelsorozatot ad meg.) A teszteléshez használhatja a 239451 sorozatot is.
3. Jelenítse meg a képernyőn, hogy mely kísérleteknél használták a nyitáshoz pontosan az előző feladatban beolvasott kódszámot! A sorok számát egymástól pontosan egy szóközzel válassza el! (A sorok számozását 1-től kezdje!)
4. Adja meg, hogy melyik az első olyan próbálkozás, amely ismétlődő karaktert tartalmaz! Ha nem volt ilyen, írja ki a „nem volt ismétlődő számjegy” üzenetet! (A sorok számozását 1-től kezdje!)
5. Állítson elő egy, a második feladatban beolvasottal egyező hosszúságú, véletlenszerű, ismétlődés nélküli jelsorozatot, majd a mintának megfelelően jelenítse meg a hosszát és kódszámot!
az előállított
6. Készítsen függvényt nyit néven az alábbi algoritmus alapján, amely a neki átadott két kódszámról megállapítja, hogy ugyanazt a zárat nyitják-e! (A 239451 és a 017239 ugyanazt a zárat nyitja.) A függvény két, legfeljebb 10 számjegyből álló karaktersorozathoz egy logikai értéket rendel. A függvény elkészítésekor az algoritmusban megadott változóneveket használja! Az elkészített függvényt a következő feladat megoldásánál felhasználhatja.
Klemand
312.oldal
2016
2016 május idegennyelvű
Zár
Függvény nyit(jo, proba:karaktersorozat): logikai érték egyezik:=(hossz(jo)=hossz(proba)) Ha egyezik akkor elteres=ascii(jo[1])-ascii(proba[1]) Ciklus i:=2-től hossz(jo) Ha ( elteres - (ascii(jo[i])-ascii(proba[i])) ) mod 10 <> 0 akkor egyezik:=hamis Ciklus vége Elágazás vége nyit:=egyezik Függvény vége
A mondatszerű leírásban: -
az a mod b művelet eredménye az a szám b számmal történő osztásának maradéka; az ascii() függvény egy karakterhez annak karakterkódját rendeli.
Az ascii() függvény megvalósításához használhatja a következőket az egyes programozási nyelveken: C, C++, C#, Java: (int)karakter; (char)asciikod Pascal, Python, Perl: ord(karakter); chr(asciikod) Visual Basic: Asc(karakter); Chr(asciikod)
7. Állítsa elő a siker.txt fáljt, amelynek soraiban a nyitási próbálkozás kódszáma után – attól egy szóközzel elválasztva – annak értékelése olvasható.
•
„hibás hossz”, ha a felhasználótól a 2. feladatban bekért kódszám és a sorbeli kódszám hossza eltér;
•
„hibás kódszám”, ha a felhasználótól a 2. feladatban bekért kódszám és a sorbeli kódszám hossza egyezik, de nem összetartozók;
•
„sikeres”, ha a két kódszám egyenértékű.
Minta a szöveges kimenetek kialakításához: 2. feladat Adja meg, mi nyitja a zárat! 239451 3. feladat A nyitó kódszámok sorai: 1 4 5 8 10… 4. feladat Az első ismétlődést tartalmazó próbálkozás sorszáma: 9 5. feladat Egy 6 hosszú kódszám: 078695
Részlet a siker.txt fájlból: 239451 sikeres 154932 hibás kódszám 340562 sikeres …
Klemand
313.oldal
2016
2016 május idegennyelvű
Zár
package emeltinfo2016mid; import java.io.*; import java.util.*; /** * Zár * * @author Klemand */ public class EmeltInfo2016mid { public static void main(String[] args) throws IOException { //1. feladat System.out.println("A 1. feladat megoldása"); System.out.println("Az ajto.txt fájl beolvasása \n"); BufferedReader behozatal; behozatal = new BufferedReader(new FileReader("ajto.txt")); String elsoSor, sor; String[] daraboltSor; 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(""); ajto.add(new AjtoTipus(daraboltSor)); while ((sor = behozatal.readLine()) != null) { daraboltSor = sor.split(""); ajto.add(new AjtoTipus(daraboltSor)); } behozatal.close(); System.out.println("A beolvasás ellenőrzése"); int i, j; int meret = ajto.size(); for (i = 1; i <= meret; i++) { for (j = 1; j <= ajto.get(i - 1).kod.length; j++) { System.out.print(ajto.get(i - 1).kod[j - 1]); } System.out.println(""); } System.out.println(""); //2. feladat System.out.println("A 2. feladat megoldása"); System.out.print("Adja meg, mi nyitja a zárat (Pl. 239451)! "); String[] nyitoKod = szovegBevitel().split(""); System.out.println("");
Klemand
314.oldal
2016
2016 május idegennyelvű
Zár
//3. feladat System.out.println("A 3. feladat megoldása"); System.out.print("A nyitó kódszámok sorai:"); int hossz = nyitoKod.length; boolean egyezik; for (i = 1; i <= meret; i++) { if (ajto.get(i - 1).kod.length == hossz) { egyezik = true; for (j = 1; j <= hossz; j++) { if (!(ajto.get(i - 1).kod[j - 1].equals(nyitoKod[j - 1]))) { egyezik = false; } } if (egyezik) { System.out.print(" " + i); } } } System.out.println("\n"); //4. feladat System.out.println("A 4. feladat megoldása"); System.out.print("Az első ismétlődést tartalmazó próbálkozás sorszáma: "); int[] szamjegyDb = new int[10]; int k, index; boolean ismetles = false; i = 1; while (i <= meret && !(ismetles)) { for (k = 0; k <= 9; k++) { szamjegyDb[k] = 0; } for (j = 1; j <= hossz; j++) { index = Integer.parseInt(ajto.get(i - 1).kod[j - 1]); szamjegyDb[index]++; } for (k = 0; k <= 9; k++) { if (szamjegyDb[k] > 1) { ismetles = true; } } if (!(ismetles)) { i++; } } if (i <= meret) { System.out.println(i); } else { System.out.println("nem volt ismétlődő számjegy."); } System.out.println(""); //5. feladat System.out.println("Az 5. feladat megoldása"); System.out.print("Egy " + hossz + " hosszúságú kódszám: "); int szamjegy; for (k = 0; k <= 9; k++) { szamjegyDb[k] = 0; }
Klemand
315.oldal
2016
2016 május idegennyelvű
Zár
String veletlenKod = ""; while (veletlenKod.length() < hossz) { szamjegy = (int) ((Math.random() * 10)); if (szamjegyDb[szamjegy] == 0) { veletlenKod += szamjegy; szamjegyDb[szamjegy]++; } } System.out.println(veletlenKod); System.out.println(""); //6. feladat System.out.println("A 6. feladat megoldása"); System.out.print("A nyit függvény elkészítése"); System.out.println("\n"); //7. feladat System.out.println("A 7. feladat megoldása"); System.out.println("A nyitási próbálkozások eredményének kiírása az siker.txt fájlba. "); PrintWriter kivitel; kivitel = new PrintWriter(new FileWriter("siker.txt")); char[] jo = new char[hossz]; char[] proba = new char[hossz]; for (i = 1; i <= meret; i++) { for (j = 1; j <= ajto.get(i - 1).kod.length; j++) { kivitel.print(ajto.get(i - 1).kod[j - 1]); } if (ajto.get(i - 1).kod.length != nyitoKod.length) { kivitel.println(" hibás hossz"); } else { for (j = 1; j <= hossz; j++) { jo[j - 1] = nyitoKod[j - 1].charAt(0); proba[j - 1] = ajto.get(i - 1).kod[j - 1].charAt(0); } if (nyit(jo, proba)) { kivitel.println(" sikeres"); } else { kivitel.println(" hibás kódszám"); } } } kivitel.close(); System.out.println(""); System.out.println("A fájlkiírás befejeződött. \n"); } //************************************************************
Klemand
316.oldal
2016
2016 május idegennyelvű
Zár
static ArrayList ajto = new ArrayList<>(); public static class AjtoTipus { private final String[] kod; public AjtoTipus(String[] sor) { kod = sor; } } public static String szovegBevitel() throws IOException { BufferedReader bill; bill = new BufferedReader(new InputStreamReader(System.in)); return bill.readLine().trim(); //Eltávolítjuk a szöveg széleiről az esetleges szóközöket } public static boolean nyit(char[] jo, char[] proba) { boolean egyezik = (jo.length == proba.length); if (egyezik) { int elteres = (int) jo[0] - (int) proba[0]; for (int i = 2; i <= jo.length; i++) { if ((elteres - ((int) jo[i - 1] - (int) proba[i - 1])) % 10 != 0) { egyezik = false; } } } return egyezik; } }
Klemand
317.oldal
2016
2016 május idegennyelvű
Zár
run: A 1. feladat megoldása Az ajto.txt fájl beolvasása A beolvasás ellenőrzése 239451 154932 340562 239451 239451 451673 238451 239451 2393451 239451 017239 673895 335422 415677 A 2. feladat megoldása Adja meg, mi nyitja a zárat (Pl. 239451)! 239451 A 3. feladat megoldása A nyitó kódszámok sorai: 1 4 5 8 10 A 4. feladat megoldása Az első ismétlődést tartalmazó próbálkozás sorszáma: 9 Az 5. feladat megoldása Egy 6 hosszúságú kódszám: 689412 A 6. feladat megoldása A nyit függvény elkészítése A 7. feladat megoldása A nyitási próbálkozások eredményének kiírása az siker.txt fájlba. A fájlkiírás befejeződött. BUILD SUCCESSFUL (total time: 6 seconds)
siker.txt: 239451 sikeres 154932 hibás kódszám 340562 sikeres 239451 sikeres 239451 sikeres 451673 sikeres 238451 hibás kódszám 239451 sikeres 2393451 hibás hossz 239451 sikeres 017239 sikeres 673895 sikeres 335422 hibás kódszám 415677 hibás kódszám
Klemand
318.oldal
2016
Alapvető algoritmusok Java nyelven
Függelék
Függelék: Alapvető algoritmusok Java nyelven 1.)
Összegzés Az n elemszámú egész X tömb elemeinek összegzése az S változóban int S = 0; for(int i = 1; i <= n; i++){ S += X[i - 1]; //A Java nyelvben az indexelés 0-val kezdődik, ezért az i-edik elem indexe i – 1. }
2.)
Keresés T tulajdonságú elem keresése az n elemszámú egész X tömb elemei között, s ha van ilyen, akkor az első indexének megadása int i=1 while(i <= n && !(T(X[i -1])){ i++; } boolean van = (i <= n); if(van){ int indexT1=i; } Megjegyzés: Magát az elemet X[indexT1] tartalmazza.
3.)
Megszámolás A T tulajdonságú elemek megszámolása az n elemszámú X tömbben int db = 0; for(int i = 1; i <= n; i++){ if(T(X[i -1])){ db++; } }
Klemand
319.oldal
2016
Alapvető algoritmusok Java nyelven
Függelék 4.)
Maximum-kiválasztás Az n elemszámú egész X tömb legnagyobb elemének meghatározása int max = 1; for(int i = 2; i <= n; i++){ if(X[i -1] > X[max -1]){ max = i; } }
5.)
Kiválogatás Az n elemszámú egész X tömb T tulajdonságú elemei indexeinek kiválogatása az Y tömbbe int db = 0; for(int i = 1; i <= n; i++){ if(T(X[i -1])){ db++; Y[db -1] = i; } } Megjegyzés: a k-adik T tulajdonságú elem X[Y[k]]
6.)
Szétválogatás egy új tömbbe Az n elemszámú egész X tömb T tulajdonságú elemei indexeinek kiválogatása az Y tömb elejére, a nem T tulajdonságú elemeké pedig a végére. dbT = 0; dbNemT = 0; for(int i = 1; i <= n; i++){ if(T(X[i -1])){ dbT++; Y[dbT -1] = i; }else{ dbNemT++; Y[n - dbNemT] = i; } } Megjegyzés: Y(dbT) az utolsó T tulajdonságú elem indexe az Y tömbben, maga az utolsó T tulajdonságú elem X[Y[dbT]]
Klemand
320.oldal
2016
Alapvető algoritmusok Java nyelven
Függelék 7.)
Egyszerű cserés rendezés Először az első elemet hasonlítjuk össze a mögötte levőkkel, és ha kisebbet találunk,rögtön kicseréljül őket, így az első menetben biztosan a legkisebb kerül előre. Ezután ugyanezt elvégezzük a második elemmel, és így tovább… a) Egész elemeket tartalmazó tömb esetén: for(int i = 1; i <= n-1; i++){ for(int j = i + 1; j <= n; j++){ if(X[j-1] < X[i-1]){ int asztal = X[i-1]; X[i-1] = X[j-1]; X[j-1] = asztal; } } } b) Egy tömblista String típusú tulajdonsága alapján: tomblistaTipus asztal; for(int i = 1; i <= n-1; i++){ for(int j = i + 1; j <= n; j++){ if(tomblista.get(j-1).tul.compareTo(tomblista.get(i-1).tul) < 0){ asztal=tomblista.get(i-1); //A csere megvalósítása tömblista esetén tomblista.set(i-1 , tomblista.get(j-1)); tomblista.set(j-1 , asztal); } } }
8.)
Minimum-kiválasztásos rendezés Csak minden ciklus végén cseréljük ki az aktuális első elemet a mögötte levő legkisebbel, melynek az indexét követjük nyomon. for(int i = 1; i <= n-1; i++){ int min = i; for(int j = i + 1; j <= n; j++){ if(X[j -1] < X[min -1]){ min = j; } } int asztal = X[i-1]; X[i-1] = X[min-1]; X[min-1] = asztal; } Megjegyzés: Ugyanannyi összehasonlítás mellett kevesebb cserét kell végezni.
Klemand
321.oldal
2016
Alapvető algoritmusok Java nyelven
Függelék 9.)
Buborékos rendezés Először az első elemtől az n-1-ikig eljutva minden elemet összehasonlítunk a mögötte levővel, és ha az nagyobb, akkor megcseréljük őket. Ezáltal a kisebb elemek a sorozat eleje, a nagyobbak pedig a vége felé mozdulnak el, és a legnagyobb a ciklus végén biztosan a tömb végére kerül. A következő ciklusban már csak az n-2-ik elemig kell eljutnunk, és így tovább… for(int i = n; i >= 2; i--){ for(int j = 1; j <= i - 1; j++){ if(X[j -1] > X[j]){ int asztal = X[j-1]; X[j-1] = X[j]; X[j] = asztal; } } }
10.)
Beillesztéses rendezés A módszer lényege: - Egyetlen elem mindig rendezett - Ha van egy rendezett részsorozatunk, abba mindig be tudunk illeszteni egy új elemet. for(int i = 2; i <= n; i++){ int j = i - 1; while(j >= 1 && X[j -1] > X[j]){ int asztal = X[j-1]; X[j-1] = X[j]; X[j] = asztal; } } Megjegyzés: Az egyszerű cserés rendezésnél és a minimum-kiválasztásos rendezésnél távoli elemeket cserélünk, ami az esetleges korábbi, más szempont szerinti rendezettséget elrontja. A buborékos rendezés és a beillesztéses rendezés esetén viszont mindig csak szomszédos elemeket cserélünk, így ezek a korábbi szempont szerinti rendezettséget megtartják az új szemponton belül, egymás utáni többszöri elvégzésükkel tehát alkalmasak több szempont szerinti rendezésre is. Először a legutolsó szempont szerint rendezünk, majd a főszempont felé haladunk a rendezések során.
Klemand
322.oldal
2016
Alapvető algoritmusok Java nyelven
Függelék 11.)
Két szempont szerinti rendezés Tömblisták esetében, ha egy fő- és egy mellékszempont szerint is kell rendeznünk, akkor egyszerre is figyelhetjük a két szempontot. String típusú tulajdonságok összehasonlítására a relációjelek nem alkalmasak, helyettük az equals és a compareTo műveleteket kell alkalmaznunk. Egyszerű cserés rendezés egy fő- és mellékszempont szerint: tomblistaTipus asztal; for(int i = 1; i <= n-1; i++){ for(int j = i + 1; j <= n; j++){ if((tomblista.get(j-1).foszempont.compareTo(tomblista.get(i-1).foszempont) < 0) || (tomblista.get(j-1).foszempont.equals(tomblista.get(i-1).foszempont) && (tomblista.get(j-1).mellekszempont.compareTo(tomblista.get(i-1).mellekszempont) < 0))){ asztal=tomblista.get(i-1); tomblista.set(i-1 , tomblista.get(j-1)); tomblista.set(j-1 , asztal); } } }
12.)
A leghosszabb T tulajdonságú elemsorozat A leghosszabb T tulajdonságú elemsorozat kezdőindexének és hosszának meghatározása az n elemszámú egész X tömbben int aktTkezdet = -1; //irreális kezdőérték int aktThossz = 0; int maxTkezdet = -1; //irreális kezdőérték int maxThossz = 0; for(int i = 1; i <= n; i++){ if(T(X[i -1])){ if(aktTkezdet == -1){ aktTkezdet = i; } aktThossz++; if(aktThossz > maxThossz){ maxTkezdet = aktTkezdet; maxThossz = aktThossz; }else{ aktTkezdet = -1; aktThossz = 0; } }
Klemand
323.oldal
2016
Alapvető algoritmusok Java nyelven
Függelék 13.)
Ismétlés nélküli véletlen-sorozat készítése k darab véletlenszerű egész szám előállításaz m és n (n-m > k) egész számok között a határokat is megengedve /*Először az [m;n] intervallumot átkonvertáljuk a [0 ; n-m] intervallumra, és készítünk egy logikai tömböt, melyben azt tároljuk, hogy az aktuális véletlenszámot kiválasztottuk-e már korábban. Így először minden elemét hamisra állítjuk:*/ boolean[] volt = new boolean[n – m + 1]; for(int i = 0; i <= n - m; i++){ //Az előállított véletlenszám 0 is lehet, és n-m is. volt[i] = false; } /*Előállítjuk a k darab egyedi véletlenszámot a [0 ; n-m] intervallumban és eltároljuk a veletlentomb tömbben:*/ int[] veletlentomb = new int[k]; int db = 0; while(db < k){ veletlenszam= (int) ((Math.random() * (n-m + 1))); if(!volt[veletlenszam]){ //Az előállított véletlenszámmal indexelünk, ami 0 is lehet, és n-m is. volt[veletlenszam] = true; db++; veletlentomb[db - 1] = veletlenszam; } } //Az előállított véletlenszámokat visszakonvertáljuk az [m ; n] intervallumba: for(int i=1; i<=db;i++){ veletlentomb[i – 1] += m; }
Klemand
324.oldal
2016
Alapvető algoritmusok Java nyelven
Függelék 14.)
Osztályozás Egy tömblista elemeinek osztályokba sorolása egy adott tulajdonság alapján, és az osztályok számosságának meghatározása (Pl. egy város lakosai között milyen vezetéknevek szerepelnek, és melyikből hány darab van.) int i, j; for (i = 1; i <= tomblista.size(); i++) { String aktTul= tomblista.get(i-1).tul; j = 1; while (j <= osztalylista.size() && !(aktTul.equals(osztalylista.get(j - 1).tul))) { j++; } if (j <= osztalylista.size()) { osztalylista.get(j - 1).db++; } else { osztalylista.add(new OsztalylistaTipus(aktTul, 1)); } } Az osztalylista konstruktora: static ArrayList osztalylista = new ArrayList<>(); public static class OsztalylistaTipus{ private final String tul; //végleges érték private int db; //változó érték public OsztalylistaTipus(String tulBe; int dbBe){ tul = tulBe; db = dbBe; } }
Klemand
325.oldal
2016