Perhatikan potongan program berikut .
var data : array[1..10] of integer = (3,9,2,6,1,4,7,8,5,10);
procedure piring(n : integer);
begin
if (n<=10) then
begin
piring(n*2);
piring(n*2+1);
write(data[n],’ ’);
end;
end;
Jika statement pada baris ke 8 yaitu write(data[n],’ ‘) dipindahkan pada sebelum
statement baris ke 6, maka untuk menghasilkan output yang terurut menaik setelah
pemanggilan piring(1) adalah ....
A. (3,9,2,6,1,4,7,8,5,10)
B. (1,2,8,3,6,9,10,4,5,7)
C. (10,6,9,3,5,7,8,1,2,4)
D. (7,4,2,1,3,6,5,9,8,10)
E. (1,2,3,4,5,6,7,8,9,10)
Kita ubah dulu code nya jadi...
var data : array[1..10] of integer = (3,9,2,6,1,4,7,8,5,10);
procedure piring(n : integer);
begin
if (n<=10) then
begin
write(data[n],' ');
piring(n*2);
piring(n*2+1);
end;
end;
Kita punya array, anggap aja isinya (a1,a2,a3...,10)
Karena n<=10, kita coba nyari p(1) dari p(10) terus p(9) terus p(8), dst
p(1) = a1, a2, a4, a8, a9, a5, a10, a3, a6, a7
Karena isi array di pilihan soal angkanya dari 1-10, maka :
Jadi, kalau diurutin arraynya dari a1,a2,...,a10 = 1,2,8,3,6,9,10,4,5,7 (B)
*p = piring
Masuk untuk menulis jawaban
Gk. Isinya bisa berapapun asal a1<a2<a4<a9...<a7.
Follow Your Dreams
B. (1,2,8,3,6,9,10,4,5,7)
bererti kalo
data di arraynya mau berapapun, isinya bakalan1,2,8,3,6,9,10,4,5,7 dong?