OSP 2013

Potongan program berikut ini akan digunakan pada soal 36 dan 37
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;
  1. Apakah output dari pemanggilan writeln(hop(18, 3, 1993)) ?

  2. Apakah output dari pemanggilan writeln(hip(hop(201,320,12), hop(20,1120,10)) + hap(21,30)) ?


    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.

  1. 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.

  2. hip(hop(201,320,12), hop(20,1120,10)) + hap(21,30)

    1. hop(201,320,12) = hop(12,201,320)
      hop(12,201,320) = 201 mod 5 + 12*5 + 320 = 381.
    2. hop(20,1120,10) = hop(10,20,1120)
      hop(10,20,1120) = 20 mod 5 + 10*5 + 1120 = 1170.
    3. hip(381,1170) = 1170 mod 5 + 381*5 = 1905
    4. hap(21,30) = 21*5 = 105
    Sehingga hip(hop(201,320,12), hop(20,1120,10)) + hap(21,30) = 1905 + 105 = 2010.

Share Now:

5 2 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Langganan

Subscribe To Our Newsletter

0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!