C dili

C dilinde DİZİLER 1 bölüm

Diziler ;aynı veri tipindeki birçok değişkeni program çalıştığı sürece sürekli bir şekilde bellekte tutup kolayca ulaşmak için tek bir isim altında tutan yapılardır.Dizilerin kullanıcılara sağladığı en büyük avantaj aynı veri tipindeki çok sayıdaki değişkenin kullanılması gereken durumlar için kullanım kolaylığı sağlamasıdır.Daha önce de dediğimiz gibi diziler bir çok sayıda değişken barındırır,bundan dolayı dizileri birbirinden ayırt etmek için indis adı verilen verileri kullanırız.

Bir dizi genel olarak

veritipi  dizi_adi[elemansayisi];

dizilerin indisleri  mutlaka tam sayı olmalı ve değişken tipinde olmamalıdır.

int n=65
int hiz[n];// yanlıştır.
int hiz[65.6];//yanlıştır.
int hiz[20];//doğru.
int hiz[sizeof(a)];//doğru.

#define n 11;
int hiz[n];//doğru

Dizilerin elemanlarının değer gösterimi bir çok farklı şekilde yapılır:

örneğin, 10 tane arabanın katıldığı bir yarışın hız değerlerini bellekte tutan bir dizi oluşturmak  ve 4. aracın hızını ekrana yazdırnak istersek,

#include
#include
int main(){
int hiz[10];
hiz[0]=125;
hiz[1]=114;
hiz[2]=145;
hiz[3]=119;
hiz[4]=123;
hiz[5]=147;
hiz[7]=165;
hiz[8]=110;
hiz[9]=136;

printf(“4. aracin hizi %d olmustur.”,hiz[3]);
}

“ekrana 4. aracin hizi 119 olmuştur”.yazılır.

Burada özellikle dikkat etmemiz gereken nokta dizi elemanlarının indislerinin sıfırdan başlamış olması dolaysıyla 10.elemanın indisi 9 olmuştur.Eğer burada bir dizi elemanına değer ataması yaptıktan değerini değiştirmek istersek o satıra hiç dokunmadan herhangibi alt satıra  o elemana yeni bir değer ataması yaparak değiştirebiliriz.Örnek verecek olursak;

#include
#include
int main(){
int hiz[10];
hiz[0]=125;
hiz[1]=114;
hiz[2]=145;
hiz[3]=119;
hiz[4]=123;
hiz[5]=147;
hiz[7]=165;
hiz[8]=110;
hiz[9]=136;
hiz[3]=156;
printf(“4. aracin hizi %d olmustur.”,hiz[3]);
}

ilave olarak şu iki hususunda bilinmesi önemlidir:

Eğer  eleman sayımız 10 olduğu halde printf(“4. aracin hizi %d olmustur.”,hiz[16]); şeklinde fonksiyon yazılırsa,ekrana “4. aracın hizi rastgele bir sayı olmuştur.”yazar.Aynı şekilde eğer dizimiz 17 elemanlı olup biz hiz[16]  elemanına değer atamamış olsaydık sonuç bu sefer ekrana 0 sıfır yazdırılmasıyla olurdu.

Görüldüğü üzere elemanların teker teker alt alta değerlerinin yazılması pek de kullanışlı değildir.Bunun yerine küme parantezi  kullanarak da yapılabilir.

int hiz[5]={125,114,119,123,147};

ve eleman sayısı tanımlamadan da diziler yazabiliriz.

int hiz[]={125,126,156,149,} burada eleman sayısında sınırlama olmadığı için istenilen sayıda değer yazılabilir. Burada da eğer küme içerisini, aşan bir eleman istenirse program o değere otomatik olarak rastgele bir değer atar.

int hiz[]={125,114,119,123,147};

printf ve scanf fonksiyonları bir dizinin okunması ve yazdırılması için de kullanılır. Örneğin bir A dizisinin aşağıdaki gibi bildirildiğini varsayalım:

      int A[10];

Bu dizinin elemanlarını klavyeden okumak için:

      for(i=0; i<10; i++)
         scanf("%d",&A[i]);

daha sonra bu değerlerini ekrana yazmak için:

      for(i=0;i<10;i++)
         printf("%d\n",A[i]);
kullanılır.
şimdi bazı örnekler verecek olursak
1-)girilen 10 tane tam sayının ortalamassını bulan program

int dizi[10];
float ort;
int toplam=0;
int i;
for(i=0;i<10;i++){

printf(“%d. eleman degerini giriniz.”,i+1);
scanf(“%d”,&dizi[i]);
toplam+=dizi[i];
}
ort=toplam/10;
printf(“Girdiginiz sayilarin ortalamasi %.2f dir.”,ort);

2-Girilen 10 tane sayını ortalamasını ve standart sapmasını bulan program

int dizi[10],i;
float ortalama;
float toplam1=0,toplam2=0,standartsapma;
for( i=0;i<10;i++)
{
printf(“%d. sayiyi giriniz:”,i+1);
scanf(“%d”,&dizi[i]);
toplam1+=dizi[i];
}
ortalama=toplam1/10;
for(i=0;i<10;i++)
{
toplam2+=pow(dizi[i]-ortalama,2);
}
standartsapma=sqrt(toplam2/9);
printf(“ortalama=%.2f”,ortalama);
printf(“satandarsapma=%.2f”,standartsapma);

bir dizi içinde arama yapma

int a[SIZE];
int k;
int searched_val;
printf(“Aranacak degeri girin : “);
scanf_s(“%d”, &searched_val);
srand(time(0));
for (k = 0; k < SIZE; ++k) {
a[k] = rand() % 10;
printf(“%d “, a[k]);
}
for (k = 0; k < SIZE; ++k)
if (a[k] == searched_val)
break;
if (k < SIZE)
printf(“\na[%d] = %d\n”, k, a[k]);
else
printf(“\nAaranan deger dizide yok!\n”);
system(“pause”);


int sayi;
srand(time(NULL));
sayi=rand()%10;
printf(“Rastgele sayi= %d”,sayi);
getch();

 

Bu kısım da yine rastgele bir sayı üretir. Ama az önce söylediğimiz gibi bu üretilen sayıyı zaman gibi sürekli değişen bir değere bağlayarak sürekli değişmesini sağlayabiliriz. Srand(time(NULL)) komutu gördüğünüz gibi tanımlama kısmından sonra kullanılarak sayi değişkeni için üretilen sayının sürekli olarak değişmesini sağlar. Bir kere tanımlamak yapmak yeterlidir. Kullanımı aynen örnekteki gibidir. NULL nedir diye merak eden varsa, programın istenilen sürekli olarak değişmesini ve çalışmasını sağlar.

4/5/2015

FATİH ALPARSLAN

TRABZON

C dilinde DİZİLER 1 bölüm&rdquo için 1 yorum

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

%d blogcu bunu beğendi: