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
Gerard Schildberger - funkce FLOOR a CEILING

Literatura
Knuth D. E., Fundamental Algorithms, vol. 1 of The Art of Computer Programming
- 2nd ed. Addison-Wesley, 1973


obálka obsah index hlavní

změněno 12. dubna 2018
Copyright © 2000-2018 Vladimír Zábrodský, RNDr.

mail