Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Diziler
2
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Diziler ve Göstergeler 2-Boyutlu Diziler
3
Dizi Tanımı Değişkenler aynı anda tek bir değer tutabilen temel değişkenler ve birden fazla değer saklayabilen bileşik değişkenler olmak üzere ikiye ayrılır. Temel değişkenler bellekte tek bir hücreyi tanımlayıp, içlerinde tek bir değeri tutabilirler. Diziler ise ardarda sıralanmış bellek hücreleridirler. Diziler bu bağlamda bileşik değişkenlerdir ve bellekte aynı anda birden fazla değerin saklamasını mümkün kılarlar.
4
Dizi Tanımı veri_tipi dizi_ismi [eleman_sayısı]; Bellek Görüntüsü:
5
Dizi Tanımı Örnek: int not[4]; int i; not[0]=20; not[2]= not[0]+10;
30 i=0; not[i]=90; not[++i]=70; 90 70 30
6
Dizi Elemanlarına Değer Atama
int a[3],b; scanf(“%d”, &b); a[2]=b; veya int a[3]; scanf(“%d”, &a[2]);
7
Dizinin elemanlarına değer verilmesi tanımlama anında yapılabilir.
int a[5]= {25, 18; 20; 0,29} Dizilerin bellekte saklanma biçimi: Erişimin kolay olması için dizinin tüm elemanları peşpeşe saklanır.
8
Dizi Elemanlarına Değer Atama
Örnek:Kullanıcıdan alınan 5 tamsayı değerini bir dizide saklayan ve bu değerlerin ortalamasını bulan bir program yazalım #include <stdio.h> int main(void) { int a[5]; int i,toplam; double orta; /*Kullanici degerlerinin dizide saklanmasi*/ printf(“Bes tamsayi giriniz:”); for(i=0;i<5;++i) scanf(“%d”,&a[i]); /*Toplam ve ortalamanin bulunmasi*/ toplam=0; toplam=toplam+a[i]; orta= toplam/5.0; printf(“Ortalama=%5.2f”,orta); return (0); }
9
2-Boyutlu Diziler int not[3][30];
Her elemanı bir boyutlu dizi olan yapılara ise çok boyutlu diziler denir. Bu bölümde matris veya tablo olarak da bilinen 2-boyutlu dizilere değineceğiz. veri_tipi dizi_ismi[satır_büyüklüğü][sütun_ büyüklüğü]; int not[3][30];
10
2-Boyutlu Diziler satır yönünde atama 2-Boyutlu Dizilere Değer Atama
scanf(“%d”, ¬[29][0]); not[1][1]=90; Tanımlama Sırasında Değer Atama satır yönünde atama
11
2-Boyutlu Diziler Tanımlama Sırasında Değer Atama
12
2-Boyutlu Diziler Tanımlama Sonrasında Satır Yönünde Değer Atama
int a[30][3]; for(satir=0; satir<30; ++satir) { for (sutun=0;sutun<3; ++sutun) a[satir][sutun]=0; }
13
2-Boyutlu Diziler Tanımlama Sonrasında Sütun Yönünde Değer Atama int a[30][3]; for(sutun=0; sutun <3; ++sutun) for (satir=0;satir<30;++satir) a[satir][sutun]=0; ... ...
14
/* Iki dizinin elemanlarinin toplanmasi*/ for(i=0;i<5;i++)
Örnek: 10 elemanlı iki dizinin toplamını üçüncü bir diziye yazan program. /* Iki dizinin elemanlarinin toplanmasi*/ for(i=0;i<5;i++) C[i]=A[i]+B[i]; /* C dizisinin yazdırılması */ printf("C dizisi:\n"); printf("%d\t",C[i]); } #include <stdio.h> main() { int A[5], B[5],C[5]; int i; printf("A dizinin elemanlarini giriniz"); for(i=0;i<5;i++) { printf("A[%d]=", i); scanf ("%d",&A[i]); } printf("B dizinin elemanlarini giriniz"); { printf("B[%d]=", i); scanf ("%d",&B[i]); }
15
Örnek: 10 elemanlı A dizisinin en küçük elemanı bulup yazan program .
#include <stdio.h> main() { int A[10]; int i,enk; for (i=0;i<10;i++) { printf("A[%d]=", i); scanf("%d",&A[i]); } enk=A[0]; for(i=0;i<10;i++) if (enk>A[i]) enk=A[i]; printf("Dizinin en küçük elemani %d dir", enk);
16
Örnek: 10 elemanlı A dizisinin tek elemanlarından B dizisini oluşturan program
#include <stdio.h> main() { int A[10],B[10]; int i,j; // A dizisinin elemanlarinin okunmasi for(i=0;i<10;i++) { printf("A[%d]=",i); scanf("%d",&A[i]); } j=0; { if (A[i]%2==1) { B[j]=A[i]; j++; // B dizisinin yazdirilmasi for(i=0;i<j;i++) printf("%d,", B[i]);
17
Örnek: 25 kişilik bir sınıfın sınav sonuçlarını okuyup ortalamasını bulan program
#include <stdio.h> main() { int ogr[25]; int i, toplam; float ortalama; /*Ogrenci notlarinin okunmasi*/ for(i=0;i<25;i++) { printf("%d\’inci ögrencinin sinav notunu giriniz", i); scanf ("%d",&ogr[i]); } toplam=0; toplam=toplam+ogr[i]; ortalama=toplam/25; printf("sinif ortalamasi %f dir",ortalama);
18
2-Boyutlu Diziler Örnek:Kullanıcının, 30 kişilik bir sınıftaki her öğrenci için 3’er sınav notu gireceği ve her sınav için sınıf ortalamasının ekranda gösterileceği bir program yazınız. #include <stdio.h> int main(void) { int not[30][3]; int i,j,toplam; double orta; /* Kullanicidan notlarin alinmasi*/ for(i=0;i<30;++i) { printf(“%d. ogrenci notlari:”,i+1); for(j=0;j<3;++j) scanf(“%d”, ¬[i][j]); } /*Her sinavin ortalamasinin bulunmasi*/ { toplam=0; toplam+=not[i][j]; orta=toplam/30.0; printf(“%d. sinav ortalamasi: %5.2f\n”,j+1,orta); return (0);
19
Sıralama Dizi elemanlarının küçükten büyüğe ve büyükten küçüğe doğru dizilmesi işlemidir. Farklı performansa sahip bir çok yöntem vardır. Buble sort: Bu yöntemde ardışıl iki yöntem karşılaştırılır. Eğer önceki eleman sonrakinden büyük ise elemanlar yer değiştirilir. Bu şekilde dizi taranır. Eğer herhangi bir değişiklik yapılmış ise işlem tekrar edilir.
20
Buble sort Başlangıç 1. Adım 2.Adım 3.Adım 34 21 18 18 21 18 21 21
21
Örnek: 10 elemanlı dizinin elemanlarını sıralayan program
#include <stdio.h> main() { int a[10]; int i,j,temp; /*dizi elemanlarinin okunmasi*/ for(i=0;i<10;i++) { printf("dizinin %d\’inci elemanini giriniz",i); scanf ("%d",&a[i]); } for (j=i+1;j<10;j++) if(a[i] >a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; printf("%d, ",a[i]);
22
Örnek: A ve B matrislerini toplayan program.
#include <stdio.h> main() { int A[3][3]={ 1,2,3,4, 5, 6, 7, 8, 9}; int B[3][3]= {{2, 4, 8},{3,6,9},{4,16,64}}; int C[3] [3]; int i, j; for (i=0;i<3;i++) for(j=0;j<3; j++) C[i][j]=A[i][j]+B[i][j]; // C matrisinin yazdirilmasi { for(j=0;j<3; j++) printf("%d ", C[i][j]); printf("\n"); }
23
Örnek: A matrisinin içindeki en büyük ve en küçük sayıyı bulan program
#include <stdio.h> main() { int A[3][3]; int enb; int enk; int i, j; // A matrisinin elemanlarinin okunmasi for (i=0;i<3;i++) for(j=0;j<3;j++) { printf("A[%d][%d]=",i,j); scanf("%d",&A[i][j]); } enb=A[0][0]; enk=A[0][0]; //A matrisinin enk ve enk elemanlarinin bulunmasi for(j=0;j<3; j++) {if (enb<A[i][j]) enb=A[i][j]; if (enk>A[i][j]) enk=A[i][j]; printf("Dizinin en kucuk elemani %d en buyuk elemani %d dir",enk, enb) ;
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.