- Mesaj
- 1.864
- Çözümler
- 54
- Beğeni
- 1.719
- Puan
- 1.370
- Ticaret Puanı
- 3
Bildiğiniz gibi bu seriye başlamıştım. Amacım kendim kod öğrenirken 1 satırda olsun okuyucuyada birşeyler katmak ve kendime not çıkartmaktı. Ama çeşitli sebeplerle ara vermem gerekmişti. Şimdi bu seriyi bitirmeyi planlıyorum. Paylaşımlarım son hızla devam edicek. Ancak şuanda hergün konu atmak yerine haftalık atmayı düşünüyorum bu arada da metin2 ile ilgili sistem vs ya da bu seri ile ilgili bilgilendirici mesajlar konular açabilirim. Haftanın belirli bi günü değilde sonraki konuyu ne zaman pekiştirir ve anlatmaya hazır bulursam kendimi o zaman gelip konu açacağım. Konuyla ilgili herhangi bir şeyde rahatsızlık vermekten çekinmeyin. Hemen gelin yazın ve kod arkadaşı olalaım.
Şimdi konumuza geçelim. (Not: Konuları bodoslama yazıyorum aklımda kaldıkça kaynaklardan öğrendikçe sonra yapay zekaya atıp konusallaştırıyorum ki anlaşılması ve yazım hataları olmaması için. Eğer kötü görünüyosa ya da önerileriniz varsa mutlaka söyleyin. )
Çok Boyutlu Array Nedir?
Çok boyutlu array, array içinde array barındırır. Yani bir dizi elemanının kendisi başka bir dizidir. Arrayları bilmiyorsanız bu konuyu anlamanız zor olabilir. Öncelikle bir önceki konumuz olan "C++ | Birlikte Yazılım Öğrenelim Serisi - Arraylar" konusunu öğrenin.Arraylar Şu şekilde tanımlanır:
veri_tipi(değişken_türü) dizi_adi[boyut];
Çoklu Arraylar ise :
veri_tipi(değişken_türü) dizi_adi[boyut1][boyut2];
Burada:
- boyut1 → satır sayısı
- boyut2 → sütun sayısı anlamına gelir.
En Yaygın Tür: 2 Boyutlu Array (Matris)
Örnek tanımlama:
Bu yapı toplam 3 satır, 4 sütundan oluşan bir matristir.C++:int matris[3][4];
Yani toplam eleman sayısı: 3 × 4 = 12 elemandır.
Tanımlama + Değer Atama
Düz formatta:
C++:int sayilar[2][3] = { {1, 2, 3}, {4, 5, 6} };
Satır satır gösterim:
- 1.satır → 1 2 3
- 2.satır → 4 5 6
Çok Boyutlu Array’larda Eleman Erişimi
Elemanlara ulaşmak için [satır][sütun] şeklinde kullanılır.
Örnek:
C++:
cout << sayilar[0][1]; // Çıktı: 2
cout << sayilar[1][2]; // Çıktı: 6
Çıktılar kafa karıştırabilir. Şöyle açıklayalım;
Önce diziyi hatırlayalım.
C++:
int sayilar[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
C++:
int sayilar[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
1)
- 0. satır → {1, 2, 3}
- 1. sütun → Bu satırdaki ikinci eleman
Çıktı: 2
2)
- 1. satır → {4, 5, 6}
- 2. sütun → Bu satırdaki üçüncü eleman
Çıktı: 6
Kısaca mantık:
İlk köşeli parantez → hangi satır?sayilar[satır_indeksi][sütun_indeksi]
İkinci köşeli parantez → o satırdaki hangi eleman?
Bildiğiniz gibi önceki konularımızda döngüleri görmüştük gelin onlarla arrayları inceleyelim.
Genellikle iki tane for döngüsü kullanılır:
C++:
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << sayilar[i][j] << " ";
}
cout << endl;
}
Bu kod satır satır tüm matrisi ekrana basar.
Peki bunu kullanıcıdan almamız gerekirse ?
Kullanıcıdan Çok Boyutlu Array Alma Örneği
C++:
int tablo[2][2];
cout << "2x2 tablo için değer giriniz:\n";
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
cin >> tablo[i][j];
}
}
Son olarak bu konuyla ilgili sık yapılabilecek hatalar.
Boyutları karıştırmak
C++:
int d[3][4];
cout << d[3][0]; // HATA: son satır 2 indeksindedir
İç içe döngü yazmayı unutmak
Yalnızca tek döngüyle tüm matrisi yazdırmaya çalışmak hataya neden olur.
Başlangıç değerlerini satır-sütun düzenine göre vermemek
Aşağıdaki örnek derlenir ama mantıksal hata üretir:
C++:
int x[2][3] = {1,2,3,4}; // eksik elemanlar otomatik 0 olur
Bu dersimizde C++ çok boyutlu array yapısını, kullanım amacını, tanımlama biçimlerini ve sıkça yapılan hataları ele aldık. Bir sonraki derslerde çok boyutlu dizilerin daha dinamik alternatifleri olan vector ve pointer tabanlı yapılara giriş yapacağız. Takipte kalın.
Not : Olası hata bildirimleri, iletişim veya gelişmelerden erken haber almak için discord kanalıma gelebilirsiniz.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Önemli not: Bu konu ve açacağım diğer konular tamamen kendime ait konular herhangi bir yerden alıntı değildir.
MMOTutkunlarına özel içeriktir.
Lütfen alacaksanız bile kaynak gösteriniz.
Sevgilerle
MMOTutkunlarına özel içeriktir.
Lütfen alacaksanız bile kaynak gösteriniz.
Sevgilerle