OSP 2013

  1. Perhatikan potongan program berikut!
    var
        we: longint;
        Z: array[1..15] of longint = (64, 19, 56, 67, 66, 82, 31, 20, 67, 10, 94, 100, 57, 14, 86);
    
    function f(x: longint; y: longint): longint;
    var
        a, b: longint;
    begin
        if (x = y) then
            f := Z[y]
        else begin
            a := f(x, (x+y) div 2);
            b := f((x+y) div 2+1, y);
            if (a < b) then f := a
            else f := b
        end
    end;
    
    begin
        we := f(3,11);
        writeln(we);
    end.
    
    Apakah keluaran dari program tersebut?

    Jika nilai x = y, maka fungsi akan bernilai Z[y]. Selain itu program akan membandingkan dari x sampai y, karena keduanya hanya akan berubah menjadi rata-rata dari nilai sebelumnya tanpa mengubah batas bawah dari x maupun y. Setelah itu fungsi akan mengembalikan nilai yang lebih kecil. Artinya jika program tersebut dijalankan maka akan mencari nilai terkecil dari index x awal sampai y awal. Dengan demikian f(3,11) = 10 karena 10 adalah bilangan terkecil dari jangkauan tersebut.

Share Now:

5 2 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!