Neprihlásený používateľ |

Špecifikácia zadania


Cieľom zadania je napísať program v jazyku C, ktorý vypíše tabuľku s vypočítanými hodnotami zvolených aktivačných funkcií umelého neurónu. Aktivačná funkcia je matematický vzťah, pomocou ktorého sú transformované vstupné signály umelého neurónu na výstupný signál. Umelý neurón je základným stavebným prvkom neurónových sietí, ktoré v dnešnej dobe nachádzajú široké uplatnenie v strojovom učení, najmä v oblasti spracovania prirodzeného jazyka, detekcie objektov v obraze, generovania obrazu, biometrie a pod. V zadaní si precvičíte prácu s matematickými operáciami, desatinnými číslami, funkciami, cyklami a formátovaním výstupného textu.

Úloha

Vaša konzolová aplikácia napísaná v jazyku C bude fungovať v týchto krokoch:

  1. Spustenie skompilovaného programu z terminálu.
  2. Určenie režimu fungovania (načíta používateľ z klávesnice).
  3. Detekcia chybových situácií.
  4. Výpočet hodnôt aktivačných funkcií vo zvolenom režime:
    1. Automatický režim: vstupné hodnoty do aktivačných funkcií sa vygenerujú automaticky.
    2. Manuálny režim: vstupné hodnoty do aktivačných funkcií zadá používateľ z klávesnice.
  5. Výpis formátovanej tabuľky s výstupmi aktivačných funkcií.
  6. Ukončenie programu (štandardným návratovým kódom 0 z funkcie main).

Obrázok 1: Fázy činnosti programu

Neurónové siete v skratke

Strojové učenie (z angl. machine learning) je oblasťou umelej inteligencie, ktorá sa zaoberá vývojom algoritmov, ktoré sú schopné sa sami učiť z dát a na základe získaných poznatkov sú schopné robiť rozhodnutia bez zásahu človeka. Najvýznamnejším príkladom sú neurónové siete, ktoré stoja v pozadí súčasnej revolúcie v strojovom učení. Neurónové siete sú inšpirované biologickým nervovým systémom. Neurónová sieť je sada matematických algoritmov, ktoré vykonávajú operácie so vstupnými dátami. Zjednodušene si ich vieme predstaviť ako mriežku výpočtových jednotiek, tzv. neurónov, ktoré sú medzi sebou prepojené a posielajú si medzi sebou signály. Signál sa bežne šíri zo vstupu na výstup cez jednotlivé neuróny.


Obrázok 2: Zjednodušená architektúra neurónovej siete

Pomocou neurónových sietí vieme riešiť rôzne zložité problémy:

  • spracovanie prirodzeného jazyka (napr. ChatGPT)
  • rozpoznávanie vzorov
  • detekcia a sledovanie objektov na obrázku alebo vo videu
  • generovanie obrazu
  • predpoveď trendov
  • a mnohé iné

Obrázok 3: Klasifikácia obrazu rukou písanej číslice pomocou neurónovej siete

Ako príklad si môžeme zobrať jednoduchú neurónovú sieť, ktorej úlohou je klasifikovať vstupný obrázok, na ktorom sa nachádza rukou písaná číslica (viď Obrázok 3). Jednotlvé pixely obrazu predstavujú vstupné signály siete. Tieto signály sú zaslané do neurónov, ktoré ich spracujú a na výstupe získame informáciu o tom, aká číslica je prítomná na obraze. Každý neurón spracuje vstupný signál pomocou svojej aktivačnej funkcie. Aktivačným funkciám sa venujeme v časti Aktivačné funkcie.

Neuróny a aktivačné funkcie

