{{Wikipedista:Oashi/mod|17|9}} = 8

[podstránky Šablona:Mod/] - [podstránky Wikipedista:Oashi/mod/]


Operace modulo.

Oproti prosté wiki-syntaxi a funkcím parseru tato šablona přináší i validace vstupů a vysvětlující/navádějící chybová hlášení.

Teoretický základ a varování o dvojznačnosti editovat

Pokud jsou a and d celá čísla, d nenulové, je zbytek po dělení r takové celé číslo, že a = qd + r pro takový celý výsledný koeficitent q, že |r| < |d|.

Při této definici však jsou při použití záporných členů možné dvě hodnoty zbytků. Například při dělení −42 / −5:

  • −42 = 9×(−5) + 3
  • −42 = 8×(−5) + (−2).

Zbytky tedy jsou buď 3, nebo −2

Pro dvojici zbytků dále platí, že:

d = +rr

Tato definiční nejednoznačnost může způsobovat závážné potíže při programování.

Příklady editovat

kladné editovat

  • kladné, snadné
    • {{Wikipedista:Oashi/mod|8|7}} = 1
    • {{Wikipedista:Oashi/mod|8|7|w}} = 1 = 1 = {{#expr:8mod7}}
    • {{Wikipedista:Oashi/mod|8|7|}} = 1
    • {{Wikipedista:Oashi/mod|8|7|+}} = 1
  • kladné, ale menší
    • {{Wikipedista:Oashi/mod|1|7}} = 1
    • {{Wikipedista:Oashi/mod|1|7|w}} = 1 = 1 = {{#expr:1mod7}}
    • {{Wikipedista:Oashi/mod|1|7|}} = 1
    • {{Wikipedista:Oashi/mod|1|7|+}} = 1

záporný čitatel editovat

  • výchozí snadný
    • {{Wikipedista:Oashi/mod|17|9}} = 8
    • {{Wikipedista:Oashi/mod|17|9|w}} = 8 = 8 = {{#expr:17mod9}}
    • {{Wikipedista:Oashi/mod|17|9|}} = 8
    • {{Wikipedista:Oashi/mod|17|9|+}} = 8
  • obrácení čitatele
    • {{Wikipedista:Oashi/mod|-17|9}} = 1
    • {{Wikipedista:Oashi/mod|-17|9|w}} = -8 = -8 = {{#expr:-17mod9}}
    • {{Wikipedista:Oashi/mod|-17|9|}} = -8
    • {{Wikipedista:Oashi/mod|-17|9|+}} = 1
  • čitatel absolutně menší, záporný
    • {{Wikipedista:Oashi/mod|-8|9}} = 1
    • {{Wikipedista:Oashi/mod|-8|9|w}} = -8 = -8 = {{#expr:-8mod9}}
    • {{Wikipedista:Oashi/mod|-8|9|}} = -8
    • {{Wikipedista:Oashi/mod|-8|9|+}} = 1

záporný jmenovatel editovat

  • výchozí snadný
    • {{Wikipedista:Oashi/mod|14|9}} = 5
    • {{Wikipedista:Oashi/mod|14|9|w}} = 5 = 5 = {{#expr:14mod9}}
    • {{Wikipedista:Oashi/mod|14|9|}} = 5
    • {{Wikipedista:Oashi/mod|14|9|+}} = 5
  • obrácení jmenovatele
    • {{Wikipedista:Oashi/mod|14|-9}} = -4
    • {{Wikipedista:Oashi/mod|14|-9|w}} = 5 = 5 = {{#expr:14mod-9}}
    • {{Wikipedista:Oashi/mod|14|-9|}} = 5
    • {{Wikipedista:Oashi/mod|14|-9|+}} = 5
  • čitatel absolutně menší, kladný
    • {{Wikipedista:Oashi/mod|5|-9}} = -4
    • {{Wikipedista:Oashi/mod|5|-9|w}} = 5 = 5 = {{#expr:5mod-9}}
    • {{Wikipedista:Oashi/mod|5|-9|}} = 5
    • {{Wikipedista:Oashi/mod|5|-9|+}} = 5

oba záporné editovat

  • oba záporné
    • {{Wikipedista:Oashi/mod|-14|-9}} = -5
    • {{Wikipedista:Oashi/mod|-14|-9|w}} = -5 = -5 = {{#expr:-14mod-9}}
    • {{Wikipedista:Oashi/mod|-14|-9|}} = -5
    • {{Wikipedista:Oashi/mod|-14|-9|+}} = 4
  • čitatel absolutně menší
    • {{Wikipedista:Oashi/mod|-5|-9}} = -5
    • {{Wikipedista:Oashi/mod|-5|-9|w}} = -5 = -5 = {{#expr:-5mod-9}}
    • {{Wikipedista:Oashi/mod|-5|-9|}} = -5
    • {{Wikipedista:Oashi/mod|-5|-9|+}} = 4
metoda 17 mod 9 17 mod -9 -17 mod 9 -17 mod -9
null 8 -1 1 -8
"w" 8 8 -8 -8
"" 8 8 -8 -8
"+" 8 8 1 1

validace editovat

  • {{Wikipedista:Oashi/mod|x|-9}} = Šablona {{mod|čitatel}} pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
  • {{Wikipedista:Oashi/mod|x|-9|w}} = Šablona {{mod|čitatel}} pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
  • {{Wikipedista:Oashi/mod|x|-9|+}} = Šablona {{mod|čitatel}} pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!


  • {{Wikipedista:Oashi/mod|5|}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
  • {{Wikipedista:Oashi/mod|5||w}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
  • {{Wikipedista:Oashi/mod|5||+}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!


  • {{Wikipedista:Oashi/mod|5}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
  • {{Wikipedista:Oashi/mod|5}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
  • {{Wikipedista:Oashi/mod|5}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!


  • {{Wikipedista:Oashi/mod|0|-9}} = 0
  • {{Wikipedista:Oashi/mod|0|-9|w}} = 0
  • {{Wikipedista:Oashi/mod|0|-9|+}} = 0


  • {{Wikipedista:Oashi/mod|5|0}} = Šablona {{mod}} pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!
  • {{Wikipedista:Oashi/mod|5|0|w}} = Šablona {{mod}} pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!
  • {{Wikipedista:Oashi/mod|5|0|+}} = Šablona {{mod}} pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!

Validace hodnot editovat

Šablona používá pro účely výpočtu tři nepojmenované hodnoty:

  • 1 = čitatel: celé číslo, požadovaný (validováno)
  • 2 = jmenovatel: celé číslo, nenulový, požadovaný (validováno)
  • 3 = metoda: určuje metodu výpočtu a tedy i vlastnosti výstupu, "volitelný"... (nevalidováno, možnými hodnotami pokryty všechny možnosti, přijme cokoli)
    • a) I jeho nepřítomnost už je považována za hodnotu, určuje "ruční" metodu výpočtu pomocí interní funkce round.
    • b) Metoda pro vracení vždy kladné hodnoty, aktivovaná hodnotou "+" (znaménko plus jako vstupní string).
    • c) Metoda na základě interní funkce mod. Ativována čímkoli jiným: Například stringy "", "w", "wiki"...

Validace parametrů pro použití v šablonách editovat

Účelem je využít již zde existující mechanismus chybových hlášení i pro další šablony, které v sobě budou tuto šablonu používat.

Šablona používá pro účely nastavení textací do chybových hlášení tři pojmenované parametry:

  • z - šablona, která se má v chybovém hlášení zobrazovat
  • param1 - název vstupu 1, čitatele, jak se má zobrazovat v hlášeních následnických šablon
  • param2 - název vstupu 2, jmenovatele, jak se má zobrazovat v hlášeních následnických šablon
  • -1 null
  • 8 w
  • 8 ""
  • 8 +

    • 1 null
    • -8 w
    • -8 ""
    • 1 +


    • -8 null
    • -8 w
    • -8 ""
    • 1 +

    validace editovat

    • {{Wikipedista:Oashi/mod|5|3}} = 2
    • {{Wikipedista:Oashi/mod|5|-9}} = -4
    • {{Wikipedista:Oashi/mod|-5|-9}} = -5
    • {{Wikipedista:Oashi/mod|0|-9}} = 0
    • {{mod|0|-9|}} = 0


    • {{Wikipedista:Oashi/mod}} = Šablona {{mod}} pro parametr "čitatel" požaduje vstup, aby bylo co ověřovat!
    • {{Wikipedista:Oashi/mod||}} = Šablona {{mod}} pro parametr "čitatel" požaduje vstup, aby bylo co ověřovat!
    • {{Wikipedista:Oashi/mod|5}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
    • {{Wikipedista:Oashi/mod|5|}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
    • {{mod|5||+}} = Šablona {{mod}} pro parametr "jmenovatel" požaduje vstup, aby bylo co ověřovat!
    • {{Wikipedista:Oashi/mod|x|9}} = Šablona {{mod|čitatel}} pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|x|-9}} = Šablona {{mod|čitatel}} pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{mod|x|-9|w}} = Šablona {{mod|čitatel}} pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y}} = Šablona {{mod|jmenovatel}} pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|x|y}} = Šablona {{mod|čitatel}} pro parametr "čitatel" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|2=y|9}} = Šablona {{mod|jmenovatel}} pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|0}} = Šablona {{mod}} pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!
    • {{mod|5|0|wiki}} = Šablona {{mod}} pro parametr "jmenovatel" ověřuje nenulová celá čísla, ale předaná hodnota je právě "0", což nesmí!
    • {{Wikipedista:Oashi/mod|5|0|z=M|param1=cit|param2=jm}} = Šablona {{M}} pro parametr "jm" ověřuje nenulová celá čísla, ale daný vstup je právě "0", což nesmí!
    • {{Wikipedista:Oashi/mod|5|1.5}} = Šablona {{mod}} pro parametr "jmenovatel" ověřuje celá čísla, což ale daný vstup "1.5" není!
    • {{Wikipedista:Oashi/mod|5.5|3}} = Šablona {{mod}} pro parametr "jmenovatel" ověřuje celá čísla, což ale daný vstup "3.5" není!
    • {{Wikipedista:Oashi/mod|7.7|-9}} = Šablona {{mod}} pro parametr "čitatel" ověřuje celá čísla, což ale daný vstup "7.7" není!


    • {{Wikipedista:Oashi/mod|x|9|z=M|param1=cit|param2=jm}} = Šablona {{M|cit}} pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|x|9|z=M|param1=|param2=jm}} = Šablona {{M}} ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|x|9|z=M|param1=cit}} = Šablona {{M|cit}} pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|x|9|z=|param1=cit}} = Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="cit" patří!
      Šablona {{|cit}} pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|x|9|param1=cit}} = Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="cit" patří!
      Šablona {{|cit}} pro parametr "cit" ověřuje celá čísla, ale daný vstup "x" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|9|param1=cit}} = Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="cit" patří!
      5


    • {{Wikipedista:Oashi/mod|5|y|z=M|param1=cit|param2=jm}} = Šablona {{M|jm}} pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=M|param1=cit|param2=}} = Šablona {{M}} ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=M|param1=cit}} = Šablona {{M|jmenovatel}} pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=M|param1=|param2=jm}} = Šablona {{M|jm}} pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=M|param2=jm}} = Šablona {{M|jm}} pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=M|param2=jm}} = Šablona {{M|jm}} pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=M|param2=}} = Šablona {{M}} ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=M}} = Šablona {{M|jmenovatel}} pro parametr "jmenovatel" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|z=|param2=jm}} = Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="jm" patří!
      Šablona {{|jm}} pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|param2=jm}} = Když už je používán vstup "param", je také nutno vstupem "z" určit šablonu, ke které ten "param"="jm" patří!
      Šablona {{|jm}} pro parametr "jm" ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|y|param2=}} = Šablona {{mod}} ověřuje celá čísla, ale daný vstup "y" vůbec není číslo!
    • {{Wikipedista:Oashi/mod|5|9|param2=}} = 5