Contoh Program C++ Array 2 Dimensi: Panduan Lengkap dengan Implementasi Praktis

By | August 16, 2025

Dalam pemrograman C++, contoh program C++ array 2 dimensi merupakan topik fundamental yang wajib dikuasai setiap programmer. Array 2 dimensi atau yang sering disebut matrix adalah struktur data yang memungkinkan kita menyimpan data dalam bentuk baris dan kolom, seperti tabel atau spreadsheet. Artikel ini akan membahas secara mendalam berbagai contoh implementasi array 2 dimensi dalam C++.

Pengertian Array 2 Dimensi dalam C++

Array 2 dimensi adalah array yang memiliki dua indeks, yaitu indeks baris dan indeks kolom. Struktur ini sangat berguna untuk merepresentasikan data dalam bentuk matriks, tabel, atau grid. Dalam C++, array 2 dimensi dapat dideklarasikan dengan syntax:

// Syntax dasar array 2 dimensi
tipe_data nama_array[jumlah_baris][jumlah_kolom];

// Contoh deklarasi
int matrix[3][4];  // Array 3 baris x 4 kolom
double nilai[5][3]; // Array 5 baris x 3 kolom
char papan[8][8];  // Array 8 baris x 8 kolom (seperti papan catur)
💡 Pro Tip: Untuk memperdalam pemahaman tentang struktur data dan algoritma C++, Anda bisa mengikuti kelas programming C++ yang menyediakan tutorial lengkap dari basic hingga advanced.

Contoh Program 1: Deklarasi dan Inisialisasi Array 2D

#include <iostream>
using namespace std;

int main() {
    // Deklarasi dan inisialisasi array 2D
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    cout << "=== MATRIX 3x3 ===" << endl;
    
    // Menampilkan array menggunakan nested loop
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }
    
    return 0;
}
Output:
=== MATRIX 3×3 ===
1 2 3
4 5 6
7 8 9

Contoh Program 2: Input Data ke Array 2D dari User

#include <iostream>
using namespace std;

