Latihan soal C++ di Duniailkom kali ini akan membahas cara membuat program perkalian matriks 2×2. Materi ini menguji pemahaman seputar proses input/input, logika matematika, cara penggunaan array dan konsep perulangan (looping).
Soal Perkalian Matriks 2×2
Buatlah kode program C++ untuk perkalian matriks 2×2. Agar lebih menantang, buat dalam 2 versi:
- Matriks di buat dari dalam kode program
- Matriks di input oleh user
Soal no 1 lebih sederhana karena nilai matriks cukup ditulis langsung ke dalam kode program. Sedangkan untuk soal nomor 2, nilai matriks akan di input oleh user.
Berikut contoh tampilan akhir yang diinginkan (matriks di tulis langsung ke dalam kode program) :
## Program C++ Perkalian Matriks 2x2 ## ========================================= Matriks A: 1 2 3 4 Matriks B: 5 6 7 8 Matriks A * Matriks B: 19 22 43 50
Berikut contoh tampilan akhir yang diinginkan (matriks di input oleh user) :
## Program C++ Perkalian Matriks 2x2 ## ========================================= Input Matriks A ------------------- Baris 1, kolom 1 = 4 Baris 1, kolom 2 = 3 Baris 2, kolom 1 = 2 Baris 2, kolom 2 = 1 Input Matriks B ------------------- Baris 1, kolom 1 = 10 Baris 1, kolom 2 = 20 Baris 2, kolom 1 = 30 Baris 2, kolom 2 = 40 Matriks A: 4 3 2 1 Matriks B: 10 20 30 40 Matriks A * Matriks B: 130 200 50 80
Tips Membuat Kode Program Perkalian Matriks 2 x 2
Soal ini melatih pemahaman tentang array 2 dimensi dan perulangan bersarang (nested loop). Berikut tutorial pendahuluan yang bisa diikuti:
- Pengertian Variabel dalam Bahasa C++
- Tipe Data Array Bahasa C++
- Perulangan FOR Bahasa C++
- Cara Membuat Array 2 Dimensi
- Cara Membuat Matriks 2×2
Mengutip wikipedia, perkalian matriks adalah suatu operasi biner dari dua matriks yang menghasilkan sebuah matriks. Agar dua matriks dapat dikalikan, banyaknya kolom pada matriks pertama harus sama dengan banyaknya baris pada matriks kedua.
Rumus perkalian matriks adalah: kalikan setiap elemen baris pertama di matriks pertama dengan setiap elemen kolom pertama di matriks kedua, lalu jumlahkan hasilnya. Hasil dari perkalian akan menjadi elemen pada baris pertama dan kolom pertama pada matriks hasil. Lanjutkan proses ini untuk semua elemen matriks.
Berikut ilustrasi perkalian matrik 2×2:
Untuk membuat kode program C++ perkalian matriks, kita perlu perulangan bersarang (nested loop) untuk proses input dan proses menampilkan nilai matriks. Silahkan coba rancang sebentar kode programnya.
Kode Program C++ Perkalian Matriks 2 x 2 (statis)
Berikut salah satu solusi dari soal membuat perkalian matriks 2×2 dalam bahasa pemrograman C++ (versi statis, matriks ditulis langsung dari dalam kode program):
#include <iostream> #include <iomanip> using namespace std; int main() { cout << "## Program C++ Perkalian Matriks 2x2 ##" << endl; cout << "=========================================" << endl; cout << endl; int matriksA[2][2], matriksB[2][2], matriksHasil[2][2],i, j, k; // isi elemen matriksA matriksA[0][0] = 1; matriksA[0][1] = 2; matriksA[1][0] = 3; matriksA[1][1] = 4; // isi elemen matriksB matriksB[0][0] = 5; matriksB[0][1] = 6; matriksB[1][0] = 7; matriksB[1][1] = 8; // tampilkan isi matriksA cout << "Matriks A: " << endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << setw(3) << matriksA[i][j] << " "; } cout << endl; } cout << endl; // tampilkan isi matriksB cout << "Matriks B: " << endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << setw(3) << matriksB[i][j] << " "; } cout << endl; } cout << endl; // proses perhitungan matriksA * matriksB for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ for(k = 0; k < 2; k++){ matriksHasil[i][j] = matriksHasil[i][j] + (matriksA[i][k] * matriksB[k][j]); } } } // tampilkan isi matriksHasil cout << "Matriks A * Matriks B: " << endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << setw(3) << matriksHasil[i][j] << " "; } cout << endl; } return 0; }
Selain header #include <iostream>
, di awal kode program juga ada perintah #include <iomanip>
. Header ini diperlukan karena nantinya saya akan mengakses perintah setw() untuk merapikan tampilan matriks.
Di baris 12 terdapat deklarasi 6 variabel: matriksA, matriksB, matriksHasil, i, j, dan k.
Variabel matriksA dan MatriksB akan dipakai untuk menampung semua element matriks. Karena kita membuat matriks 2×2, variabel ini diset sebagai array dengan perintah matriksA[2][2] dan matriksB[2][2]. Total, terdapat 4 elemen yang bisa ditampung.
Variabel matriksHasil disiapkan untuk menampung hasil perkalian matriksA dengan MatriksB.
Sedangkan variabel i, j, dan k disiapkan sebagai variabel counter untuk proses perulangan.
Proses pengisian elemen matriksA dan matriksB dilakukan antara baris 15-24. Harap selalu di ingat bahwa index array mulai dari 0, bukan 1.
Di baris 38-43 terdapat perulangan for untuk menampilkan semua isi elemen matriksA dan MatriksB. Ini adalah perulangan bersarang (nested loop), dimana ada perulangan di dalam perulangan.
Perulangan luar dengan variabel counter i dipakai untuk mengakses baris matriks, dimulai dari i = 1
hingga i < 2
. Sedangkan perulangan dalam dengan variabel counter j dipakai untuk mengakses kolom matriks. Hal yang sama juga dilakukan untuk matriksB dengan perulangan for di baris 38-42.
Tambahan perintah setw(3)
berguna untuk mengatur tampilan angka matriks rata kiri sebanyak 3 digit.
Operasi perkalian matriksA dengan matriksB dilakukan oleh perulangan for di baris 47-53. Kali ini kita butuh 3 perulangan bersarang dengan variabel counter i, j dan k. Hasil perkalian akan disimpan ke dalam matriksHasil, untuk kemudian ditampilkan di akhir kode program.
Kode Program C++ Perkalian Matriks 2 x 2 (dinamis)
Berikut salah satu solusi dari soal membuat perkalian matriks 2×2 dalam bahasa pemrograman C++ (versi dinamis, nilai elemen matriks akan di input oleh user):
#include <iostream> #include <iomanip> using namespace std; int main() { cout << "## Program C++ Perkalian Matriks 2x2 ##" << endl; cout << "=========================================" << endl; cout << endl; int matriksA[2][2], matriksB[2][2], matriksHasil[2][2],i, j, k; // proses input elemen matriksA cout << " Input Matriks A "<< endl; cout << "-------------------"<< endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << "Baris " <<i+1<<", kolom "<<j+1<< " = "; cin >> matriksA[i][j]; } } cout << endl; // proses input elemen matriksB cout << " Input Matriks B "<< endl; cout << "-------------------"<< endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << "Baris " <<i+1<<", kolom "<<j+1<< " = "; cin >> matriksB[i][j]; } } cout << endl; // tampilkan isi matriksA cout << "Matriks A: " << endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << setw(3) << matriksA[i][j] << " "; } cout << endl; } cout << endl; // tampilkan isi matriksB cout << "Matriks B: " << endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << setw(3) << matriksB[i][j] << " "; } cout << endl; } cout << endl; // proses perhitungan matriksA * matriksB for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ for(k = 0; k < 2; k++){ matriksHasil[i][j] = matriksHasil[i][j] + (matriksA[i][k] * matriksB[k][j]); } } } // tampilkan isi matriksHasil cout << "Matriks A * Matriks B: " << endl; for(i = 0; i < 2 ; i++){ for(j = 0; j < 2; j++){ cout << setw(3) << matriksHasil[i][j] << " "; } cout << endl; } return 0; }
Untuk versi matriks dinamis, kode programnya sedikit lebih panjang karena kita perlu menambah 2 perulangan for untuk proses input. Selain itu sisa kode program sama seperti di versi statis.
Demikian soal dan jawaban kode program perkalian matriks 2×2 dalam bahasa C++.
Latihan ini masih punya berbagai variasi lain, misalnya membuat pengurangan matriks, atau perkalian matriks 3×3. Kode programnya akan kita bahas dalam latihan terpisah.