n
parancssori paraméter.
A parancssori paraméterek lengyel formában adott kifejezést írnak le. A kifejezésben a négy alapművelet szerepelhet. Számítsd ki az eredményt.
Pl. 1 2 3 * +
eredménye (3 * 2) + 1
, azaz 7
Az alábbiak feladatok úgy is megoldhatók, hogy a “parancssori paraméterek” helyett a sztenderd bemenetről olvassuk be a paramétereket.
A parancssori paraméterek a sík pontjait írják le. Add meg, melyik van legtávolabb az origótól.
Írd ki a parancssori paramétereket egy sorban úgy, hogy a paraméterekben az egymás utáni ‘a’ betűket egyetlen ‘a’ betűre cseréled.
StringBuilder
osztály felhasználásával elkészítve az új szavakatA parancssori paraméterek emberek neveit tartalmazzák (egy családnév + egy utónév). Írd ki az emberek neveit családnév szerint csoportosítva.
Írd ki a Pascal-háromszög első n
sorát. Az n szám parancssori paraméter.
Az első két paraméter, n
és m
, egy tábla méreteit leíró két egész szám. A további paraméterpárok a táblára leadott lövések koordinátái. Rajzold ki a táblát úgy, hogy X
jelöli a találatokat, .
pedig a többi mezőt.
Az első parancssori paraméter egy szöveg, a többi paraméterpár pedig egy-egy karaktert tartalmaz. Cseréld le a szövegben a párok első felében szereplő karaktereket a másodikakra.
Egy egyenes kieséses tornát szimulálunk. A parancssori paraméterek a következőképpen néznek ki. Az első paraméter a játékosok száma (n
), ez kettő valamelyik hatványa. A következő n
paraméter a játékosok neveit írja le. A következő n/2
paraméter az első kör eredményeit írja le: a szomszédos játékosok játszanak, 1
jelenti azt, hogy az első játékos győz, 2
azt, ha a második. Az így kialakuló n/2
játékos közötti n/4
meccs eredményeit, majd az abból kijövő n/8
, n/16
stb. mérkőzés eredményeit a további paraméterek írják le.
A program írja ki a torna mérkőzéseit fordulónként vizualizálva (lásd a példát), illetve meccsekre bontva is. A fordulónkénti ábrázolás első oszlopában az összes játékos a felsorolt sorrendben található meg. A második oszlopban már csak a játékosok fele szerepel, akik győztek az első fordulóban stb.
Példa: ha a bemenet 8 J1 J2 J3 J4 J5 J6 J7 J8 1 1 1 2 1 2 2
akkor a kimenet alakja az alábbi legyen:
J1 J1 J1 J8
J2
J3 J3
J4
J5 J5 J8
J6
J7 J8
J8
a kimenet értelmezéséhez:
1. fordulo, J1-J2 gyoztese: J1
1. fordulo, J3-J4 gyoztese: J3
1. fordulo, J5-J6 gyoztese: J5
1. fordulo, J7-J8 gyoztese: J8
2. fordulo, J1-J3 gyoztese: J1
2. fordulo, J5-J8 gyoztese: J8
donto, J1-J8 gyoztese: J8
Készíts egy szervert és egy klienst. A szerver induljon el egy porton (ami parancssori paraméterként adott), a kliens csatlakozzon hozzá, és küldjön át egy üzenetet. A szerver írja ki az üzenetet a sztenderd kimenetére.
A szerver küldje vissza a kliensnek az üzenetet, és a kliens írja ki azt.
A szerver paraméterként kapjon egy szöveget is. A kliens küldjön át egy számot; a szerver egy sorban válaszoljon egy olyan szöveggel, amely a paraméterként kapott szövegét ennyiszer tartalmazza.
n
, akkor milyen nagyságrendű lépést tesz meg (és mekkora memóriát foglal) ez a megoldás?Van két hatékony megoldás is, ami természetesen adódik, az egyik hasonlít az előzőleg említett megoldásra, a másik nem.
A kliens küldjön át sorban egész számokat a szervernek. A számokat a kliens egy fájlból olvassa be. A szerver mindegyik számra meghív egy függvényt, ami egész számot készít (mondjuk n ↦ 2*n+1
), majd az eredményt visszaküldi a kliensnek. A kliens a visszakapott eredményeket egy fájlba írja ki sorban. Ha a 0
szám következne a kliensoldalon, akkor a kliens kilép.
A kliens átküld egy fájlnevet a szervernek. A szerver küldje vissza a fájl tartalmát soronként, ha a fájl létezik, különben pedig egy szöveges hibaüzenetet.
A szerver tárolja el, hogy hány kliens kapcsolódott már hozzá. Amikor egy kliens kapcsolódik, a szerver írja ezt vissza neki, majd rögtön bontsa a kapcsolatot, és várakozzon újabb kliensre.
A szerver tároljon el egy számot, ennek értéke legyen kezdetben 0
. Miután kapcsolódott, a kliens egymás után egész számokat küld át a szervernek; a szerver a kapott értékkel megnöveli a benne tárolt értéket, és ezt át is küldi a kliensnek. A kliens ki is léphet (pl. ha nullát küldene), ekkor a szerver kezdjen várakozni egy újabb klienstől jövő kapcsolatra. A tárolt szám maradjon meg, ne törlődjön.
A kliens kapcsolódjon a 12345
porton futó szerverhez. Ez egy fájlból portszámokat olvas fel, és sorban átküldi őket a kliensnek. Amikor a kliens megkap egy portszámot, csatlakozik az azon a porton futó szerverhez (közben megtartja a kapcsolatát az első szerverrel). Ez a szerver egy fájlból néhány számot olvas fel, ezeket átküldi a kliensnek, majd bontja vele a kapcsolatot. A kliens minden megkapott szám fogadása után kiírja egy fájlba az összes eddig megkapott szám összegét.
A szerverhez kapcsolódjon két kliens egymás után (ugyanazon a porton) úgy, hogy a szerver mindkét kapcsolatot egyszerre tartja nyitva. A kliensek először egy-egy sorban a saját nevüket küldik át, majd felváltva írhatnak be egy-egy sornyi szöveget. A beírt üzeneteket küldje át a szerver a másik kliensnek ilyen alakban: <másik kliens neve>: <másik kliens üzenete>
. Ha valamelyik kliens bontja a kapcsolatot, akkor a szerver zárja be a másik klienssel a kapcsolatot, és lépjen ki.
Ha az egyik kliens bontja a kapcsolatot, akkor a szerver várakozzon egy újabb kliensre, aki kapcsolódás után átveszi az előző helyét. Természetesen az új kliens is először a saját nevét küldi át.
A porton tetszőlegesen sok kliens kapcsolódhat, és bármikor ki is léphetnek. A szerver sorban engedi szóhoz jutni a klienseket, azonban az üzeneteket nem azonnal küldi el mindegyik másik kliensnek. Ehelyett a szerver összegyűjti az üzeneteket, és csak akkor küldi el az adott kliens számára szóló üzeneteket, amikor az éppen szóhoz jut.
Készíts programot, ami párhuzamosan indít két szálat, amelyek a Hello és a világ szövegeket írják ki felváltva.
A szálak most karakterenként írják ki a szövegeket.
Mint a.
, de működjön jól a program.
Két kecske egy szakadékon átívelő palló két oldalára ér. A palló n hosszú (n parancssori paraméter), a közepén találkoznak. A kecskék 0.5
és 2 mp
közötti, véletlenszerű időközönként öklelnek egyet a másikon, így eggyel odébb kerülnek. Mindkét kecskének az a célja, hogy kilökje a másikat a palló túlvégén. A sztenderd kimenetre írj ki minden öklelést, illetve azt, hogy melyik kecske jutott át a pallón.
Készíts telnet klienst, ami párhuzamosan képes továbbítani a szerver által küldött üzeneteket a sztenderd kimenetre, illetve a sztenderd bemeneten érkező üzeneteket a szerverhez.
Készíts olyan chat alkalmazást, amelyben a két kliensnek nem kell egymásra várnia soronként, hanem bármikor beszélhetnek egymáshoz, és ez azonnal kiíródik a másik kliensnél.
Készíts chat szervert, amelyhez tetszőleges számú kliens kapcsolódhat, illetve bármikor bonthatják is a kapcsolatot. Minden kliens először a nevét közli egy sorban. A kliensek bármikor beszélhessenek, ami azonnal íródjon ki minden kapcsolódott kliensnél.
A szerver, ha két parancssori paramétert kap, akkor a megadott gépen/porton levő másik szerverhez kapcsolódik, és névként “kliens” szerver nevet küld át; ebből a másik szerver tudja, hogy szerver kapcsolódott hozzá. A rendszer továbbra is működjön chat-szerverként, azaz bármelyik szerver bármelyik kliense üzenetét kapja meg mindegyik olyan kliens, aki a rendszerbe tartozik.
Írj egyszerű HTTP szervert. Ehhez ismerni kell a HTTP protokollt, amelyet el lehet olvasni a protokoll dokumentációjából. Ehelyett most kezeld a protokollt fekete dobozként: a szervert úgy készítsd el, hogy megfigyeled egy valódi szerver működését (pl. www.elte.hu
), és utánzod azt.
Készíts olyan programot, ami egy fájlba véletlenszerűen beleír Integer
és Double
objektumokat, összesen száz darabot.
Integer
és hány Double
volt a fájlban, és mi az összegük.Készíts olyan osztályt, amely egy egész számokat tartalmazó bináris fát ábrázol. A fa legyen a lehető legegyszerűbb szerkezetű: csupán három adattag kell hozzá, valamint a hozzájuk tartozó getterek/setterek és két konstruktor.
ObjectOutputStream
segítségével, majd töltsd be ObjectInputStream
-mel.
Készíts RMI számológépet. Jegyezz be egy olyan szervert, amely egy számot tárol (a számológépen kijelzett szám), és a számológépek szokásos műveletei érhetőek el rajta (összeadás, szorzás stb.). Mindegyik művelet első operandusa a tárolt szám, a többi operandust meg kell adni a számológépnek. A műveletek eredménye lesz az új tárolt érték, valamint a műveletek visszatérési értéke is ez.
LottoInterface
egyetlen függvény létét írja elő: a boolean nyeroszamE()
megadja, hogy az adott számgolyó nyerőszámot takar-e.LottoDeploy
program első paramétere azt adja meg, összesen hány szám lesz (pl. 90
), a második paramétere pedig azt, hogy hány nyerőszám (pl. 5
). A LottoDeploy
indítása előtt (ugyanabban a könyvtárban!) futtatni kell az rmiregistry
programot, amely a katalógusszolgáltatást biztosítja.LottoDeploy
elkészíti a megfelelő számú számgolyót, és bejegyzi őket különböző nevekre a katalógusba, amelyet az 12345
porton indít el.LottoDeploy
milyen nevekre jegyezte be a számgolyókat, majd találd meg a nyerőszámokat.
LottoDeploy
véletlenszerűen sorsolja ki a nyerőszámokat, ezért újraindítás után más lesz az eredmény.LottoDeploy
implementációt. Ez használjon külső névjegyzéket. Minden esetben működjön jól a program, pl. 10
-ből 10
nyerőszám esetén is.logins
táblát, és abban felvesz néhány felhasználónevet és hozzá tartozó jelszót. (Biztonságos rendszerben nem magát a jelszót tárolnánk.)kosarba <termék neve> <mennyiség>
veglegesit
eldob
kosarbol <termék neve> <mennyiség>
torol <termék neve>