08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

ÇOK BOYUTLU DİZİLER<br />

C dilinde iki ya da daha çok boyuta sahip diziler tanımlanabilir:<br />

int a[5][10][20];<br />

Yukarıdaki bildirimle a dizisi 3 boyutlu bir dizidir.<br />

int m[5][10];<br />

m dizisi 2 boyutlu bir dizidir.<br />

Uygulamalarda daha çok kullanılan 2 boyutlu dizilerdir. 2 boyutlu diziler matris olarak da<br />

isimlendirilir.<br />

Matrisler<br />

C'de iki boyutlu bir dizi aslında belirli bir boyuttaki tek boyutlu dizilerin dizisi olarak ele<br />

alınır:<br />

int a[5][10];<br />

a dizisi her elemanı 10 elemanlı int türden bir dizi olan 5 elemanlı bir dizidir. Yani a<br />

dizisinin gerçekte boyutu 5' tir. İkinci köşeli ayraç içinde yer alan 10 ifadesi a dizisinin<br />

elemanları olan dizilerin boyutudur.<br />

Bu dizi tüm diğer diziler gibi bellekte bitişik bir blok halinde bulunur. Yani derleyici böyle<br />

bir dizi için bellekte 50 x sizeof(int) byte büyüklüğünde bir blok ayarlar.<br />

Çok boyutlu bir dizinin elemanlarıyla, bu dizinin problem düzlemindeki karşılığı olan<br />

matrisin elemanlarını birbirlerine karıştırmak, sık yapılan hatalardandır.<br />

5 x 10 boyutunda bir matrisin 50 elemanı vardır. Ancak yukarıdaki a dizisinin yalnızca 5<br />

elemanı vardır.<br />

Yukarıdaki dizide yer alan toplam 50 tane int türden nesnenin her birine nasıl ulaşılabilir?<br />

Bunun için köşeli ayraç işleci dizi ismiyle birlikte 2 kez kullanılabilir:<br />

Aşağıdaki programı inceleyin. Bu programda bir matriste yer alan tüm elemanlara 0-100<br />

aralığında rastgele değerler veriliyor. Daha sonra matriste yer alan tüm elemanların<br />

değeri ekrana yazdırılıyor:<br />

#include <br />

#include <br />

#include <br />

#define ROW 5<br />

#define COL 10<br />

int main()<br />

{<br />

int a[ROW][COL];<br />

int i, k;<br />

srand(time(0));<br />

for (i = 0; i < ROW; ++i)<br />

for (k = 0; k < COL; ++k)<br />

a[i][k] = rand() % 100;<br />

/********/<br />

311

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!