HW 10 - Zpracování strukturovaného textu

Termín odevzdání 21.12.2019 23:59 CEST
Volitelné zadání 4b
Bonusové zadání 4b
Počet uploadů 10

Cílem úlohy je provést analýzu strukturovaného textu (XML) ve formě textového souboru obecné délky na standardním vstupu programu.

V úloze uvažujeme pouze slova bez diakritiky.

Volitelné zadání

  • Ze standardního vstupu přečtěte textový soubor obecné velikosti.
  • Informace v textovém souboru je strukturována pomocí XML značek.
  • XML značky jsou párové (<a></a>, <td></td>) nebo nepárové (<b/>, <img/>). Ve vstupním textu se mohou objevit oba druhy.
  • Párovost / nepárovost značek zde není určena definicí, ale pouze zápisem (tj. kombinací znaků '<', '>' a '/').
  • Ověřte, že text je správně strukturován (validní).

Příklady

Příklad 1 - pub00

Standardní vstup (stdin) Očekávaný výstup (stdout) Návratová hodnota
<a>
  <b></a>
</b>
text nevalidni
100

Příklad 2 - pub01

Standardní vstup (stdin) Očekávaný výstup (stdout) Návratová hodnota
<a>
  <b>10</b>
  <c>ahoj svete</c>
  <d/>
  <d/>
</a>
pocet tagu: 5
text validni
0

Příklad 3 - pub02

Standardní vstup (stdin) Očekávaný výstup (stdout) Návratová hodnota
<table>
  <tr>
    <td>10</td>
    <td>20</td>
  </tr>
  <tr>
    <td><img/></td>
  </tr>
</table>
pocet tagu: 7
text validni
0

Bonusové zadání

  • XML značky ve vstupním textu obsahují parametry (např. <td valign=“top”>).
  • Mezi názvem značky a parametrem je právě jedna mezera, za názvem parametru následuje znak '=' a hodnota parametru v uvozovkách.
  • V textu se mohou vyskytovat specialni XML značky <equation>, <add> a <sub>. Vypočtěte výraz definovaným XML dokumentem.

Příklady

Příklad 1 - opt01

Standardní vstup (stdin) Očekávaný výstup (stdout) Návratová hodnota
<table>
  <tr>
    <td valign="top">10</td>
    <td>20</td>
  </tr>
  <tr>
    <td><img src="img.jpg"/></td>
  </tr>
</table>
pocet tagu: 7
text validni
0

Příklad 1 - opt02

Standardní vstup (stdin) Očekávaný výstup (stdout) Návratová hodnota
<equation variable="a">
  <add value="10"/>
  <add value="20"/>
  <sub value="40"/>
</equation>
<equation variable="b">
  <add value="30"/>
  <add value="40"/>
  <sub value="40"/>
</equation>
a=-10
b=30
pocet tagu: 8
text validni
0

(Další příklady jsou v poskytnutém archivu.)

Varianty

Veřejné příklady + Makefile: hw10.zip

Povinné zadání
Název v BRUTE HW10
Odevzdávané soubory main.c
Kompilace pomocí clang -pedantic -Wall -Werror -std=c99
courses/b0b99prpa/hw/hw10.txt · Last modified: 2019/12/06 14:36 by viteks