Title: Diziler
1Diziler
2Diziler
Dizi Tanimi Dizi Elemanlarina Deger Atama Diziler
ve Göstergeler 2-Boyutlu Diziler
3Dizi Tanimi
Degiskenler ayni anda tek bir deger tutabilen
temel degiskenler ve birden fazla deger
saklayabilen bilesik degiskenler olmak üzere
ikiye ayrilir. Temel degiskenler bellekte tek
bir hücreyi tanimlayip, içlerinde tek bir degeri
tutabilirler. Diziler ise ardarda siralanmis
bellek hücreleridirler. Diziler bu baglamda
bilesik degiskenlerdir ve bellekte ayni anda
birden fazla degerin saklamasini mümkün kilarlar.
4Dizi Tanimi
veri_tipi dizi_ismi eleman_sayisi
Bellek Görüntüsü
5Dizi Tanimi
Örnek int not4 int i
not020
20
not2 not010
20
30
i0 noti90 noti70
90
30
70
6Dizi Elemanlarina Deger Atama
int a3,b scanf(d, b) a2b
veya
int a3 scanf(d, a2)
7- Dizinin elemanlarina deger verilmesi tanimlama
aninda yapilabilir. - int a5 25, 18 20 0,29
- Dizilerin bellekte saklanma biçimi Erisimin
kolay olmasi için dizinin tüm elemanlari pespese
saklanir.
8Dizi Elemanlarina Deger Atama
ÖrnekKullanicidan alinan 5 tamsayi degerini bir
dizide saklayan ve bu degerlerin ortalamasini
bulan bir program yazalim
include ltstdio.hgt int main(void) int
a5 int i,toplam double orta /Kullanici
degerlerinin dizide saklanmasi/ printf(Bes
tamsayi giriniz) for(i0ilt5i)
scanf(d,ai) /Toplam ve ortalamanin
bulunmasi/ toplam0 for(i0ilt5i)
toplamtoplamai orta toplam/5.0
printf(Ortalama5.2f,orta) return
(0)
92-Boyutlu Diziler
Her elemani bir boyutlu dizi olan yapilara ise
çok boyutlu diziler denir. Bu bölümde matris veya
tablo olarak da bilinen 2-boyutlu dizilere
deginecegiz.
veri_tipi dizi_ismisatir_büyüklügüsütun_
büyüklügü
int not330
102-Boyutlu Diziler
2-Boyutlu Dizilere Deger Atama
scanf(d, not290)
not1190
Tanimlama Sirasinda Deger Atama
satir yönünde atama
112-Boyutlu Diziler
Tanimlama Sirasinda Deger Atama
122-Boyutlu Diziler
Tanimlama Sonrasinda Satir Yönünde Deger Atama
int a303 for(satir0 satirlt30 satir)
for (sutun0sutunlt3 sutun) asatirsutun0
132-Boyutlu Diziler
Tanimlama Sonrasinda Sütun Yönünde Deger Atama
int a303 for(sutun0 sutun lt3 sutun)
for (satir0satirlt30satir) asatirsutun0
...
...
14Örnek 10 elemanli iki dizinin toplamini üçüncü
bir diziye yazan program.
15Örnek 10 elemanli iki dizinin toplamini üçüncü
bir diziye yazan program.
- / Iki dizinin elemanlarinin toplanmasi/
- for(i0ilt5i)
- CiAiBi
- / C dizisinin yazdirilmasi /
- printf("C dizisi\n")
- for(i0ilt5i)
- printf("d\t",Ci)
-
- include ltstdio.hgt
- main()
-
- int A5, B5,C5
- int i
- printf("A dizinin elemanlarini giriniz")
- for(i0ilt5i)
- printf("Ad", i)
- scanf ("d",Ai)
-
- printf("B dizinin elemanlarini giriniz")
- for(i0ilt5i)
- printf("Bd", i)
- scanf ("d",Bi)
16Örnek 10 elemanli A dizisinin en küçük elemani
bulup yazan program .
17Örnek 10 elemanli A dizisinin en küçük elemani
bulup yazan program .
- include ltstdio.hgt
- main()
-
- int A10
- int i,enk
- for (i0ilt10i)
- printf("Ad", i)
- scanf("d",Ai)
-
- enkA0
- for(i0ilt10i)
- if (enkgtAi) enkAi
- printf("Dizinin en küçük elemani d dir", enk)
-
-
18Örnek 10 elemanli A dizisinin tek elemanlarindan
B dizisini olusturan program
19Örnek 10 elemanli A dizisinin tek elemanlarindan
B dizisini olusturan program
- include ltstdio.hgt
- main()
-
- int A10,B10
- int i,j
- // A dizisinin elemanlarinin okunmasi
- for(i0ilt10i)
- printf("Ad",i)
- scanf("d",Ai)
-
- j0
- for(i0ilt10i)
- if (Ai21)
- BjAi
- j
-
-
- // B dizisinin yazdirilmasi
- for(i0iltji)
20Örnek 25 kisilik bir sinifin sinav sonuçlarini
okuyup ortalamasini bulan program
- include ltstdio.hgt
- main()
-
- int ogr25
- int i, toplam
- float ortalama
- /Ogrenci notlarinin okunmasi/
- for(i0ilt25i)
- printf("d\inci ögrencinin sinav notunu
giriniz", i) - scanf ("d",ogri)
-
- toplam0
- for(i0ilt25i)
- toplamtoplamogri
- ortalamatoplam/25
- printf("sinif ortalamasi f dir",ortalama)
212-Boyutlu Diziler
ÖrnekKullanicinin, 30 kisilik bir siniftaki her
ögrenci için 3er sinav notu girecegi ve her
sinav için sinif ortalamasinin ekranda
gösterilecegi bir program yaziniz. include
ltstdio.hgt int main(void) int not303
int i,j,toplam double orta /
Kullanicidan notlarin alinmasi/
for(i0ilt30i) printf(d. ogrenci
notlari,i1) for(j0jlt3j)
scanf(d, notij) /Her
sinavin ortalamasinin bulunmasi/
for(j0jlt3j) toplam0
for(i0ilt30i) toplamnotij
ortatoplam/30.0
printf(d. sinav ortalamasi 5.2f\n,j1,orta)
return (0)
22- // dizilerVeDonguler.c
- include ltstdio.hgt
- int main()
- int i0
- int dizi10
- // diziyi doldur
- for(i0ilt10i)
- dizii i i
-
- // diziyi yazdir
- i0
- while(ilt10)
- printf("dizid d\n",i,dizii)
- i
23- // ikiBoyutluDiziOkuYaz
- include ltstdio.hgt
- int main()
-
- int i0,j0
- int matris34
- // diziye yaz
- for(i0ilt3i) // satirlar icin
- for(j0jlt4j) // kolonlar icin
- matrisij i j
-
-
- // diziden oku
- for(i0ilt3i) // satirlar icin
- for(j0jlt4j) // kolonlar icin
- printf("d\t",matrisij)
24- // dogrusalSiralama.c
- include ltstdio.hgt
- void sirala()
- void diziyiYazdir()
- int sayilar15 102,97,34,65,324,21,546,2321,5,
123,122121,7,13,675,0 - void sirala()
- int i0, j0, yedek0
- for (i0ilt15i)
- for (ji1jlt15j)
- if (sayilarjltsayilari) // yer
degistir - yedeksayilari
- sayilarisayilarj
- sayilarjyedek
- // if sonu
- // for j sonu
- // for i sonu
-
- void diziyiYazdir()
- int i0
25Siralama
- Dizi elemanlarinin küçükten büyüge ve büyükten
küçüge dogru dizilmesi islemidir. - Farkli performansa sahip bir çok yöntem vardir.
- Buble sort Bu yöntemde ardisil iki yöntem
karsilastirilir. Eger önceki eleman sonrakinden
büyük ise elemanlar yer degistirilir. Bu sekilde
dizi taranir. Eger herhangi bir degisiklik
yapilmis ise islem tekrar edilir.
26Buble sort
- Baslangiç 1. Adim 2.Adim 3.Adim
- 34 21 18 18
- 21 18 21 21
- 18 25 25 25
- 25 34 34 34
27Örnek 10 elemanli dizinin elemanlarini siralayan
program
- include ltstdio.hgt
- main()
-
- int a10
- int i,j,temp
- /dizi elemanlarinin okunmasi/
- for(i0ilt10i)
- printf("dizinin d\inci elemanini
giriniz",i) - scanf ("d",ai)
-
- for(i0ilt10i)
- for (ji1jlt10j)
- if(ai gtaj)
- tempai
- aiaj
- ajtemp
-
- for(i0ilt10i)
- printf("d, ",ai)
28Örnek A ve B matrislerini toplayan program.
- include ltstdio.hgt
- main()
-
- int A33 1,2,3,4, 5, 6, 7, 8, 9
- int B33 2, 4, 8,3,6,9,4,16,64
- int C3 3
- int i, j
- for (i0ilt3i)
- for(j0jlt3 j)
- CijAijBij
- // C matrisinin yazdirilmasi
- for (i0ilt3i)
- for(j0jlt3 j)
- printf("d ", Cij)
- printf("\n")
-
-
29Örnek A matrisinin içindeki en büyük ve en küçük
sayiyi bulan program
- include ltstdio.hgt
- main()
-
- int A33
- int enb
- int enk
- int i, j
- // A matrisinin elemanlarinin okunmasi
- for (i0ilt3i)
- for(j0jlt3j)
- printf("Add",i,j)
- scanf("d",Aij)
-
- enbA00
- enkA00
- //A matrisinin enk ve enk elemanlarinin
bulunmasi - for (i0ilt3i)
- for(j0jlt3 j)
- if (enbltAij) enbAij