Neurónové siete sú zložené z vrstiev neurónov, ktoré sú vzájomne prepojené. Informácie sa sieťou šíria zo vstupnej vrstvy smerom k výstupnej (pozn. pri trénovaní sa informácia šíri opačným smerom). Každá vrstva siete obsahuje neuróny. Neurón je základnou stavebnou jednotkou neurónovej siete. Každý neurón má svoju aktivačnú funkciu, ktorá predstavuje matematickú operáciu na prevod vstupného signálu na výstupný. Na obrázku 4 vidíme znázornenie biologického (hore) a umelého (dole) neurónu.


Obrázok 4: Biologický (hore) a umelý (dole) neurón.

Do neurónu môže vstupovať viacero signálov. Každý z nich má svoju váhu (z angl. weight), t.j. číslo, ktorým sa signál vynásobí. Vedomosti siete sú obsiahnuté práve v týchto váhach. Počas trénovania siete sa hodnoty váh neustále adaptujú tak, aby sieť spôsobovala, čo najmenšiu chybu pri svojich rozhodnutiach. Po vynásobení signálov váhami sa všetky vstupné hodnoty sčítajú a privedú sa na vstup aktivačnej funkcie. Aktivačná funkcia prevádza vstupné signály na nové hodnoty, ktoré sú väčšinou obmedzené v stanovenom intervale.

Aktivačná funkcia pridáva do výstupu nelinearitu a vďaka tomu vedia neurónové siete riešiť komplikované nelineárne problémy (napr. rozpoznávanie tváre v rôznom osvetlení, vzdialenosti, pod rôznym uhlom). Je množstvo druhov aktivačných funkcií. My sa budeme v tomto zadaní zaoberať nasledovnými aktivačnými funkciami:

  • $f_{1}$: binárna skoková funkcia
  • $f_{2}$: sigmoida
  • $f_{3}$: hyperbolický tangens
  • $f_{4}$: Gaussova funkcia
  • $f_{5}$: ReLU funkcia
  • $f_{6}$: Squareplus funkcia
Binárna skoková funkcia

Táto funkcia je zapísaná vzťahom $ f_{1}(x) = \begin{cases} 0 & \text{if }x < 0 \\ 1 & \text{if }x \geq 0 \end{cases}\ $


Obrázok 5: Binárna skoková funkcia

Sigmoida

Táto funkcia je zapísaná vzťahom $ f_{2}(x) = \dfrac{1}{1+e^{-x}}$


Obrázok 6: Sigmoida

Hyperbolický tangens

Táto funkcia je zapísaná vzťahom $ f_{3}(x) = \dfrac{e^x - e^{-x}}{e^x + e^{-x}}$


Obrázok 7: Hyperbolický tangens

Gaussova funkcia

Táto funkcia je zapísaná vzťahom $ f_{4}(x) = e^{-x^{2}}$


Obrázok 8: Gaussova funkcia

ReLU funkcia

Táto funkcia je zapísaná vzťahom $ f_{5}(x) = \begin{cases} 0 & \text{if }x \leq 0 \\ x & \text{if }x > 0 \end{cases}\ $


Obrázok 9: ReLU funkcia

Squareplus funkcia

Táto funkcia je zapísaná vzťahom $ f_{6}(x,b) = \dfrac{1}{2}\left(x+\sqrt{x^2 + b}\right)$. V tomto zadaní bude platiť $b=4$.


Obrázok 10: Squareplus funkcia

Vstup

Rozlišujeme dva režimy činnosti programu: automatický a manuálny. Po spustení programu používateľ vstupom z klávesnice určí, ktorý režim sa aktivuje.

Automatický režim

Ak používateľ zadá z klávesnice ako prvú hodnotu číslo 0.

Následne používateľ zadá z klávesnice 3 parametre (čísla oddelené bielymi znakmi):

  • $x_{start}$ - určuje začiatok intervalu, v ktorom sa budú generovať vstupy pre aktivačné funkcie
  • $x_{stop}$ - určuje koniec intervalu, v ktorom sa budú generovať vstupy pre aktivačné funkcie
  • $step$ - určuje krok, ktorý sa použije na generovanie čísiel. Tento parameter netreba ošetrovať, bude vždy zadaný ako kladné číslo.

Tieto parametre definujú interval $\langle x_{start},x_{stop} \rangle$, z ktorého sa s krokom $step$ automaticky vygenerujú vstupné hodnoty pre aktivačné funkcie.

Manuálny režim

Ak používateľ zadá z klávesnice ako prvú hodnotu číslo 1.

Následne používateľ zadáva z klávesnice čísla, až pokiaľ nebude načítaný nenumerický vstup (túto situáciu je ľahké odhaliť správnym použitím funkcie scanf). Tieto čísla predstavujú vstupné hodnoty pre aktivačné funkcie.

Všetky číselné hodnoty v automatickom aj manuálnom režime treba načítať ako double čísla.

Chybové situácie

V programe môžu za behu nastať tieto chybové situácie, ktoré je potrebné vyšetrovať v nasledujúcom poradí:

Situácia E1

Používateľ zadá neplatnú hodnotu pri určovaní režimu fungovania aplikácie. Platné hodnoty sú len 0 a 1. Všetky ostatné čísla a nenumerické vstupy sú považované za neplatné hodnoty. Ak sa odhalí táto situácia, program vypíše na štandardný výstup text E1 a okamžite ukončí svoju činnosť (funkcia main vráti 0). Žiadne iné výpisy nenastanú.

Príklady spustenia programu, kedy nastane situácia E1:
./z1
5
Poznámka: používateľ zadal ako prvú hodnotu 5 (akceptujú sa len hodnoty 0 alebo 1).
./z1
g
Poznámka: používateľ zadal ako prvú hodnotu znak g (akceptujú sa len hodnoty 0 alebo 1).

Situácia E2

Používateľ zadá v automatickom režime nenumerickú hodnotu pri načítavaní parametrov $x_{start}$, $x_{stop}$ a $step$. Platné hodnoty sú len číselné hodnoty. Ak sa odhalí táto situácia, program vypíše na štandardný výstup text E2 a okamžite ukončí svoju činnosť (funkcia main vráti 0). Žiadne iné výpisy nenastanú.

Príklady spustenia programu, kedy nastane situácia E2:
./z1
0 W 1 0.5
Poznámka: používateľ zadal $x_{start} =$ W.
./z1
0 -1 1 +
Poznámka: používateľ zadal $step =$ +.
Situácia E3

Používateľ zadá v automatickom režime také hodnoty $x_{start}$ a $x_{stop}$, pre ktoré platí $x_{start} \geq x_{stop}$. Ak sa odhalí táto situácia, program vypíše na štandardný výstup text E3 a okamžite ukončí svoju činnosť (funkcia main vráti 0). Žiadne iné výpisy nenastanú.

Príklady spustenia programu, kedy nastane situácia E3:
./z1
0 2 2 0.3
Poznámka: používateľ zadal $x_{start} = 2$ a $x_{stop} = 2$, t.j. platí $x_{start} \geq x_{stop}$.
./z1
0 -2 -4 1
Poznámka: používateľ zadal $x_{start} = -2$ a $x_{stop} = -4$, t.j. platí $x_{start} \geq x_{stop}$.

Výstup

Aplikácia má za úlohu formátovane vypísať tabuľku s hodnotami aktivačných funkcií $f_{1} ... f_{6}$, ktoré boli uvedené v časti Neuróny a aktivačné funkcie. Výpis musí smerovať na štandardný výstup (t.j. stdout). Vstupy pre aktivačné funkcie sa získajú v závislosti od zvoleného režimu. Ak bol zvolený automatický režim, vstupy sa vygenerujú zo zadaného intervalu. V prípade manuálneho režimu, vstupy zadá používateľ.

Špecifikácia výpisu

Každý riadok tabuľky má 7 stĺpcov a bude predstavovať hodnoty všetkých aktivačných funkcií pre jednu vstupnú hodnotu. Štruktúra riadku je nasledovná:

