Soal OSNK 2023 No 26
Perhatikan program di bawah ini
int main() {
int a, b, c, d, x;
cin >>a>>b>>c>>d;
a = a + a;
b = a + b;
c = a + b + c;
d = a + b + c + d;
x = a + b + c + d;
cout << x;
return 0;
}
Jika program tersebut dijalankan dengan masukan 1 2 3 5 berapakah nilai x yang akan dicetak?
Jawaban: ................ {tuliskan jawaban dalam bentuk ANGKA saja}
Bahasan Soal :
Nilai Awal:
a = 1
b = 2
c = 3
d = 5
Perhitungan:
a menjadi 1 + 1 = 2
b menjadi 2 + 2 = 4
c menjadi 2 + 4 + 3 = 9
d menjadi 2 + 4 + 9 + 5 = 20
x menjadi 2 + 4 + 9 + 20 = 35
Output: Kode mencetak 35 ke konsol.
SOAL OSNK 2023 No 27
SOAL OSNK 2023 No 27
Jika nilai a=12, b=23, c=45, dan d=78, berapakah nilai dari x setelah potongan program tersebut dijalankan? Jawaban: ................ {tuliskan jawaban dalam bentuk ANGKA saja}
Bahasan Soal
Untuk menentukan nilai x dalam program disamping kita harus menguji pernyataan atau kondisi yang dibangun dari pernyataan if. jika bernilai true, maka nilai x bisa di eksekusi jika bernilai false, maka program akan masuk pada opsi alternatif jika (pernyataan if bernilai false).
mari kita cek dari baris pertama :
If (a>b) { / false
maka program akan masuk pada blok opsi else
if (b>c) / false
Program lanjut pada opsi else lagi
if (d>c) { / true
x=d*d
x= 78*78
= 6084
SOAL OSNK No 29
Perhatikan potongan program berikut!
int x = 0;
int y = 0;
while(x * 7 < 986 && y * 4 <= 876 && x - y > -67) {
x += 2;
y += 3;
}
Berapa nilai akhir dari y setelah potongan program di atas dijalankan?
Jawaban: ................ {tuliskan jawaban dalam bentuk ANGKA saja}
Bahasan Soal
Untuk mengetahui nilai akhir dari y, kita perlu menjalankan perulangan while dan melacak perubahan nilai x dan y pada setiap iterasi. Berikut adalah langkah-langkahnya:
Iterasi 1:
x = 0, y = 0
x * 7 = 0 (lebih kecil dari 986)
y * 4 = 0 (lebih kecil dari atau sama dengan 876)
x - y = 0 (lebih besar dari -67)
Kondisi while terpenuhi, sehingga perulangan dilanjutkan.
Iterasi 2:
x = 0 + 2 = 2
y = 0 + 3 = 3
x * 7 = 14 (lebih kecil dari 986)
y * 4 = 12 (lebih kecil dari atau sama dengan 876)
x - y = 2 - 3 = -1 (lebih besar dari -67)
Kondisi while terpenuhi, sehingga perulangan dilanjutkan.
Iterasi 3:
x = 2 + 2 = 4
y = 3 + 3 = 6
x * 7 = 28 (lebih kecil dari 986)
y * 4 = 24 (lebih kecil dari atau sama dengan 876)
x - y = 4 - 6 = -2 (lebih besar dari -67)
Kondisi while terpenuhi, sehingga perulangan dilanjutkan.
Iterasi 4:
x = 4 + 2 = 6
y = 6 + 3 = 9
x * 7 = 42 (lebih kecil dari 986)
y * 4 = 36 (lebih kecil dari atau sama dengan 876)
x - y = 6 - 9 = -3 (lebih besar dari -67)
Kondisi while terpenuhi, sehingga perulangan dilanjutkan.
Iterasi 5:
x = 6 + 2 = 8
y = 9 + 3 = 12
x * 7 = 56 (lebih kecil dari 986)
y * 4 = 48 (lebih kecil dari atau sama dengan 876)
x - y = 8 - 12 = -4 (lebih besar dari -67)
Kondisi while terpenuhi, sehingga perulangan dilanjutkan.
Iterasi 6:
x = 8 + 2 = 10
y = 12 + 3 = 15
x * 7 = 70 (lebih kecil dari 986)
y * 4 = 60 (lebih kecil dari atau sama dengan 876)
x - y = 10 - 15 = -5 (lebih besar dari -67)
Kondisi while terpenuhi, sehingga perulangan dilanjutkan.
Iterasi 7:
x = 10 + 2 = 12
y = 15 + 3 = 18
x * 7 = 84 (lebih kecil dari 986)
y * 4 = 72 (lebih kecil dari atau sama dengan 876)
x - y = 12 - 18 = -6 (lebih besar dari -67)
Kondisi while terpenuhi, sehingga perulangan dilanjutkan.
Iterasi 8:
x = 12 + 2 = 14
y = 18 + 3 = 21
x * 7 = 98 (lebih besar dari atau sama dengan 986)
Kondisi while tidak terpenuhi, sehingga perulangan berhenti.
Nilai akhir y setelah perulangan berhenti adalah 21.
Kesimpulan:
Nilai akhir dari y setelah potongan program dijalankan adalah 21.