Warning
This page is located in archive.

HW 11 - Zpracování strukturovaného textu

Termín odevzdání 9.1.2021 23:59 CEST
Bodový zisk 6b (3+3)
Počet uploadů 10
Typ zadání volitelné

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.

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.)

Odevzdání

Veřejné příklady + Makefile: hw10_-_xml.zip

Povinné zadání
Název v BRUTE HW11
Odevzdávané soubory main.c
Kompilace pomocí clang -pedantic -Wall -Werror -std=c99
courses/b0b99prpa/hw/hw11.txt · Last modified: 2020/11/16 22:05 by viteks