Kihagyás

Scala zárthelyi dolgozat

2025 tavasz - MINTA csoport, 20 perc

Általános tudnivalók és követelmények:

  • A ZH-n szintaktikailag helyes (fordítási hiba mentes) kódot várunk el, a fordítási hibás megoldással nem szerezhető pont.

  • A megoldás csak deklaratív programozási konstrukciókat tartalmazhat, inkrementális kód használatával a ZH-n nem szerezhető pont.

  • A kikommentezett kódot a javítás során figyelmen kívül hagyjuk.

  • A ZH során hallgatótársaktól származó vagy AI által generált kód felhasználása nem megengedett (ilyen esetben az érintett hallgatók a ZH-ra 0 pontot kapnak), de az interneten elérhető szakmai forrás (pl. dokumentáció, jegyzet) használható.

  • Minden a feladat megoldásához tartozó kódot egyetlen .scala kiterjesztésű fájlban kell elhelyezni, csak ezt az egy fájlt kell beadni a Bírón: https://biro3.inf.u-szeged.hu/

  • Minden osztály a default package-en belül legyen megvalósítva, a publikus osztály neve a NEPTUN kódod legyen.

  • A feladatleírásban meghatározott elnevezéseken, metódusdefiníciókon, változóneveken változtatni nem szabad.

  • Feladatbeadás kötelező, az üresen hagyott beadási felület igazolatlan hiányzásnak minősül.

1. feladat

Készíts egy case class-t Komplex néven, amely komplex számokat reprezentál (valós számokból álló pár). Készítsd el az alábbi függvényeket a case class-ban:

  • szoroz - két komplex számot vár paraméterül, és a szorzatukkal tér vissza:
    (r_1, i_1) * (r_2, i_2) = (r_1 * r_2 - i_1 * i_2, r_1 * i_2 + r_2 * i_1) [4 pont]

A megírt függvényeket hívd meg a main-ben tetszőleges paraméterekkel. [1 pont]

2. feladat

Készíts egy függvényt insertion néven, amely kettő paramétert vár: először egy egész értékeket tartalmazó listát, majd egy beszúrandó elemet. A függvény adja hozzá az elemet a listához, annak minden második elemét követően (tehát pl. [1, 2, 3, 4] és 5-ös érték esetén: [1, 2, 5, 3, 4, 5]). A függvényed legyen tail-recursive. A megoldásodban ne használj beépített listakezelő függvényeket. [4 pont]

A megírt függvényeket hívd meg a main-ben tetszőleges paraméterekkel. [1 pont]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// 1. feladat:
case class Komplex() { }

// 2. feladat:
object NEPTUNKODOD {

  // A megoldasok tesztelese
  def main(args: Array[String]): Unit = {

  }
}

A bíró

A megoldások továbbra is "kézzel" kerülnek kijavításra, a bíró csak előellenőrzést végez: a megoldás szintaktikailag helyes, illetve nincs-e benne imperatív konstrukció.

Segédfüggvények

A megoldás során használhatsz segédfüggvényeket és beágyazott függvényeket, hogy megkönnyítsd egy nagyobb funkció működését vagy definiálj újrafelhasználó részeket. Azonban bizonyos esetekben a feladatleírás tilthatja a magasabb rendű beépített függvények használatatát (pl. map, filter).


Utolsó frissítés: 2025-04-28 13:59:06