// Örnek Dizi Tanımlama // 100 elemanlı ve dizi adlı bir double dizisi double dizi[100];
int dizi[30]; // 30 elemanlı dizi isimli bir dizi oluşturur. // dizi[0] = 15; // Dizinin ilk elemanına 15 değerini atar. // dizi[16] = 42; // Dizinin 17. elemanına 42 değerini atar. //
#include "stdio.h" main() { int dizi[10]; int id1, id2; dizi[0] = id1 = 27; // dizi[0] : Dizinin ilk elemanını gösterir. // dizi[8] = id2 = 348; // dizi[8] : Dizinin dokuzuncu elemanını gösterir. // printf("%d %d %d %d", id1, id2, dizi[0], dizi[8]); }
#include "stdio.h" main() { char soyad[10]; // Bir karakter dizisi tanimlayalim // soyad[0] = 'B'; soyad[1] = 'A'; soyad[2] = 'Y'; soyad[3] = 'R'; soyad[4] = 'A'; soyad[5] = 'K'; soyad[6] = 'T'; soyad[7] = 'A'; soyad[8] = 'R'; soyad[9] = 0; // Bos karakter - stringin sonu // printf("Soyadi %s dir. n",soyad); printf("Icinden bir karakter: %cn",soyad[2]); printf("Soyadinin bir parcasi: %s n",&soyad[3]); }
#include "stdio.h" main() { int idizi[5]; int id1, id2; for (id1=0, id2=3; id1<5; id1++, id2+=3) { idizi[id1] = id2; printf("%d ", idizi[id1]); } printf("n%d %d", idizi[4], idizi[4] * idizi[4]); }
#include "stdio.h" main() { int idizi[10]; int id1, id2; for (id1=0; id1<10; id1++) { idizi[id1] = id1; printf("%d ", idizi[id1]); } printf("n"); printf("Lutfen bir sayi giriniz: "); scanf("%d", &id2); for (id1=0; id1<10; id1++) { idizi[id1] += id2; printf("%d ", idizi[id1]); } }
Karakter Dizileri : C Programlama Dilinde karakter dizisi olarak tanımlanan bir veri çeşidi yoktur. Karakter dizisi veri desteğini sağlamak için tek boyutlu char diziler olarak kullanılır. Karakter dizisi NULL(0) değer ile sona eren bir char dizidir.
C Programlama Dilinde klavyeden girilecek olan karakter dizileri standart bir kütüphane fonksiyonu olan gets() fonksiyonu ile okutulur. Bu fonksiyon stdio.h başlık dosyasını kullanır.
Örnek 1 :
#include "stdio.h" #include "conio.h" main() { char chdizi[20]; printf("Bir karakter dizisi giriniz (20 karakterden az) :n"); gets(cdizi); printf("n%s", chdizi); getch (); }
Örneğimizde program 20 elemanlık bir karakter dizi bildirimi yaptıktan sonra 20 karakterden az bir karakter dizisi girilmesini ister. Girilen karakter dizisini chdizi adlı diziye atar. Son olarak chdizi dizisini printf fonksiyonu ile ekrana yazar.
#include "stdio.h" #include "conio.h" main() { char chdizi[20]; int id1; printf("Bir karakter dizisi giriniz (20 karakterden az) :n"); gets(chdizi); printf("n%sn", chdizi); printf(chdizi); printf("n"); for (id1=0; chdizi[id1]; id1++) printf("%c", chdizi[id1]); getch (); }
Örnek 3 Bir karakter dizisinin uzunluğunu bulmak :
#include "stdio.h" #include "conio.h" int main(void) { char s[40]; int k = 0; printf("Bir seyler yazin : "); gets(s); while( s[k]!='?' ) k++; printf("Dizinin uzunlugu : %dn",k); getch (); }
Programın Çıktısı :
Örnek 4 Bir karakter dizisinin tersini bulmak :
#include "stdio.h" #include "conio.h" int main(void) { char s[40], gecici; int i, n; printf("Bir seyler yazin : "); gets(s); for(n=0; s[n] != '?'; n++) ; for(i=0; i<n/2; i++){ gecici = s[n-i-1]; s[n-i-1] = s[i]; s[i] = gecici; } printf("Tersi : %sn",s); getch (); }
Programın Çıktısı :
Örneğin bir sayı dizisi olsun ve bu dizinin elemanlarını büyükten küçüğe sıralamamız gereksin. Bubble sort algoritmasında dizide eğer n tane eleman varsa dıştaki döngü diziyi n-1 kare tarar. Dizi elemanlarının birbirleriyle karşılaştırılmasını ise içteki döngü gerçekleştirir. İçteki döngü bitişik dizi elemanlarını karşılaştırır ve eğer önceki eleman sonraki elemandan küçükse bu iki elemanı yer değiştirir. Yer değiştirme işleminde C Programlama dilinde swap adı verilir. Swap işlemi kısaca iki değişkenin değerlerinin üçüncü bir geçici değişken yardımıyla yer değiştirmesidir.
Örnek 1 : Kabarcık Sıralama (Bubble Sort) Algoritması ile birdizinin elemanlarını büyükten küçüğe dogru sıralayan bir C Programı
#include <stdio.h> #define n 10 int main(void) { int a[n] = {100, -250, 400, 125 ,550, 900, 689, 450, 347, 700}; int j,k,gecici; /* Dizinin kendisi */ printf("Once : "); for(k=0; k<n; k++) printf("%5d ",a[k]); /* Sırala */ for(k=0; k<n-1; k++) for(j=0; j<n-1; j++) if( a[j]<a[j+1] ){ gecici = a[j]; a[j] = a[j+1]; a[j+1] = gecici; } /* Sıralama bitti */ printf("nSonra: "); for(k=0; k<n; k++) printf("%5d ",a[k]); printf("n"); return 0; }
Program Çıktısı :
Çok boyutlu dizilerin bildirimi için kullanılan genel yapı :
veritipi diziAdı [boyut1] [boyut2] [boyut3]...
Çok Boyutlu Dizilerde Atama :
#include "stdio.h" #include "conio.h" main() { int idizi[3][4]; idizi[0][0] = idizi[0][1] = idizi[0][2] = idizi[0][3] = 1 ; idizi[1][0] = idizi[1][1] = idizi[1][2] = idizi[1][3] = 2 ; idizi[2][0] = idizi[2][1] = idizi[2][2] = idizi[2][3] = 3 ; printf("%d %d %d %d %dn", idizi[0][0], idizi[0][1], idizi[0][2], idizi[0][3]); printf("%d %d %d %d %dn", idizi[1][0], idizi[1][1], idizi[1][2], idizi[1][3]); printf("%d %d %d %d %dn", idizi[2][0], idizi[2][1], idizi[2][2], idizi[2][3]); getch (); }
Çok boyutlu diziler tek boyutlu diziler gibi bellekte tutulurlar. Tek boyutlu dizilerde olduğu gibi, çok boyutlu dizilerde de başlangıç değeri vermek mümkündür. Örneğin 3 satır ve 4 sütünlu (3x4=12 elemanlı) bir x matrisinin elemanları şöyle tanımlanabilir:
int x[3][4] = {11,34,42,60, 72,99,10,50, 80,66,21,38};
yada
72,99,10,50,
80,66,21,38};
{
for(j=0; j<4; j++)
printf("%4d",x[i][j]);
}
#include <stdio.h> #include <conio.h> #define SAT 2 #define SUT 3 int main() { int a[SAT][SUT] = {5, 3, 7, 0, 1, 2}; int b[SAT][SUT] = {1, 2, 3, 4, 5, 6}; int c[SAT][SUT]; int i, j; puts("A Matrisi:"); for(i=0; i<SAT; i++){ for(j=0; j<SUT; j++) printf("%4d",a[i][j]); printf("n"); } puts("B Matrisi:"); for(i=0; i<SAT; i++){ for(j=0; j<SUT; j++) printf("%4d",b[i][j]); printf("n"); } puts("nC Matrisi:"); for(i=0; i<SAT; i++){ for(j=0; j<SUT; j++){ c[i][j] = a[i][j] + b[i][j]; printf("%4d",c[i][j]); } printf("n"); } getch (); }
#include <stdlib.h> #include <conio.h> int main() { int dizi[100]; int a[100][100]; int i, j, n, x, st, su; printf("Dizi kac elemandan olusmali : "); scanf("%d",&n); for(x=0; x<n; x++) { printf("Dizinin [%d] . elemanini giriniz : ",x+1); scanf("%d",&dizi[x]); } printf("nDizi elemanlari -->n" ); for(x=0; x<n; x++) { printf("%3d",dizi[x]); } printf("nMatrisin Satir sayisini giriniz : "); scanf("%d",&st); printf("nMatrisin Sutun sayisini giriniz : "); scanf("%d",&su); if(n%st==0 && n%su==0) { x=0; for(i=0; i<st; i++) { for (j=0; j<su; j++) { a[i][j]=dizi[x]; x++; } } printf("nnMATRIS > n"); for(i=0; i<st; i++) { for(j=0; j<su; j++) { printf("%3d", a[i][j]); } printf("n"); } } else printf("HATA! Dizi Eleman Sayisi Satir veya Sutuna Tam bolunmelidir"); getch (); }
C Programlama Dizi Örnekleri
#include <stdio.h> #include <conio.h> #include <cstdlib> #include <iostream> using namespace std; void yazdir(int[], int); int main(int argc, char *argv[]) { int sayilar[10], pozitif[10], negatif[10]; int poz=0, neg=0; cout<<"10 Sayi Giriniz: "; for (int i=0; i<10;i++) { cin>>sayilar[i]; if (sayilar[i]>0) pozitif[poz++]=sayilar[i]; else if (sayilar[i]<0) negatif[neg++]=sayilar[i]; } cout<<"Girilen Sayilar: "; yazdir(sayilar,10); cout<<"Pozitif Sayilar: "; yazdir(pozitif,poz); cout<<"Negatif Sayilar: "; yazdir(negatif,neg); getch(); } void yazdir(int a[], int boy) { for (int j=0; j<boy;j++) cout<<a[j]<<" ";cout<<endl; }
#include <stdio.h> #include <conio.h> #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { char birincikelime[3], ikincikelime[6]; bool buldum=true; cout<<"Birinci Kelimeyi Giriniz: "; cin>>birincikelime; cout<<"Ikinci Kelimeyi Giriniz: "; cin>>ikincikelime; for (int i=0; i<3&&buldum;i++) { buldum=false; for(int j=0; j<6&&!buldum;j++) if (birincikelime[i]==ikincikelime[j]) buldum=true; } if (buldum) cout<<birincikelime<<" kelimesinin tum harfleri "<<ikincikelime<<" kelimesinde bulunmustur."; else cout<<birincikelime<<" kelimesinin tum harfleri"<<ikincikelime<<" kelimesinde bulunamamistir."; getch(); }