HW 11 - Zpracování strukturovaného textu

Termín odevzdání 12.01.2025 7:00
Bodový zisk 8b (4+4)
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é (např. <a></a>, <td></td>) nebo nepárové (např. <d/>, <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 - pub03

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 - pub04

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: hw11_-_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: 2024/09/18 15:34 by nentvond