int main() {
    int baris, kolom;
    
    cout << "Masukkan jumlah baris: ";
    cin >> baris;
    cout << "Masukkan jumlah kolom: ";
    cin >> kolom;
    
    // Deklarasi array dinamis
    int matrix[baris][kolom];
    
    cout << "\n=== INPUT DATA MATRIX ===" << endl;
    
    // Input data dari user
    for(int i = 0; i < baris; i++) {
        for(int j = 0; j < kolom; j++) {
            cout << "Masukkan elemen [" << i << "][" << j << "]: ";
            cin >> matrix[i][j];
        }
    }
    
    cout << "\n=== MATRIX YANG DIINPUT ===" << endl;
    
    // Menampilkan matrix
    for(int i = 0; i < baris; i++) {
        for(int j = 0; j < kolom; j++) {
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }
    
    return 0;
}

Contoh Program 3: Operasi Penjumlahan Matrix

#include <iostream>
using namespace std;

int main() {
    const int ROWS = 3;
    const int COLS = 3;
    
    int matrixA[ROWS][COLS] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    int matrixB[ROWS][COLS] = {
        {9, 8, 7},
        {6, 5, 4},
        {3, 2, 1}
    };
    
    int hasil[ROWS][COLS];
    
    cout << "=== PENJUMLAHAN MATRIX ===" << endl;
    
    // Proses penjumlahan
    for(int i = 0; i < ROWS; i++) {
        for(int j = 0; j < COLS; j++) {
            hasil[i][j] = matrixA[i][j] + matrixB[i][j];
        }
    }
    
    // Menampilkan Matrix A
    cout << "\nMatrix A:" << endl;
    for(int i = 0; i < ROWS; i++) {
        for(int j = 0; j < COLS; j++) {
            cout << matrixA[i][j] << "\t";
        }
        cout << endl;
    }
    
    // Menampilkan Matrix B
    cout << "\nMatrix B:" << endl;
    for(int i = 0; i < ROWS; i++) {
        for(int j = 0; j < COLS; j++) {
            cout << matrixB[i][j] << "\t";
        }
        cout << endl;
    }
    
    // Menampilkan hasil penjumlahan
    cout << "\nHasil A + B:" << endl;
    for(int i = 0; i < ROWS; i++) {
        for(int j = 0; j < COLS; j++) {
            cout << hasil[i][j] << "\t";
        }
        cout << endl;
    }
    
    return 0;
}

Contoh Program 4: Transpose Matrix

#include <iostream>
using namespace std;

int main() {
    const int ROWS = 3;
    const int COLS = 4;
    
    int matrix[ROWS][COLS] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    
    int transpose[COLS][ROWS];
    
    cout << "=== TRANSPOSE MATRIX ===" << endl;
    
    // Proses transpose
    for(int i = 0; i < ROWS; i++) {
        for(int j = 0; j < COLS; j++) {
            transpose[j][i] = matrix[i][j];
        }
    }
    
    // Menampilkan matrix asli
    cout << "\nMatrix Asli (" << ROWS << "x" << COLS << "):" << endl;
    for(int i = 0; i < ROWS; i++) {
        for(int j = 0; j < COLS; j++) {
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }
    
    // Menampilkan hasil transpose
    cout << "\nMatrix Transpose (" << COLS << "x" << ROWS << "):" << endl;
    for(int i = 0; i < COLS; i++) {
        for(int j = 0; j < ROWS; j++) {
            cout << transpose[i][j] << "\t";
        }
        cout << endl;
    }
    
    return 0;
}

Contoh Program 5: Mencari Nilai Maksimum dan Minimum

#include <iostream>
using namespace std;

int main() {
    int matrix[4][3] = {
        {15, 23, 8},
        {42, 7, 19},
        {31, 56, 12},
        {9, 38, 27}
    };
    
    int maksimum = matrix[0][0];
    int minimum = matrix[0][0];
    int maxRow = 0, maxCol = 0;
    int minRow = 0, minCol = 0;
    
    cout << "=== PENCARIAN NILAI MAX & MIN ===" << endl;
    
    // Menampilkan matrix
    cout << "\nMatrix 4x3:" << endl;
    for(int i = 0; i < 4; i++) {
        for(int j = 0; j < 3; j++) {
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }
    
    // Mencari nilai maksimum dan minimum
    for(int i = 0; i < 4; i++) {
        for(int j = 0; j < 3; j++) {
            if(matrix[i][j] > maksimum) {
                maksimum = matrix[i][j];
                maxRow = i;
                maxCol = j;
            }
            
            if(matrix[i][j] < minimum) {
                minimum = matrix[i][j];
                minRow = i;
                minCol = j;
            }
        }
    }
    
    cout << "\n=== HASIL PENCARIAN ===" << endl;
    cout << "Nilai Maksimum: " << maksimum << " pada posisi [" << maxRow << "][" << maxCol << "]" << endl;
    cout << "Nilai Minimum: " << minimum << " pada posisi [" << minRow << "][" << minCol << "]" << endl;
    
    return 0;
}
💡 Learning Path: Untuk menguasai algoritma pencarian dan sorting dalam C++, ikuti kelas algoritma C++ yang membahas berbagai teknik optimasi dan implementasi advanced.

Contoh Program 6: Perkalian Matrix

#include <iostream>
using namespace std;

int main() {
    const int ROWS_A = 2, COLS_A = 3;
    const int ROWS_B = 3, COLS_B = 2;
    
    // Matrix A (2x3)
    int matrixA[ROWS_A][COLS_A] = {
        {1, 2, 3},
        {4, 5, 6}
    };
    
    // Matrix B (3x2)
    int matrixB[ROWS_B][COLS_B] = {
        {7, 8},
        {9, 10},
        {11, 12}
    };
    
    // Matrix hasil (2x2)
    int hasil[ROWS_A][COLS_B];
    
    cout << "=== PERKALIAN MATRIX ===" << endl;
    
    // Inisialisasi matrix hasil dengan 0
    for(int i = 0; i < ROWS_A; i++) {
        for(int j = 0; j < COLS_B; j++) {
            hasil[i][j] = 0;
        }
    }
    
    // Proses perkalian matrix
    for(int i = 0; i < ROWS_A; i++) {
        for(int j = 0; j < COLS_B; j++) {
            for(int k = 0; k < COLS_A; k++) {
                hasil[i][j] += matrixA[i][k] * matrixB[k][j];
            }
        }
    }
    
    // Menampilkan hasil
    cout << "\nHasil A x B (2x2):" << endl;
    for(int i = 0; i < ROWS_A; i++) {
        for(int j = 0; j < COLS_B; j++) {
            cout << hasil[i][j] << "\t";
        }
        cout << endl;
    }
    
    return 0;
}

Tips dan Best Practices

1. Inisialisasi Array

  • Selalu inisialisasi array sebelum digunakan
  • Gunakan nested loop untuk mengakses semua elemen
  • Perhatikan batas indeks array (0 hingga n-1)

2. Memory Management

  • Array 2D menggunakan memori secara berurutan
  • Ukuran array harus diketahui saat compile time
  • Untuk array dinamis, gunakan pointer atau vector

3. Performance Optimization

  • Akses elemen secara row-major untuk performa optimal
  • Hindari operasi yang tidak perlu dalam nested loop
  • Gunakan const untuk array yang tidak berubah
⚠️ Penting! Selalu pastikan indeks array tidak melebihi batas yang telah dideklarasikan untuk menghindari error “array out of bounds”.
🚀 Advanced Learning: Setelah menguasai array 2D, lanjutkan dengan mempelajari struktur data advanced seperti linked list, stack, queue, dan tree untuk menjadi programmer C++ yang lebih kompeten.

🙋‍♂️ Frequently Asked Questions (FAQ)

Q: Apa perbedaan array 1D dan 2D dalam C++?
A: Array 1D hanya memiliki satu indeks (seperti list), sedangkan array 2D memiliki dua indeks (baris dan kolom) seperti tabel atau matrix. Array 2D cocok untuk merepresentasikan data dalam bentuk grid.
Q: Bagaimana cara mendeklarasikan array 2D dengan ukuran dinamis?
A: Dalam C++ standar, ukuran array harus diketahui saat compile time. Untuk array dinamis, gunakan pointer ganda (int**) atau lebih baik lagi gunakan vector<vector<int>> dari STL.
Q: Mengapa menggunakan nested loop untuk array 2D?
A: Nested loop diperlukan karena array 2D memiliki dua dimensi. Loop luar untuk iterasi baris, loop dalam untuk iterasi kolom. Ini memungkinkan akses ke setiap elemen dalam matrix.
Q: Apa itu matrix transpose dan bagaimana implementasinya?
A: Matrix transpose adalah operasi menukar baris menjadi kolom. Implementasinya: transpose[j][i] = matrix[i][j]. Matrix berukuran m×n akan menjadi n×m setelah di-transpose.
Q: Bagaimana cara mengoptimalkan performa operasi matrix?
A: Gunakan akses row-major (baris dulu, kolom kemudian), hindari operasi berulang dalam loop, gunakan algoritma yang efisien, dan pertimbangkan cache locality untuk matrix besar.
Q: Kapan sebaiknya menggunakan array 2D vs vector 2D?
A: Gunakan array 2D untuk ukuran tetap dan performa maksimal. Gunakan vector 2D untuk ukuran dinamis, kemudahan penggunaan, dan fitur STL seperti resize(), push_back(), dll.

Kesimpulan

Memahami contoh program C++ array 2 dimensi adalah fondasi penting dalam pemrograman C++. Array 2D memungkinkan kita untuk mengelola data dalam bentuk matrix yang sangat berguna untuk berbagai aplikasi seperti pengolahan gambar, game development, scientific computing, dan analisis data.

Key Points yang telah dipelajari:

  • Deklarasi dan inisialisasi array 2D
  • Operasi dasar: input, output, pencarian
  • Operasi matrix: penjumlahan, perkalian, transpose
  • Algoritma pencarian dan statistik
  • Best practices dan optimasi performa

Dengan menguasai konsep-konsep ini, Anda sudah memiliki foundation yang kuat untuk mengembangkan aplikasi yang lebih kompleks menggunakan struktur data array 2 dimensi dalam C++.
/script>

Leave a Reply

Your email address will not be published. Required fields are marked *