📝 Analisis Kode

Soal tertulis: baca program C++, tebak keluarannya — latihan ketelitian.

Isi jawabanmu di kotak isian setiap soal, lalu tekan Kirim Jawaban di bawah.

1. Aritmatika Sederhana (OSNK 2022 #26) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int A, B, C;
    cin >> A >> B >> C;
    B = A - B;
    C = A - C;
    A = B + C;
    cout << (A + B) * C << endl;
    return 0;
}

Input: 11 7 6

Jawab: …………………………………………………… {tuliskan output program}


2. Pembalikan Array (OSNK 2022 #30) (10 poin)
#include <iostream>
using namespace std;
int main() {
    char x[11] = {'I','N','F','O','R','M','A','T','I','K','A'};
    char temp;
    for (int i = 0; i < 5; i++) {
        temp = x[i];
        x[i] = x[10 - i];
        x[10 - i] = temp;
    }
    for (int i = 0; i < 11; i++) {
        cout << x[i];
    }
    cout << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


3. Nested If (OSNK 2022 #27) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    if (a >= b) {
        if (a >= c) {
            cout << a << endl;
        } else {
            if (c >= d) {
                cout << c << endl;
            } else {
                cout << d << endl;
            }
        }
    } else {
        if (b >= c) {
            cout << b << endl;
        } else {
            if (c >= d) {
                cout << c << endl;
            } else {
                cout << d << endl;
            }
        }
    }
    return 0;
}

Input: 30 20 40 50

Jawab: …………………………………………………… {tuliskan output program}


4. Hitung (OSNK 2022 #35) (10 poin)
#include <iostream>
using namespace std;
int hitung(int x, int y) {
    if (x + y <= 0) return 0;
    if (x >= 0) return hitung(x - 1, y * 2);
    return hitung(x - 1, y - 1) + 1;
}
int main() {
    cout << hitung(10, 5) << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


5. LCM dan GCD (OSNK 2022 #29) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int A, B, C, D;
    cin >> A >> B;
    C = A; D = B;
    while (C != D) {
        if (C < D) C += A;
        else D += B;
    }
    int E = A, F = B;
    while (E != F) {
        if (E > F) E -= F;
        else F -= E;
    }
    cout << (C + C) / (E + E) << endl;
    return 0;
}

Input: 500 70

Jawab: …………………………………………………… {tuliskan output program}


6. Jalan-Jalan (OSNK 2022 #31) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int kiri = 10, energi = 0;
    while (kiri < 1000) {
        if (kiri % 7 == 0) {
            kiri += 1;
            energi += 1;
        } else if (kiri % 3 == 0) {
            kiri += 2;
            energi += 2;
        } else {
            kiri += 3;
            energi += 3;
        }
    }
    cout << energi << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


7. Kwak Kwik Kwek (OSNK 2022 #32) (10 poin)
#include <iostream>
using namespace std;
int kwik(int n) {
    int sum = 0;
    for (int i = 0; i < n; i += 4) {
        sum += i;
    }
    return sum;
}
int kwek(int n) {
    int sum = 0;
    for (int i = 0; i < n; i += 3) {
        sum += kwik(i * 3) * i;
    }
    return sum;
}
int kwak(int n) {
    int sum = 0;
    for (int i = 0; i < n; i += 2) {
        sum += kwek(i) + kwik(i * 2);
    }
    return sum;
}
int main() {
    cout << kwak(10) << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


8. Merah Putih (OSNK 2022 #34) (10 poin)
#include <iostream>
using namespace std;
int putih(int n) {
    if (n == 0) return 0;
    return putih(n / 2) + n % 2;
}
int merah(int x, int y) {
    if (x == y) return putih(x);
    return 1 + merah(x - 1, y);
}
int main() {
    cout << merah(100, 50) << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


9. Bug pada Merge (OSNK 2022 #28 modified) (10 poin)
#include <iostream>
using namespace std;
int A[5] = {1, 3, 5, 6, 18};
int B[5] = {2, 4, 7, 11, 16};
int C[10];
int main() {
    int i = 0, j = 0, k = 0;
    while (i < 5 || j < 5) {
        if (A[i] <= B[j]) {
            C[k] = A[i];
            i++; k++;
        } else {
            C[k] = B[j];
            j++; k++;
        }
    }
    if (i > j) {
        while (i < 5) {
            C[k] = A[i];
            i++; k++;
        }
    } else {
        while (j < 5) {
            C[k] = B[j];
            j++; k++;
        }
    }
    for (int l = 0; l < 10; l++) {
        cout << C[l] << " ";
    }
    cout << endl;
    return 0;
}

Program ini seharusnya menggabungkan dua array terurut menjadi satu array terurut. Namun terdapat bug sebanyak dua baris sehingga output keliru. Pada baris ke berapa sajakah bug tersebut berada?

Jawab: …………………………………………………… {tuliskan dua nomor baris terurut menaik}


10. Aritmetika Rantai (OSNK 2023 #26) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int a = 1, b = 2, c = 3, d = 5;
    a = a + 1;
    b = b * 2;
    c = c * 3;
    d = d * 4;
    int x = a + b + c + d;
    cout << x << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


11. Perbandingan Berantai (OSNK 2023 #27) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int a = 12, b = 23, c = 45, d = 78;
    int x;
    if (a > b) {
        x = a * a;
    } else if (b > c) {
        x = b * b;
    } else if (d > c) {
        x = d * d;
    } else {
        x = c * c;
    }
    cout << x << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


12. Bahagia (OSNK 2022 #33) (10 poin)
#include <iostream>
using namespace std;
void bahagia(int n) {
    if (n == 0) return;
    cout << n % 2;
    bahagia(n / 2);
}
int main() {
    bahagia(1111);
    cout << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


13. Bintang (OSNK 2023 #28) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int m = 30, n = 10;
    int total = 0;
    for (int i = 0; i < m; i++) {
        if (i % 2 == 0) {
            total += i;
        } else {
            total += n;
        }
    }
    cout << total << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


14. Akses Array Berantai (OSNK 2023 #30) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int a[10] = {7, 4, 5, 0, 2, 3, 8, 1, 9, 6};
    int sum = 0;
    for (int i = 0; i < 10; i++) {
        sum += a[i];
    }
    a[7] = a[a[a[a[a[a[a[7]]]]]]];
    int sum2 = 0;
    for (int i = 0; i < 10; i++) {
        sum2 += a[i];
    }
    cout << sum2 - sum << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


15. Berhiber (OSNK 2023 #33) (10 poin)
#include <iostream>
using namespace std;
int bersih(int x, int y) { return x + y; }
int hijau(int x, int y) { return x - y; }
int berhiber(int x, int y) {
    if (y == 0) return 0;
    return bersih(x, y) + hijau(x, y) + berhiber(x - 1, y - 1);
}
int main() {
    cout << berhiber(20, 15) << endl; return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


16. Bawah (OSNK 2023 #32) (10 poin)
#include <iostream>
using namespace std;
int a, b, c, d;
int kiri() {
    d--;
    return c - a / b;
}
int kanan() {
    d--;
    return a + b - c;
}
void atas() {
    c = c / 3;
    a -= 5;
    b += 3;
}
int bawah(int x, int y, int z) {
    a = x; b = y; c = z; d = 0;
    while (kiri() > kanan()) {
        d = a + b + c + d;
        atas();
        b = b + 3;
    }
    d += b * c;
    d += x / y;
    return d - 2 * a;
}
int main() {
    cout << bawah(42, 17, 265) << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


17. Loop Bersyarat (OSNK 2023 #29) (10 poin)
#include <iostream>
using namespace std;
int main() {
    int x = 0, y = 0;
    while (x * 7 < 986 && y * 4 <= 876 && x - y > -67) {
        x += 2; y += 3;
    }
    cout << y << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


18. Kebersamaan (OSNK 2023 #31) (10 poin)
#include <iostream>
using namespace std;
int a = 4, b = 3, c = 7, d = 2, ans = 0;
void keb(int x) {
    ans += a;
    int temp = a;
    a = b;
    b = c;
    c = d;
    d = x;
}
int main() {
    keb(5);
    keb(2);
    a += 2; c += 3;
    keb(3);
    d += 4; c += 4;
    keb(0);
    a += 5; b += 6;
    keb(1);
    c += 9; a += 7; c += 2;
    cout << ans << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


19. Info Format Matika (OSNK 2023 #34) (10 poin)
#include <iostream>
using namespace std;
int info(int x);
int format(int x);
int matika(int x);
int info(int x) {
    if (x == 0) return 1;
    return info(x-1) + format(x-1);
}
int format(int x) {
    if (x == 0) return 1;
    return info(x-1) + matika(x-1);
}
int matika(int x) {
    if (x == 0) return 1;
    return format(x-1) + matika(x-1);
}
int main() {
    cout << info(9) << endl;
    return 0;
}

Jawab: …………………………………………………… {tuliskan output program}


20. Biru (OSNK 2023 #35) (10 poin)
#include <iostream>
using namespace std;
int hijau(int a, int b) {
    while (a != b) {
        if (a > b) a -= b;
        else b -= a;
    }
    return a;
}
int merah(int q, int w, int e, int r) {
    int sum = 0;
    while (q >= w) {
        sum += hijau(q, e);
        q -= r;
    }
    return sum;
}
int biru(int n) {
    return 3 * (merah(n, 1, n, 1) - merah(2*n, 2, n, 2));
}
int main() {
    cout << biru(69) << endl;
    return 0;
}

💡 Format: tuliskan output program