x f1 f2 f3 f4 f5 f6

kde:

  • x je hodnota vstupu zobrazená v stĺpci so šírkou 10 znakov, s presnosťou 2 desatinných miest a zarovnaná doprava
  • f1 f2 f3 f4 f5 f6 sú hodnoty aktivačných funkcií, pričom každá hodnota je zobrazená v stĺpci so šírkou 10 znakov, s presnosťou 2 desatinných miest a zarovnaná doprava

Dôležitá poznámka: na výpis a zobrazovanie stanoveného počtu desatinných miest používajte funkciu printf. Vypočítané číselné hodnoty žiadno neupravujte ani nezaokrúhľujte.

Ilustrácia formátu

Spustenie programu:

./z1
1 -3 0.5 -0.41 2 5 0 k

Výstup programu (biele znaky sú zámerne ukázané):

     -3.00      0.00      0.05     -1.00      0.00      0.00      0.30
      0.50      1.00      0.62      0.46      0.78      0.50      1.28
     -0.41      0.00      0.40     -0.39      0.85      0.00      0.82
      2.00      1.00      0.88      0.96      0.02      2.00      2.41
      5.00      1.00      0.99      1.00      0.00      5.00      5.19
      0.00      1.00      0.50      0.00      1.00      0.00      1.00

Poznámka: môžeme si všimnúť, že každý stĺpec má šírku 10 znakov. V každom stĺpci je hodnota zobrazená s presnosťou 2 desatinných miest. V každom stĺpci je hodnota zarovnaná doprava.


Obrázok 11: Vizualizácia formátu vypísanej tabuľky

Hodnotenie zadania

Odovzdávací systém otestuje a ohodnotí nasledovné oblasti funkcionality vášho programu. Na získanie bodov za konkrétny testovací scenár je nutné, aby testom prešli všetky testovacie prípady v danom scenári.

Testovacie scenáre
Scenár 1
Chybová situácia E1
1 b
Scenár 2
Chybová situácia E2
1 b
Scenár 3
Chybová situácia E3
1 b
Scenár 4
Automatický režim - kontrola správnosti hodnôt v tabuľke
3 b
Scenár 5
Manuálny režim - kontrola správnosti hodnôt v tabuľke
3 b
Scenár 6
Dodržanie formátu tabuľky (presnosť, zarovnanie, šírka stĺpca)
1 b
Súčet 10 b

Video

Video ukážka spustenia programu

Video zachytáva proces skompilovania zdrojového kódu prekladačom GCC a spustenia programu s rôznymi vstupmi.

Testovacie príklady

Scenár 1: Chybová situácia E1

Spustenie 1:
./z1

Vstup:

5

Výstup:

E1
Spustenie 2:
./z1

Vstup:

P 2 3 0.2

Výstup:

E1


Scenár 2: Chybová situácia E2

Spustenie 1:
./z1

Vstup:

0 v 3 0.11

Výstup:

E2
Spustenie 2:
./z1

Vstup:

0 0.23 x x

Výstup:

E2
Spustenie 3:
./z1

Vstup:

0 -3 m 1.5

Výstup:

E2


Scenár 3: Chybová situácia E3

Spustenie 1:
./z1

Vstup:

0 5 5 5

Výstup:

E3
Spustenie 2:
./z1

Vstup:

0 10 -2 0.3

Výstup:

E3
Spustenie 3:
./z1

Vstup:

0 -2.2 -2.3 0.2

Výstup:

E3


Scenár 4: Automatický režim

Spustenie 1:
./z1

Vstup:

0 -3 3 0.35

