Na žiadosť zakladateľa témy pridávam komentár k rozhodovacej časti.
Pre vysvetlenie ^ je zápis XOR, čo je logický operátor, podobne ako AND, OR, NOT...
pravdivostná tabuľka pre XOR je nasledujúca:
A B A^B
0 0 0
1 0 1
0 1 1
1 1 0
Teda, ak si na začiatok zvolíme výrazy A = (i > j) a B = (i > k) (teda A hovorí o tom, či je pravda, že i je väčšie ako j a B hovorí o tom, či je pravda, že i je väčšie ako k)
Pri prvej podmienke môžu nastať 4 prípady:
1: ak je i väčšie ako j, výraz A je pravda
ak je i väčšie ako k, výraz B je pravda
potom výraz A^B je nepravda.
program pokračuje k vyhodnoteniu j
2: ak je i menšie ako j, výraz A je pravda
ak je i menšie ako k, výraz B je pravda
potom výraz A^B je nepravda.
program pokračuje k vyhodnoteniu j
3: ak je i väčšie ako j, výraz A je pravda
ak je i menšie ako k, výraz B je nepravda
potom výraz A^B je pravda.
program vypíše, že i je stredné číslo a skončí
4: ak je i menšie ako j, výraz A je nepravda
ak je i väčšie ako k, výraz B je pravda
potom výraz A^B je pravda.
program vypíše, že i je stredné číslo a skončí
Ak rozhodovaní nastanú prípady 1 a 2 program pokračuje s tým, že výrazy sa zmenia. Teraz A = (j > i) a B = (j > k) (teda A hovorí o tom, či je pravda, že j je väčšie ako i a B hovorí o tom, či je pravda, že j je väčšie ako k)
Pri druhej podmienke môžu nastať tiež 4 prípady:
1: ak je j väčšie ako i, výraz A je pravda
ak je j väčšie ako k, výraz B je pravda
potom výraz A^B je nepravda.
program pokračuje
2: ak je j menšie ako i, výraz A je pravda
ak je j menšie ako k, výraz B je pravda
potom výraz A^B je nepravda.
program pokračuje
3: ak je j väčšie ako i, výraz A je pravda
ak je j menšie ako k, výraz B je nepravda
potom výraz A^B je pravda.
program vypíše, že j je stredné číslo a skončí
4: ak je j menšie ako i, výraz A je nepravda
ak je j väčšie ako k, výraz B je pravda
potom výraz A^B je pravda.
program vypíše, že j je stredné číslo a skončí
Ak pri druhom rozhodovaní nastanú prípady 1 a 2 program pokračuje s tým, že hneď vypíše, že stredné je k, pretože ak nieje i stredné (prebehlo prvé testovanie) a ani j nieje stredné (prebehlo druhé testovanie) posledná možnosť je k.
Kód je vlastne len zápis sedliackej úvahy, že ak je jedno z troch čísiel naraz väčšie od obidvoch zostávajúcich, nemôže byť medzi nimi (je maximálne) a tak isto, ak je jedno z troch čísiel naraz menšie od obidvoch zostávajúcich, nemôže byť medzi nimi (je minimálne). V ostatných prípadoch je stredné.
Kým som to dopísal, Loloone to dohľadal
ale už to nejdem mazať, možno to niekomu pomôže inokedy