dunia! Solusi : #include <iostream> using namespace std; int main () { cout << "Halo, dunia!" << endl; } Perhatikan output string harus sama persis : Halo, dunia! Kurang koma/spasi/tanda seru akan dianggap salah endl akan mencetak enter (Output program harus selalu diakhiri dengan baris kosong) 4
Outputkan kalimat tsb. Solusi : getline(cin, s); cout << s << endl; s bertipe data string (diperlukan #include <string> ). getline(cin, s) akan membaca sebaris string. Sedangkan cin >> s hanya membaca sampai whitespace (spasi/tab/newline) atau dengan kata lain satu kata saja. 10
bilangan. Outputkan hasil bagi dan sisa bagi dalam format yang telah ditentukan. Solusi : cin >> N >> M; cout << "masing-masing " << N/M << endl; cout << "bersisa " << N%M << endl; Output program harus mengikuti format keluaran Hati-hati terlewat tanda - pada output masing-masing Perhatikan pula ada spasi di akhir output string 11
segitiga. Outputkan luasnya. Solusi : cin >> A >> T; cout << fixed << setprecision(2) << A*T/2 << endl; A dan T bertipe data double , agar pembagiannya menjadi double Cara lain, A dan T bertipe data int tetapi perhitungan diubah menjadi 0.5*A*T agar hasilnya menjadi double fixed dan setprecision(2) berguna untuk menghasilkan output 2 angka di belakang koma 12
Outputkan hasil transpose nya (dicerminkan terhadap diagonal kiri-atas ke kanan-bawah). Solusi : cin >> a >> b >> c >> d >> e >> f >> g >> h >> i; cout << a << " " << d << " " << g << endl; cout << b << " " << e << " " << h << endl; cout << c << " " << f << " " << i << endl; Input dapat disingkat menjadi seperti di atas, karena cin akan membaca hingga whitespace (spasi/tab/newline) Perhatikan pada output harus disertakan spasi yaitu " " antar bilangan agar sama persis dengan format output Cara lainnya, tukarkan nilai "b dan d", "c dan g", "f dan h" lalu outputkan kembali sesuai urutan input 13
Jika bilangan itu positif, outputkan bilangan tsb. Solusi : if (N>0) { cout << N << endl; } Karena hanya ada 1 operasi dalam if, maka kurung kurawal {} adalah opsional Jika lebih dari 1 operasi, kurung kurawal harus disertakan untuk membungkus operasi-operasi tersebut 16
bilangan. Jika bilangan itu genap dan positif, outputkan kembali. Solusi : if ((N%2==0) && (N>0)) { cout << N << endl; } Pengecekan bilangan genap dapat dilakukan dengan melihat hasil modulo 2 nya. Biasakan menggunakan tanda kurung untuk mengelompokkan ekspresi logika Seperti dijelaskan pada soal sebelumnya, sebetulnya kurung kurawal {} disini adalah opsional 17
bilangan real. Outputkan pembulatan ke bawah dan ke atas nya. Solusi : M = int(N); if (N == M) { // jika N merupakan bilangan bulat cout << M << " " << M << endl; } else { if (N>0) cout << M << " " << M+1 << endl; else cout << M-1 << " " << M << endl; } N bertipe data double sedangkan M bertipe data int int(N) akan mengonversi ke integer dengan mengambil bagian bulat dari N. Contoh : int(3.14) = 3, int(-3.14) = -3 Cara lain yang kurang diharapkan adalah menggunakan fungsi floor() dan ceil() dari library <cmath> 22
buah titik. Outputkan jarak manhattan antar kedua titik. Solusi : Jumlahkan selisih koordinat x dan selisih koordinat y. Untuk menghitung selisih dua buah bilangan, misalnya a dan b, bisa dengan cara : if (a>b) { selisih = a-b; } else { selisih = b-a; } Cara lain yang kurang diharapkan adalah menggunakan fungsi abs() dari library <cmath> 23
dan N buah bilangan bulat. Outputkan total bilangan-bilangan bulat tersebut. Solusi : cin >> N; sum = 0; for (int i=0; i<N; i++) { cin >> bil; sum += bil; } cout << sum << endl; Biasakan menginisialisasi (mengisi nilai awal) variabel. Misalnya, karena sum menampung hasil penjumlahan, nilai awalnya haruslah 0. 25
outputkan kembali. Solusi : while (cin >> s) { cout << s << endl; } cin dalam while akan menghasilkan true jika pembacaan berhasil. Sehingga jika output sudah habis akan menghasilkan false dan perulangan berhenti Perhatikan disini tidak perlu melakukan input semua data dahulu baru outputkan. Karena tempat input dan output sebetulnya berbeda (konsep stdin/stdout) Setelah input selesai ketik CTRL+Z untuk memberikan sinyal end-of-file (menghentikan program) 26
Tentukan apakah bilangan tersebut berbentuk 2 . Solusi : Caranya adalah dengan membagi 2 terus menerus selama bilangannya genap. Jika bilangan yang diinput berbentuk 2 , pasti berakhir menjadi 1. while (N%2 == 0) { N /= 2; } if (N==1) cout << "ya" << endl; else cout << "bukan" << endl; k k 28
16 lalu hitung 2 dan cocokkan apakah ada yg sama dgn N. found = false; bil = 1; for(int i=0; i<=16; i++) { if (bil == N) found = true; bil *= 2; } if (found) cout << "ya" << endl; else cout << "tidak" << endl; k 29
dan N buah bilangan bulat. Outputkan bilangan terbesar dan bilangan terkecil. Solusi : cin >> N; maxi = -100001; mini = 100001; for(int i=0; i<N; i++) { cin >> bil; if (bil > maxi) maxi = bil; if (bil < mini) mini = bil; } cout << maxi << " " << mini << endl; maxi diinisialisasi dengan bilangan terkecil yang mungkin (atau lebih kecil lagi). Sebaliknya untuk mini. 31
dan K. Outputkan pola sesuai contoh. Solusi : Polanya adalah menulis bilangan 1 s/d N, kecuali untuk bilangan kelipatan K, outputnya dalah * . for(int i=1; i<=N; i++) { if (i%K == 0) cout << "*"; else cout << i; if (i==N) cout << endl; else cout << " "; } Kesalahan umum biasanya ada output spasi di setelah pola ke- N. Padahal tidak boleh ada spasi berlebih di akhir. Karena harus ada enter di akhir, maka ganti spasi menjadi enter pada pola ke-N. 32
N. Outputkan 1 s/d N, tetapi lompati bilangan kelipatan 10. Saat akan mencetak 42 cetaklah ERROR lalu hentikan. Solusi : for(int i=1; i<=N; i++) { if (i%10 == 0) continue; if (i==42) { cout << "ERROR" << endl; break; } cout << i << endl; } 34
Outputkan pola segitiga bilangan sesuai contoh. Solusi : Polanya adalah, bilangan selanjutnya adalah bilangan sebelumnya + 1 lalu dimodulo 10. Pada baris ke i, tertulis i angka. bil = 0; for(int i=1; i<=N; i++) { for(int j=1; j<=i; j++) { cout << bil; bil = (bil+1)%10; } cout << endl; } 36
N dan N buah bilangan bulat. Tentukan apakah bilangan-bilangan tersebut prima atau bukan. Solusi : Untuk mengecek apakah bil bilangan prima, cukup iterasi i dari 2 s/d . Jika tidak ada diantara i yang merupakan faktor dari bil , maka bil adalah bilangan prima. Kompleksitas = O(N ∗ ) cin >> N; for(int i=0; i<N; i++) { cin >> bil; prima = true; for(int k=2; k*k<bil; k++) { if (bil%k == 0) prima = false; } if (prima) cout << "YA" << endl; else cout << "BUKAN" << endl; } √ bil √ bil 38