Výstup:

     -3.00      0.00      0.05     -1.00      0.00      0.00      0.30
     -2.65      0.00      0.07     -0.99      0.00      0.00      0.34
     -2.30      0.00      0.09     -0.98      0.01      0.00      0.37
     -1.95      0.00      0.12     -0.96      0.02      0.00      0.42
     -1.60      0.00      0.17     -0.92      0.08      0.00      0.48
     -1.25      0.00      0.22     -0.85      0.21      0.00      0.55
     -0.90      0.00      0.29     -0.72      0.44      0.00      0.65
     -0.55      0.00      0.37     -0.50      0.74      0.00      0.76
     -0.20      0.00      0.45     -0.20      0.96      0.00      0.90
      0.15      1.00      0.54      0.15      0.98      0.15      1.08
      0.50      1.00      0.62      0.46      0.78      0.50      1.28
      0.85      1.00      0.70      0.69      0.49      0.85      1.51
      1.20      1.00      0.77      0.83      0.24      1.20      1.77
      1.55      1.00      0.82      0.91      0.09      1.55      2.04
      1.90      1.00      0.87      0.96      0.03      1.90      2.33
      2.25      1.00      0.90      0.98      0.01      2.25      2.63
      2.60      1.00      0.93      0.99      0.00      2.60      2.94
      2.95      1.00      0.95      0.99      0.00      2.95      3.26
Spustenie 2:
./z1

Vstup:

0 0 0.7 0.3

Výstup:

      0.00      1.00      0.50      0.00      1.00      0.00      1.00
      0.30      1.00      0.57      0.29      0.91      0.30      1.16
      0.60      1.00      0.65      0.54      0.70      0.60      1.34
Spustenie 3:
./z1

Vstup:

0 -9 -1 1

Výstup:

     -9.00      0.00      0.00     -1.00      0.00      0.00      0.11
     -8.00      0.00      0.00     -1.00      0.00      0.00      0.12
     -7.00      0.00      0.00     -1.00      0.00      0.00      0.14
     -6.00      0.00      0.00     -1.00      0.00      0.00      0.16
     -5.00      0.00      0.01     -1.00      0.00      0.00      0.19
     -4.00      0.00      0.02     -1.00      0.00      0.00      0.24
     -3.00      0.00      0.05     -1.00      0.00      0.00      0.30
     -2.00      0.00      0.12     -0.96      0.02      0.00      0.41
     -1.00      0.00      0.27     -0.76      0.37      0.00      0.62
Spustenie 4:
./z1

Vstup:

0 -4.29 5.11 0.07

