|
|||
SörszámlaA kocsmai számlák már jóval a számítógépek megjelenése előtt a mindennapok részei voltak. Az emberek hajlamosak azt gondolni, hogy miután kiegyenlítettek egy számlát, az már nem több, mint egy idétlen papírdarab, amely nem is érdemel figyelmet. A valóság ezzel szemben az (és ez még az informatikus társadalomnak is elkerüli a figyelmét), hogy a számlán szereplő irkafirka olyan erősen formalizált és gyakran nem triviális szövegeket tartalmaz, amelyek kiválóan felhasználhatók mindenféle formális nyelvi alkalmazásban és elemzésben. A számlák sorokból, azok pedig karakterekből állnak. Egy sor vagy egy „áras sor”, vagy pedig egy „fésűs sor”. Az áras sor egy pozitív egész számmal (egy étel vagy ital árával) kezdődik, amelyet opcionálisan függőleges vonalak követhetnek. A sor összára az alábbi módon számítható: ha vannak vonalak, akkor a sor összára a sor elején szereplő ár megszorozva a vonalak számával, különben a sor összára egyenlő a sor elején szereplő árral. A fésűs sor kizárólag függőleges vonalakból áll (hasonlóan a fésűs fogakhoz, innen az elnevezés). Minden vonal egy sört jelképez, amelyet a vendég vásárolt. A fésűs sor összára egy sör ára megszorozva a sorban szereplő vonalak számával. Ebben a feladatban egy sör ára 42 egység. A számla végösszege a számlán szereplő sorok árainak az összege. Az alábbiakban ismertetjük annak az úgynevezett Fésűs számla nyelvnek a formális definícióját, amely tudomásunk szerint az első ilyen nyelv az informatika történetében. Ebben a feladatban a számlák a Fésűs számla nyelven lesznek megadva.
A fenti specifikációban azok a karakterek, amelyek ténylegesen megjelennek a számlán,
aposztrófok között szerepelnek, így különböztetve meg őket a specifikáció többi részétől. A
A bemenet specifikációja
A bemenet sorok nem üres sorozata, amelyek egy számlát írnak le. Minden sor vagy egy áras
sor, vagy egy fésűs sor. Az áras sor egy 1 000-nél nem nagyobb pozitív egész számmal
kezdődik, amelyet közvetlenül követ egy vessző és egy mínuszjel. A mínuszjelet opcionálisan
követheti egy vagy több függőleges vonal. A fésűs sor egy vagy több függőleges vonalból áll,
semmilyen más szimbólumot nem tartalmaz. A számlán mindenhol a függőleges vonalat a
A kimenet specifikációja
A kimenetre egyetlen számot kell kiírni: a számla végösszegét, felkerekítve a következő
10-esre. A számot az 1. példa bemenet
Az 1. példa bemenethez tartozó kimenet
2. példa bemenet
A 2. példa bemenethez tartozó kimenet
3. példa bemenet
A 3. példa bemenethez tartozó kimenet
Eredeti feladat |
|||
Debreceni Egyetem, Informatikai Kar, v. 2024.09.30. |