function hap(x,t: integer): integer; begin if t = 1 then hap := x mod 5 else hap := 5*x; end; function hip(x,y: integer): integer; begin if x < y then hip := hip(y,x) else hip := hap(x,1) + hap(y,2); end; function hop(x,y,z: integer): integer; begin if y > z then hop := hop(x,z,y) else if x > y then hop := hop(y,x,z) else hop := hip(x,y) + z; end;
-
Apakah output dari pemanggilan writeln(hop(18, 3, 1993)) ?
-
Apakah output dari pemanggilan writeln(hip(hop(201,320,12), hop(20,1120,10)) + hap(21,30)) ?
-
hop(18,3,1993) = hop(3,18,1993)
hop(3,18,1993) = hip(3,18) + 1993
hip(3,18) = 18 mod 5 + 3*5 = 18
Dengan demikian output dari pemanggilan writeln(hop(18, 3, 1993)) adalah 18 + 1993 = 2011. -
hip(hop(201,320,12), hop(20,1120,10)) + hap(21,30)
-
hop(201,320,12) = hop(12,201,320)
hop(12,201,320) = 201 mod 5 + 12*5 + 320 = 381. -
hop(20,1120,10) = hop(10,20,1120)
hop(10,20,1120) = 20 mod 5 + 10*5 + 1120 = 1170. - hip(381,1170) = 1170 mod 5 + 381*5 = 1905
- hap(21,30) = 21*5 = 105
-
hop(201,320,12) = hop(12,201,320)
Pada fungsi hop, nilai y akan ditukar dengan z jika y > z dan jika x > y, maka keduanya juga akan ditukar. Sehingga nilai x akan menjadi yang terkecil dan z menjadi yang terbesar.
Fungsi hap akan mengembalikan nilai x mod 5 jika input kedua adalah 1 dan 5x jika bukan. Sedangkan fungsi hip akan menukar y dengan x jika x < y. Sehingga fungsi hip akan mengembalikan nilai x mod 5 + 5y, dengan x adalah bilangan yang lebih kecil dari parameternya.