CEILING, FLOOR, MOD
Jestliže X je reálné číslo, pak píšeme
X nebo FLOOR(X)= největší celé číslo menší nebo rovno X;
X nebo CEILING(X)= nejmenší celé číslo větší nebo rovno X.
FLOOR: procedure
parse arg F
return TRUNC(F) - (F < 0) * (F <> TRUNC(F))
CEILING: procedure
parse arg C
return TRUNC(C) + (C > 0) * (C <> TRUNC(C))
|
PŘÍKLAD
Program
say FLOOR(4) CEILING(4)
say FLOOR(-4.1) CEILING(-4)
say FLOOR(4.1) CEILING(4.1)
say FLOOR(4.9) CEILING(4.9)
exit
|
zobrazí
4 4
-5 -4
4 5
4 5
Pro reálná čísla X a Y definujeme operaci:
MOD(X,Y)=X-Y*FLOOR(X/Y) if Y<> 0;
MOD(X,0)=X
MOD: procedure
parse arg X, Y
if Y = 0 then return X
return X - Y * FLOOR(X/Y)
|
(D.E.Knuth) Cvičení 8, 9, 10, kapitola 1.2.4, a výsledky
say MOD(100,3) MOD(100,7) MOD(-100,7) MOD(-100,0)
zobrazí 1 2 5 -100
say MOD(5,-3) MOD(18,-3) MOD(-2,-3)
zobrazí -1 0 -2
say MOD(1.1,1) MOD(0.11,0.1) MOD(0.11,-0.1)
zobrazí 0.1 0.01 -0.09
POZNÁMKY
- FLOOR(X)==TRUNC(X), jestliže X>=0
- V algoritmu BINARY_SEARCH používáme jednodušší výraz (L+R)%2 místo FLOOR((L+R)/2)
- Časová složitost algoritmu MINIMAX je CEILING(3*N/2)-2 porovnání, to je rovno FORMAT(3*N/2-2,,0) pro N>=2. Výraz FORMAT(N,,0) zaokrouhluje N k nejbližšímu celému číslu
- Pro reálná čísla X>=0, Y>0 je X//Y=MOD(X,Y), viz Euklidův algoritmus pro výpočet NSD (a NSN)
SPOLUAUTOR
Literatura
Knuth D. E., Fundamental Algorithms, vol. 1 of The Art of Computer Programming - 2nd ed. Addison-Wesley, 1973
|