C++ Çok Boyutlu Diziler

Diziler yazısında sadece tek boyutlu dizilere üzerinden gitmiştik. Bu yazıda çok boyutlu diziler nasıl tanımlanır ve kullanılır, onu göreceğiz. Aşağıda olduğu gibi bir dizi tanımladık.
int a[2][3];
Yukarıda tanımladığımız a dizisi iki boyutludur. a dizisinin alabileceği maksimum eleman sayısı ise 6. Oluşturduğumuz iki boyutlu a dizisinin yapısını gözümüzde aşağıdaki gibi canlandırabiliriz.
                1.sütun         2.sütun         3.sütun
            ------------------------------------------------
            |              |               |               |
  1.satır   |   a[0][0]    |    a[0][1]    |    a[0][2]    |
            |              |               |               |
            ------------------------------------------------
            |              |               |               |
  2.satır   |   a[1][0]    |    a[1][1]    |    a[1][2]    |
            |              |               |               |
            ------------------------------------------------
Dizinin içerisindeki bir elemana aşağıdaki gibi erişebiliriz ve atama yapabiliriz.
a[1][2] = 21;
Çok boyutlu diziler çoğunlukla matris uygulamalarında kullanılır.

Çok Boyutlu Dizi Başlatma

Çok boyutlu dizileri başlatmanın çeşitli yolları vardır. Örneğin:
int a[3][3] = {5,3,3,1,8,6,3};
Farkettiyseniz son 2 eleman yazmıyor. Derleyici bu başlatma tipinde son elemanlar yoksa 0 değeri olarak algılıyor.
5       3       3
1       8       6
3       0       0
Bir diğer başlatma yöntemi ise aşağıdaki gibidir.
int a[3][3] = {{5,3,3},{1,8,6},{3}};
Yukarıda iki boyutlu diziler üzerinde tanımlamalar yapıldı ancak aynı şekilde üç boyutlu veya istediğiniz boyutta yukarıdaki gibi dizi tanımlayabilir, başlatabilirsiniz.

Çok Boyutlu Dizileri Ekrana Yazdırma

Aşağıdaki örnekte olduğu gibi dizilere erişebilir ve değiştirebilirsiniz.
#include <iostream>
using namespace std;

int main(){
 int a[3][3] = {{5,5,3},{1,8,6},{3}};
 for(int i=0;i<3;i++){
  for(int j=0;j<3;j++){
   cout << "a[" << i << "][" << j << "] = " << a[i][j] << endl;
  }
 }
 return 0;
}

Hiç yorum yok:

Yorum Gönderme