C++ Çok Boyutlu Diziler

C++’da çok boyutlu diziler, matris veya tablo gibi satır ve sütunlardan oluşan veri yapıları oluşturmak için kullanılır. En yaygın kullanılan çok boyutlu dizi türü 2 boyutlu dizilerdir, ancak daha fazla boyut da tanımlanabilir.


1. Çok Boyutlu Dizi Tanımlama

Çok boyutlu diziler birden fazla indis ile erişilebilen veri yapılarıdır. Genel sözdizimi şu şekildedir:

veri_tipi dizi_adi[satır_sayısı][sütun_sayısı];

Örneğin, 3 satır ve 4 sütundan oluşan bir tamsayı dizisi tanımlayalım:

int matris[3][4];

Bu matris 3 satır ve 4 sütun içerir ve bellekte aşağıdaki şekilde saklanır:

matris[0][0]  matris[0][1]  matris[0][2]  matris[0][3]  
matris[1][0]  matris[1][1]  matris[1][2]  matris[1][3]  
matris[2][0]  matris[2][1]  matris[2][2]  matris[2][3]  


2. Çok Boyutlu Diziye Değer Atama ve Erişim

Dizi elemanlarına indis numarası kullanılarak değer atanır ve erişilir:

#include <iostream>
using namespace std;

int main() {
    int matris[2][3] = {
        {1, 2, 3}, 
        {4, 5, 6}
    };

    cout << "matris[0][0]: " << matris[0][0] << endl;  
    cout << "matris[1][2]: " << matris[1][2] << endl;

    return 0;
}

Çıktı:

matris[0][0]: 1  
matris[1][2]: 6  


3. Kullanıcıdan Veri Alarak Dizi Doldurma

Bir 2 boyutlu diziye kullanıcıdan giriş alarak değer atayalım ve ekrana yazdıralım:

#include <iostream>
using namespace std;

int main() {
    int matris[2][3];

    cout << "2x3 matris için değerleri giriniz:" << endl;
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            cout << "Eleman [" << i << "][" << j << "]: ";
            cin >> matris[i][j];
        }
    }

    cout << "\nGirilen matris:\n";
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            cout << matris[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

Örnek Giriş:

1 2 3  
4 5 6  

Çıktı:

Girilen matris:
1 2 3  
4 5 6  


4. Çok Boyutlu Diziler ile İşlemler

a) Matrisin Transpozunu Alma

Bir matrisin satır ve sütunlarını yer değiştirerek transpozunu alalım:

#include <iostream>
using namespace std;

int main() {
    int matris[2][3] = {
        {1, 2, 3}, 
        {4, 5, 6}
    };
    int transpoz[3][2];

    // Transpoz işlemi
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            transpoz[j][i] = matris[i][j];
        }
    }

    cout << "Transpoz Matris:\n";
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            cout << transpoz[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

Çıktı:

Transpoz Matris:
1 4  
2 5  
3 6  


b) Matris Toplamı

İki aynı boyutlu matrisin toplamını bulalım:

#include <iostream>
using namespace std;

int main() {
    int matris1[2][2] = {
        {1, 2}, 
        {3, 4}
    };
    int matris2[2][2] = {
        {5, 6}, 
        {7, 8}
    };
    int toplam[2][2];

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            toplam[i][j] = matris1[i][j] + matris2[i][j];
        }
    }

    cout << "Toplam Matris:\n";
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            cout << toplam[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

Çıktı:

Toplam Matris:
6 8  
10 12  


c) Matris Çarpımı

İki matrisin çarpımını hesaplayalım:

#include <iostream>
using namespace std;

int main() {
    int A[2][3] = {
        {1, 2, 3}, 
        {4, 5, 6}
    };
    int B[3][2] = {
        {7, 8}, 
        {9, 10}, 
        {11, 12}
    };
    int C[2][2] = {0};

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 3; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }

    cout << "Çarpım Matrisi:\n";
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            cout << C[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

Çıktı:

Çarpım Matrisi:
58 64  
139 154  

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir