Zápočet 3.2.

Cílem semináře je seznámit posluchače s jazykem C#, prostředím platformy .NET a tvorbou aplikací s grafickým uživatelským rozhraním. Předpokládají se znalosti objektově orientovaného programování.
Oracions
Matfyz(ák|ačka) level I
Příspěvky: 12
Registrován: 30. 1. 2014 16:18
Typ studia: Informatika Mgr.

Zápočet 3.2.

Příspěvek od Oracions »

Naprogramujte pretty-printer JSONu. Ve vstupním souboru jsou bílými znaky oddělené tokeny. Soubor je jeden prvek, kde prvek může být buď string, což je řetezec ohraničený uvozovkami, pro jednoduchost bez mezer uvnitř, nebo integer, nebo pole (začíná a končí hranatými závorkami, uvnitř čárkami oddělené prvky), nebo objekt (začíná a končí složenými závorkami, uvnitř čárkami oddělené dvojice klíč:hodnota).

Například pro vstup:

Kód: Vybrat vše

{ "key1" : 21 , "key2" : [ "prvnipolozkapole" , "zadneMezery" ] }
bylo třeba na výstup vypsat:

Kód: Vybrat vše

{
   "key1" : 21 ,
   "key2" : [
        "prvnipolozkapole" ,
        "zadneMezery"
    ]
}
Zadání bylo vysvětleno do podrobností, dostali jsme několik testovacích souborů, na kterých také byla zkoušena funkčnost. Bylo třeba ošetřit i neplatné vstupy.
Pet

Re: Zápočet 3.2.

Příspěvek od Pet »

Ahoj,
29.1. byly rámečky

Ramecky

Vasim ukolem je naprogramovat interpreter jazyka, ktery slouzi k zobrazovani "ramecku" kolem retezcu.

Jazyk

Kazdy prikaz je na samostatnem radku.
V programu se mohou vyskytnout nasledujici prikazy:


// radek zacinajici dvema slashi je komentar, prazdne radky se ignoruji
//
// JAZYKOVE KONSTRUKTY
//////////////////////
// deklarace promenne
HBOX {identifikator}
VBOX {identifikator}
LABEL {identifikator} {string (do konce radku)}

// vlozeni prvku do "kontejneru"
ADD {identifikatorKontejneru} {identifikatorVkladanehoPrvku}

// vykresleni prvku na obrazovku
PRINT {identifikator}

Priklad programu 1:

Kód: Vybrat vše

LABEL paulus Roman Paulus
LABEL ihnacak Peter Ihnacak
LABEL babica Jiri Babica

VBOX vert
ADD vert babica

HBOX hor
ADD hor paulus
ADD hor ihnacak
ADD vert hor

ADD vert babica

PRINT vert
Vystup programu 1:

Kód: Vybrat vše

+----------------------------+
|Jiri Babica                 |
+----------------------------+
|+------------+-------------+|
||Roman Paulus|Peter Ihnacak||
|+------------+-------------+|
+----------------------------+
|Jiri Babica                 |
+----------------------------+
Priklad programu 1:

Kód: Vybrat vše

LABEL paulus Roman Paulus
LABEL ihnacak Peter Ihnacak
LABEL babica Jiri Babica

VBOX vert
ADD vert babica

HBOX hor
ADD vert hor

ADD vert babica

PRINT vert
Vystup programu 1:

Kód: Vybrat vše

+-----------+
|Jiri Babica|
+-----------+
+-----------+
|Jiri Babica|
+-----------+
Okrajove podminky

spatny pocet argumentu, problem s otevrenim vstupniho souboru - "Argument error"
nedeklarovana promenna - "Line 21: Variable 'A' not declared"
redeklarace promenne - "Line 21: Variable 'A' redeclared"
cyklus (vypsat az pri PRINTu, radka 21 obsahuje PRINT) - "Line 21: Cycle detected"
prirazeni do labelu, neznama operace nebo spatny pocet argumentu operace - "Line 21: Operation error"
nevyskytuji se zadne "multi-line" labely, tj. cely retezec je na jednom radku
pokud je prvek prazdny - tj. label nulove delky nebo kontejner s nulovym poctem prvku, tak se na vystup nevypisuje (viz priklad 2)

Poznamky

vstupni soubor se vejde do pameti
"platno", na ktere budete kreslit, se vejde do pameti
pozor, jedna promenna (napr. label) muze byt pouzita v programu nekolikrat - napr. vlozena do stejneho kontejneru vicekrat.
rozmery HBOXu a VBOXu jsou vzdy co nejmensi, ale tak, aby to stale byl obdelnik
polozka v HBOXu i VBOXu je vzdy zarovnana doleva a nahoru.
identifikator je retezec bez bilych znaku
Odpovědět

Zpět na „NPRG035 Jazyk C# a platforma .NET“