İki Boyutlu Diziyi Tek Boyutlu İndeksle Dönüştürme

SonsuzUs Her şey › Category: Soru › İki Boyutlu Diziyi Tek Boyutlu İndeksle Dönüştürme
sonsuz Kurucu sordu 5 gün önce
int a[4][3] = {{5, 3, 7}, {6, 8, 7}, {5, 9, 3}, {7, 5, 9}};
int i, j;

void main() {
    for (i = 0; i < 12; i++) {
        j = a[i / 3][i % 3];
        a[j / 3][j % 3] = j;
    }
    printf("%d", a[2][0] + a[2][1] + a[2][2]);
}

Yukarıdaki C programı çalıştırıldığında printf fonksiyonunun üreteceği konsol çıktısı ne olur?

1 Cevap
Burak Bilgin cevapladı 3 gün önce

öncelikle iki boyutlu diziyi yan yana dizip tek boyutluymuş gibi düşünelim. Bu tek boyutlu dizinin elemanları sırayla taranıyor, her elemanın tarandığı anda değerini j değişkenine veriyoruz, sonrasında dizideki j. sayının (dizi indexi 0’dan başlıyor) değeri dizideki indexine eşit oluyor. Mesela dizinin ilk elemanı 5, bu durumda dizinin indexi 5 olan elemanının değeri 7 iken 5 oluyor. Bu şekilde işlem devam ediyor. İşlem sonunda dizi {{5,3,7}, {3,8,5}, {5,7,8}, {10,5,9}} oluyor. Konsol çıktısında dizinin 3. sütunundaki sayıların toplamı isteniyor. Bu işlem bittiğinde bu sütundaki sayılar 5,7,8 oluyor ve toplayınca sonuç 20 çıkıyor.

Cevapla