Programozó versenyek

DEIK Regionális Programozó Csapatverseny, gyakorló feladatsor

2012. október 26. 20:00 – 2012. november 23. 0:00

Java vagy C++?

A Java- és a C++-hívők órákig tudják egymásnak bizonygatni, hogy az ő programozási nyelvük a legjobb. A javások azt mondják, hogy az ő programjaik tisztábbak és kevésbé hibaérzékenyek, míg a C++-osok csak nevetnek rajtuk, mert nem tudnak példányosítani generikusokat tartalmazó tömböt, vagy azt mondják nekik, hogy a programjaik lassúak, és hosszú a forráskódjuk.

Egy másik érdekes kérdés, amiben a javások és a C++-osok sose tudtak megegyezni, az azonosítók elnevezése. Javában egy többszavas azonosítót a következőképpen állítunk elő: az első szót kisbetűvel kezdjük, a többit pedig nagybetűvel, elválasztójelet nem használunk. Az összes többi betű kisbetű. Példák Java azonosítóra: javaIdentifier, longAndMnemonicIdentifier, name, nEERC (a Northeastern European Regional Contest rövidítése).

Velük ellentétben a C++-osok csak kisbetűket használnak az azonosítóikban. A szavakat az aláhúzás („_”) karakterrel választják el egymástól. Példák C++ azonosítóra: c_identifier, long_and_mnemonic_identifier, name (látható, hogy ha csak egy szó van, a javások és a C++-osok egyetértenek), n_e_e_r_c.

Egy olyan fordítóprogramot írsz, amely C++ nyelvű programokat szeretne Javára fordítani és viszont. A lefordított programban az azonosítókat természetesen az adott nyelv szabályai szerint kell formázni – máskülönben senkinek sem fog tetszeni a fordítód.

Először az azonosítófordító rutint szeretnéd megírni, amely adott azonosító esetén megállapítja, hogy az Java-beli vagy C++-beli azonosító-e, és lefordítja a másik dialektusba. Ha egyik sem, akkor a rutinnak hibát kell jeleznie. A fordításnak meg kell őriznie a szavak sorrendjét, kizárólag a betűk nagyságát módosíthatja, és/vagy az aláhúzásjelek hozzáadását/törlését végezheti.

A bemenet specifikációja

A bemenet számos tesztesetet tartalmaz, amelyek mindegyike egy sorból áll, és minden sorban egy azonosító szerepel. Az azonosítók az angol ábécé betűiből és aláhúzásjelekből állnak. Hosszuk nem haladja meg a 100-at.

A kimenet specifikációja

Minden tesztesetre egy sort kell a kimenetre írni:

  • ha a bemeneten szereplő azonosító Java nyelvű, akkor a C++-os változatát,
  • ha a bemeneten szereplő azonosító C++ nyelvű, akkor a javás változatát,
  • ha egyik sem, akkor az „Error!” szöveget.

Példa bemenet

  1. long_and_mnemonic_identifier
  2. anotherExample
  3. i
  4. bad_Style
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. longAndMnemonicIdentifier
  2. another_example
  3. i
  4. Error!
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.