Java SE 8 API dokumentációja

Utolsó módosítás: 2016.10.05.

Feladatok

A feladatok megoldásában használjuk a láthatósági módosítókat (public, private)!

  1. Írjunk egy math.Matrix osztályt, melyben néhány mátrixműveletet valósítunk meg! Ezek az alábbiak:

    1. A plus() osztályszintű metódus paraméterül vár két kétdimenziós tömböt, melyeket összeadja. Az eredményt egy harmadik tömbben adja vissza.

      Az \(A\) és a \(B\) mátrix \(C\) összegét megkapjuk a \(C_{ij} = \sum_{k=0}^{n} A_{ik} + B_{kj}\) kiszámításával minden \(i\), \(j\)-re.

    2. Haladóknak. Hasonlóan a plus() metódushoz, készítsünk egy multiply() metódust, mely paraméterül vár két kétdimenziós tömböt, és a szorzás eredményét egy új tömbben adja vissza!

      Az \(A\) és a \(B\) mátrix \(C\) szorzatát megkapjuk a \(C_{ij} = \sum_{k = 0}^n A_{ik} \times B_{jk}\) kiszámításával minden \(i\), \(j\)-re.

  2. Készítsünk egy util csomagban található IntList osztályt, mely egészekből álló listát valósít meg tömbbel! Legyen

    1. Egy egészeket tartalmazó tömb adattagja.

    2. Egy konstruktora, mely nem vár paramétert.

    3. Egy konstruktora, mely egy másik IntList-et vár paraméterül. A paraméterbeli tömböt használjuk inicializálásra, a tartalmát le kell másolni elemről-elemre.

    Az IntList mérete mindig pont akkora, hogy el tudja tárolni a számokat. Tehát add() hatására megnő eggyel, míg remove() hatására összemegy eggyel. Az új, nagyobb vagy kisebb tömb előállításához használjuk a java.utils.Arrays.copyOf() statikus metódust!

    Az IntList rendelkezzen az alábbi metódusokkal:

    1. size(), mely megadja az eltárolt egészek számát.

    2. get(), mely visszaadja az első számot.

    3. get(), mely visszaadja az adott indexen tárolt egész számot (túlterhelt változat).

    4. add(), mely egy egész számot szúr be a lista végére.

    5. add(), mely egy egész számot egy megadott pozícióra szúr be (túlterhelt változat).

    6. toString(), mely szöveggé alakítja a listát. Az elemek vesszővel elválasztva szerepelnek a szövegben.

    7. fromString() statikus metódus, mely szövegből készít listát. A szövegben a számokat szóközzel elválasztva adjuk meg. Amennyiben nem sikerült a számok kiolvasása a szövegből, adjunk vissza null-t. Például jó paraméter az 1 3 5 szöveg.

    Szorgalmi feladat. Valósítsuk meg az alábbi metódusokat is.

    1. set(), mely egy adott indexen lévő számot felülír egy megadott számmal.

    2. remove(), mely eltávolítja az utolsó elemet.

    3. remove(), mely eltávolítja az adott indexen található számot, és visszaadja az eltávolított számot (túlterhelt változat).

    4. indexOf(), mely visszaadja egy paraméterül kapott egész első előfordulásának indexét. Ha az egész nincs a listában, adjunk vissza \(-1\)-et.

    5. concat(), mely a lista végére fűz egy másik IntList-et.

  3. Írjunk programot, mely sorokat olvas be a szabványos bemenetről, amíg tud! Ezután fordított sorrendben írja ki a sorokat a szabványos kimenetre! A sorok eltárolására használjuk a java.util.LinkedList<A> osztályt!

    Megjegyzés:

  4. Szorgalmi feladat. Írjunk programot, mely beolvas egy sort a szabványos bemenetről, és eldönti, hogy benne szereplő zárójelek kiegyensúlyozottak vagy sem! Például a "[()]{}{[()()]}" bemenetre logikai igazat kell visszaadnia, de a "[()" vagy a "[)]" bemenetre már hamisat.

    Megjegyzés: használjunk egy vermet, például a java.util.Stack osztályt.

  5. Haladóknak. Készítsük el a util.IntTree osztályt, mely egész számokat rendezetten tároló bináris fát megvalósít meg! A fa minden csúcsának nulla, egy vagy két gyermeke lehet és legfeljebb egy szülője. Ha egy csúcsnak nincs szülője, úgy az a csúcs a fa gyökere.

    A láncolást egy-egy IntTree objektumra mutató referenciákkal oldjuk meg, melyek egy csúcs bal és jobb oldali gyerekére mutatnak. Emellett minden csúcs egy egész számot is tárol.

    Valósítsuk meg az alábbi műveleteket az IntTree osztályon belül:

    Készítsünk programot, mely egész számok sorozatát rendezi a bináris fa segítségével! A program sorban bekér egész számokat, melyeket beszúrja a fába. Ha elfogytak a számok, úgy a fa inorder bejárásával megkapjuk a rendezett sorozatot. Írjuk is ki a képernyőre a rendezett sorozatot!