Výstup:

     -4.29      0.00      0.01     -1.00      0.00      0.00      0.22
     -4.22      0.00      0.01     -1.00      0.00      0.00      0.22
     -4.15      0.00      0.02     -1.00      0.00      0.00      0.23
     -4.08      0.00      0.02     -1.00      0.00      0.00      0.23
     -4.01      0.00      0.02     -1.00      0.00      0.00      0.24
     -3.94      0.00      0.02     -1.00      0.00      0.00      0.24
     -3.87      0.00      0.02     -1.00      0.00      0.00      0.24
     -3.80      0.00      0.02     -1.00      0.00      0.00      0.25
     -3.73      0.00      0.02     -1.00      0.00      0.00      0.25
     -3.66      0.00      0.03     -1.00      0.00      0.00      0.26
     -3.59      0.00      0.03     -1.00      0.00      0.00      0.26
     -3.52      0.00      0.03     -1.00      0.00      0.00      0.26
     -3.45      0.00      0.03     -1.00      0.00      0.00      0.27
     -3.38      0.00      0.03     -1.00      0.00      0.00      0.27
     -3.31      0.00      0.04     -1.00      0.00      0.00      0.28
     -3.24      0.00      0.04     -1.00      0.00      0.00      0.28
     -3.17      0.00      0.04     -1.00      0.00      0.00      0.29
     -3.10      0.00      0.04     -1.00      0.00      0.00      0.29
     -3.03      0.00      0.05     -1.00      0.00      0.00      0.30
     -2.96      0.00      0.05     -0.99      0.00      0.00      0.31
     -2.89      0.00      0.05     -0.99      0.00      0.00      0.31
     -2.82      0.00      0.06     -0.99      0.00      0.00      0.32
     -2.75      0.00      0.06     -0.99      0.00      0.00      0.33
     -2.68      0.00      0.06     -0.99      0.00      0.00      0.33
     -2.61      0.00      0.07     -0.99      0.00      0.00      0.34
     -2.54      0.00      0.07     -0.99      0.00      0.00      0.35
     -2.47      0.00      0.08     -0.99      0.00      0.00      0.35
     -2.40      0.00      0.08     -0.98      0.00      0.00      0.36
     -2.33      0.00      0.09     -0.98      0.00      0.00      0.37
     -2.26      0.00      0.09     -0.98      0.01      0.00      0.38
     -2.19      0.00      0.10     -0.98      0.01      0.00      0.39
     -2.12      0.00      0.11     -0.97      0.01      0.00      0.40
     -2.05      0.00      0.11     -0.97      0.01      0.00      0.41
     -1.98      0.00      0.12     -0.96      0.02      0.00      0.42
     -1.91      0.00      0.13     -0.96      0.03      0.00      0.43
     -1.84      0.00      0.14     -0.95      0.03      0.00      0.44
     -1.77      0.00      0.15     -0.94      0.04      0.00      0.45
     -1.70      0.00      0.15     -0.94      0.06      0.00      0.46
     -1.63      0.00      0.16     -0.93      0.07      0.00      0.48
     -1.56      0.00      0.17     -0.92      0.09      0.00      0.49
     -1.49      0.00      0.18     -0.90      0.11      0.00      0.50
     -1.42      0.00      0.19     -0.89      0.13      0.00      0.52
     -1.35      0.00      0.21     -0.87      0.16      0.00      0.53
     -1.28      0.00      0.22     -0.86      0.19      0.00      0.55
     -1.21      0.00      0.23     -0.84      0.23      0.00      0.56
     -1.14      0.00      0.24     -0.81      0.27      0.00      0.58
     -1.07      0.00      0.26     -0.79      0.32      0.00      0.60
     -1.00      0.00      0.27     -0.76      0.37      0.00      0.62
     -0.93      0.00      0.28     -0.73      0.42      0.00      0.64
     -0.86      0.00      0.30     -0.70      0.48      0.00      0.66
     -0.79      0.00      0.31     -0.66      0.54      0.00      0.68
     -0.72      0.00      0.33     -0.62      0.60      0.00      0.70
     -0.65      0.00      0.34     -0.57      0.66      0.00      0.73
     -0.58      0.00      0.36     -0.52      0.71      0.00      0.75
     -0.51      0.00      0.38     -0.47      0.77      0.00      0.78
     -0.44      0.00      0.39     -0.41      0.82      0.00      0.80
     -0.37      0.00      0.41     -0.35      0.87      0.00      0.83
     -0.30      0.00      0.43     -0.29      0.91      0.00      0.86
     -0.23      0.00      0.44     -0.23      0.95      0.00      0.89
     -0.16      0.00      0.46     -0.16      0.97      0.00      0.92
     -0.09      0.00      0.48     -0.09      0.99      0.00      0.96
     -0.02      0.00      0.50     -0.02      1.00      0.00      0.99
      0.05      1.00      0.51      0.05      1.00      0.05      1.03
      0.12      1.00      0.53      0.12      0.99      0.12      1.06
      0.19      1.00      0.55      0.19      0.96      0.19      1.10
      0.26      1.00      0.56      0.25      0.93      0.26      1.14
      0.33      1.00      0.58      0.32      0.90      0.33      1.18
      0.40      1.00      0.60      0.38      0.85      0.40      1.22
      0.47      1.00      0.62      0.44      0.80      0.47      1.26
      0.54      1.00      0.63      0.49      0.75      0.54      1.31
      0.61      1.00      0.65      0.54      0.69      0.61      1.35
      0.68      1.00      0.66      0.59      0.63      0.68      1.40
      0.75      1.00      0.68      0.64      0.57      0.75      1.44
      0.82      1.00      0.69      0.68      0.51      0.82      1.49
      0.89      1.00      0.71      0.71      0.45      0.89      1.54
      0.96      1.00      0.72      0.74      0.40      0.96      1.59
      1.03      1.00      0.74      0.77      0.35      1.03      1.64
      1.10      1.00      0.75      0.80      0.30      1.10      1.69
      1.17      1.00      0.76      0.82      0.25      1.17      1.74
      1.24      1.00      0.78      0.85      0.21      1.24      1.80
      1.31      1.00      0.79      0.86      0.18      1.31      1.85
      1.38      1.00      0.80      0.88      0.15      1.38      1.90
      1.45      1.00      0.81      0.90      0.12      1.45      1.96
      1.52      1.00      0.82      0.91      0.10      1.52      2.02
      1.59      1.00      0.83      0.92      0.08      1.59      2.07
      1.66      1.00      0.84      0.93      0.06      1.66      2.13
      1.73      1.00      0.85      0.94      0.05      1.73      2.19
      1.80      1.00      0.86      0.95      0.04      1.80      2.25
      1.87      1.00      0.87      0.95      0.03      1.87      2.30
      1.94      1.00      0.87      0.96      0.02      1.94      2.36
      2.01      1.00      0.88      0.96      0.02      2.01      2.42
      2.08      1.00      0.89      0.97      0.01      2.08      2.48
      2.15      1.00      0.90      0.97      0.01      2.15      2.54
      2.22      1.00      0.90      0.98      0.01      2.22      2.60
      2.29      1.00      0.91      0.98      0.01      2.29      2.67
      2.36      1.00      0.91      0.98      0.00      2.36      2.73
      2.43      1.00      0.92      0.98      0.00      2.43      2.79
      2.50      1.00      0.92      0.99      0.00      2.50      2.85
      2.57      1.00      0.93      0.99      0.00      2.57      2.91
      2.64      1.00      0.93      0.99      0.00      2.64      2.98
      2.71      1.00      0.94      0.99      0.00      2.71      3.04
      2.78      1.00      0.94      0.99      0.00      2.78      3.10
      2.85      1.00      0.95      0.99      0.00      2.85      3.17
      2.92      1.00      0.95      0.99      0.00      2.92      3.23
      2.99      1.00      0.95      0.99      0.00      2.99      3.29
      3.06      1.00      0.96      1.00      0.00      3.06      3.36
      3.13      1.00      0.96      1.00      0.00      3.13      3.42
      3.20      1.00      0.96      1.00      0.00      3.20      3.49
      3.27      1.00      0.96      1.00      0.00      3.27      3.55
      3.34      1.00      0.97      1.00      0.00      3.34      3.62
      3.41      1.00      0.97      1.00      0.00      3.41      3.68
      3.48      1.00      0.97      1.00      0.00      3.48      3.75
      3.55      1.00      0.97      1.00      0.00      3.55      3.81
      3.62      1.00      0.97      1.00      0.00      3.62      3.88
      3.69      1.00      0.98      1.00      0.00      3.69      3.94
      3.76      1.00      0.98      1.00      0.00      3.76      4.01
      3.83      1.00      0.98      1.00      0.00      3.83      4.08
      3.90      1.00      0.98      1.00      0.00      3.90      4.14
      3.97      1.00      0.98      1.00      0.00      3.97      4.21
      4.04      1.00      0.98      1.00      0.00      4.04      4.27
      4.11      1.00      0.98      1.00      0.00      4.11      4.34
      4.18      1.00      0.98      1.00      0.00      4.18      4.41
      4.25      1.00      0.99      1.00      0.00      4.25      4.47
      4.32      1.00      0.99      1.00      0.00      4.32      4.54
      4.39      1.00      0.99      1.00      0.00      4.39      4.61
      4.46      1.00      0.99      1.00      0.00      4.46      4.67
      4.53      1.00      0.99      1.00      0.00      4.53      4.74
      4.60      1.00      0.99      1.00      0.00      4.60      4.81
      4.67      1.00      0.99      1.00      0.00      4.67      4.88
      4.74      1.00      0.99      1.00      0.00      4.74      4.94
      4.81      1.00      0.99      1.00      0.00      4.81      5.01
      4.88      1.00      0.99      1.00      0.00      4.88      5.08
      4.95      1.00      0.99      1.00      0.00      4.95      5.14
      5.02      1.00      0.99      1.00      0.00      5.02      5.21
      5.09      1.00      0.99      1.00      0.00      5.09      5.28


