Sha256: 776dae77f19f71075e3a7359d5a30e309efb01d9931d4e6636f189869c4b6d9b

Contents?: true

Size: 1.76 KB

Versions: 10

Compression:

Stored size: 1.76 KB

Contents

REBOL [
	Title: "Integer"
	URL: http://rosettacode.org/wiki/Arithmetic/Integer
]

x: to-integer ask "Please type in an integer, and press [enter]: "
y: to-integer ask "Please enter another integer: "
print ""

print ["Sum:"  x + y]
print ["Difference:"  x - y]
print ["Product:" x * y]

print ["Integer quotient (coercion)                          :"  to-integer x / y]
print ["Integer quotient (away from zero)                    :"  round x / y]
print ["Integer quotient (halves round towards even digits)  :"  round/even x / y]
print ["Integer quotient (halves round towards zero)         :"  round/half-down x / y]
print ["Integer quotient (round in negative direction)       :"  round/floor x / y]
print ["Integer quotient (round in positive direction)       :"  round/ceiling x / y]
print ["Integer quotient (halves round in positive direction):"  round/half-ceiling x / y]

print ["Remainder:"  r: x // y]

; REBOL evaluates infix expressions from left to right. There are no
; precedence rules -- whatever is first gets evaluated. Therefore when
; performing this comparison, I put parens around the first term
; ("sign? a") of the expression so that the value of /a/ isn't
; compared to the sign of /b/. To make up for it, notice that I don't
; have to use a specific return keyword. The final value in the
; function is returned automatically.

match?: func [a b][(sign? a) = sign? b]

result: copy []
if match? r x [append result "first"]
if match? r y [append result "second"]

; You can evaluate arbitrary expressions in the middle of a print, so
; I use a "switch" to provide a more readable result based on the
; length of the /results/ list.

print [
	"Remainder sign matches:" 
	switch length? result [
		0 ["neither"]
		1 [result/1]
		2 ["both"]
	] 
]

print ["Exponentiation:" x ** y]

Version data entries

10 entries across 7 versions & 1 rubygems

Version Path
zettacode-0.1.7 files.zettacode/arithmetic.integer/rebol.txt
zettacode-0.1.6 files.zettacode/arithmetic.integer/rebol.txt
zettacode-0.1.6 files.zettacode2/arithmetic.integer/rebol.txt
zettacode-0.1.5 files.zettacode/arithmetic.integer/rebol.txt
zettacode-0.1.5 files.zettacode2/arithmetic.integer/rebol.txt
zettacode-0.1.4 files.zettacode/arithmetic.integer/rebol.txt
zettacode-0.1.4 files.zettacode2/arithmetic.integer/rebol.txt
zettacode-0.1.3 files.zettacode/arithmetic.integer/rebol.txt
zettacode-0.1.2 files.zettacode/arithmetic.integer/rebol.txt
zettacode-0.1.1 zettacode.files/arithmetic.integer/rebol.txt