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