Scenár 5: Manuálny režim

Spustenie 1:
./z1

Vstup:

1 1 2 3 4 5 6 0 e

Výstup:

      1.00      1.00      0.73      0.76      0.37      1.00      1.62
      2.00      1.00      0.88      0.96      0.02      2.00      2.41
      3.00      1.00      0.95      1.00      0.00      3.00      3.30
      4.00      1.00      0.98      1.00      0.00      4.00      4.24
      5.00      1.00      0.99      1.00      0.00      5.00      5.19
      6.00      1.00      1.00      1.00      0.00      6.00      6.16
      0.00      1.00      0.50      0.00      1.00      0.00      1.00
Spustenie 2:
./z1

Vstup:

1 -1 2.02 0.12 -4.67 0 2 3 1 Z

Výstup:

     -1.00      0.00      0.27     -0.76      0.37      0.00      0.62
      2.02      1.00      0.88      0.97      0.02      2.02      2.43
      0.12      1.00      0.53      0.12      0.99      0.12      1.06
     -4.67      0.00      0.01     -1.00      0.00      0.00      0.21
      0.00      1.00      0.50      0.00      1.00      0.00      1.00
      2.00      1.00      0.88      0.96      0.02      2.00      2.41
      3.00      1.00      0.95      1.00      0.00      3.00      3.30
      1.00      1.00      0.73      0.76      0.37      1.00      1.62
Spustenie 3:
./z1

Vstup:

1 -9.91 3.26 0.84 -6.34 0 0 1 1 0.11 0.12 -0.13 g

Výstup:

     -9.91      0.00      0.00     -1.00      0.00      0.00      0.10
      3.26      1.00      0.96      1.00      0.00      3.26      3.54
      0.84      1.00      0.70      0.69      0.49      0.84      1.50
     -6.34      0.00      0.00     -1.00      0.00      0.00      0.15
      0.00      1.00      0.50      0.00      1.00      0.00      1.00
      0.00      1.00      0.50      0.00      1.00      0.00      1.00
      1.00      1.00      0.73      0.76      0.37      1.00      1.62
      1.00      1.00      0.73      0.76      0.37      1.00      1.62
      0.11      1.00      0.53      0.11      0.99      0.11      1.06
      0.12      1.00      0.53      0.12      0.99      0.12      1.06
     -0.13      0.00      0.47     -0.13      0.98      0.00      0.94

Zdroje

Nasledujúce zdroje vám môžu pomôcť pri programovaní zadania. Odporúčame si tieto zdroje preštudovať. Na prístup k niektorým zdrojom potrebujete byť prihlásení vo vašom Google STU konte.

Prednášky

Jazyk C

Funkcie printf a scanf

Zdroje použité pri tvorbe zadania a prezentácie

Copyright © 2024, Pavol Marák, ÚIM FEI STU.
Vyrobené pomocou Django a Spectre.css.
Regulárne výrazy testujeme pomocou Regular Expression 101.
Videá prehrávame pomocou Plyr prehrávača.