Diberikan program di bawah ini. Berapakah output dari program tersebut? {tuliskan jawaban sesuai dengan output yang dihasilkan}
var
rumah: array[1..25] of integer;
procedure buat(x, y:integer);
begin
rumah[x] := rumah[x] + 1;
rumah[y+1] := rumah[y + 1] -1;
end;
function hitung():integer;
var
i, tmp, pintu, jendela: integer;
begin
tmp := 0; pintu := 0; jendela := 0;
for i := 1 to 25 do
begin
tmp := tmp + rumah[i];
if tmp > pintu then
begin
pintu := tmp;
jendela := i;
end;
end;
hitung := jendela;
end;
begin
buat(4, 8);
buat(3, 6);
buat(10, 15);
buat(14, 20);
writeln(hitung());
end.
Jika ingin mendownvote, jangan lupa juga untuk komen tentang kesalahannya. That'll be helpful for everyone, don't let that be a habit.
Kita anggap sebagai penjumlahan semua elemen dari subarray
. Jika kita observasikan kelakuan fungsi
, fungsi ini sebenarnya menghitung berapakah
yang sehingga
maksimum. Fungsi
hanya melakukan increment dan decrement masing-masing pada elemen
dan
. Perhatikan juga bahwa setiap tipe data integer dalam bahasa pemrograman Pascal selalu didefaultkan menjadi 0 jika belum diinisialisasikan. Artinya, elemen dari array rumah yang belum diassign dengan nilai apapun selalu mempunyai nilai nol. Menjalankan programnya dengan bantuan dari observasi ini, didapat bahwa 4 adalah jawaban yang dioutputkan.
MAN 1 LAMPUNG TENGAH Go To TOKI 2019 Go Get Gold IOI 2019
Masuk untuk menulis jawaban
4
Not on only
4
Karena nilai array tidak diinisialisasi maka nilai array dengan indeks 1 sampai 25 = 0
Kemudian prosedur buat (x,y) dijalankan untuk mengisi array dengan indeks x dengan 1, dan berindeks y+1 dengan -1
Didapatkan:
(setelah diurutkan)
rumah[3] = 1
rumah[4] = 1
rumah[7] = -1
rumah[9] = -1
rumah[10] = 1
rumah[14] = 1
rumah[16] = -1
rumah[21] = -1
Ketika fungsi hitung terakhir kali dijalankan (saat semua array yang diproses telah bernilai 1 atau -1 ) untuk i=3 dan i=4 nilai tmp = 2, nilai jendela akan sama dengan i ketika tmp besar dari pintu, dengan begitu nilai pintu = nilai tmp maksimal = 2. untuk i selanjutnya perintah while tidak akan dijalankan karena nilai tmp tetap (bernilai 2)
dengan begitu jendela = 4
hitung = 4
caranya gmn kaka?? tolong uraikan...