17 Temmuz 2009 Cuma

C Dizi Elemanlarına Değer Atanması

DİZİ ELEMANLARINA DEĞER ATANMASI

Dizilere değer atama işlemi tanımlanması sırasında ilk değer atayarak da, sonradan programın herhangibir yerinde de yapılabilir. Eğer tanımlama sırasında değer atanacaksa aşağıdaki örnekte olduğu gibi yapılmalıdır. Bu durumda dizi elemanları küme parantezi (brace) içerisinde aktarılır ve herbirisi diğerinden virgülle ayrılır. Elemanlar ilk hücreden itibaren sırası ile yerleştirilirler.

int a[10] = { -45, 6, 0, 72, 1543, -89, 0, 62, -3, 1};

Bu ilk değer ataması işleminde bazı hususlara dikkat edilmelidir:
Küme parantezi içerisinde dizinin söylenen boyutundan daha fazla eleman olmamalıdır. Böyle bir durumda yazım hatası (syntax error) ile karşılaşılır.
Küme parantezi içerisinde dizinin söylenen boyutundan daha az eleman varsa belirtilen elemanlar sırasıyla diziye aktarılır, boş kalan yerlerdeki elemanlar 0 kabul edilir.
İlk değer ataması sırasında dizinin boyutu verilmemişse ise, küme parantezi içerisinde eleman sayısı dizi boyutu olarak kabul edilir.
ÖRNEK: int a[] = {-45, 6, 0, 72, 1543, -89}; şeklinde tanımlanmış bir dizinin boyutu söylenmemiş olsa da (diziye 6 eleman aktarıldığı için) 6 olarak algılanır.

Fakat dizi sadece tanımlanacak ve eleman aktarılmayacaksa boyutu mutlaka belirtilmelidir. Aksi hatalı bir durumdur. Yani int a[]; şeklinde bir tanımlama yapılamaz.
Dizi tanımlanmış, ancak hiçbir eleman aktarılmamışsa dizi içerisinde rasgele değerler bulunur. (Aslında abu değerler dizi için ayrılmış olan hafıza bölümünde daha önceden varolan değerlerdir.)

Bütün bunların dışında dizinin herbir elemanına indis numarasını kullanarak tek tek de ulaşılıp değer atanabilir.

a[5] = 65; /* Dizinin 5 indis numaralı elemanına –aslında 6. eleman- 65 değerini aktarır. */

Örnek: Klavyeden girilen 10 adet sayıyı giriş sıralarının tersinden ekrana yazdırınız.

Böyle bir örneği dizi kullanmadan yapmak için 10 tane ayrı değişken tanımlamak ve değerleri 10 ayrı komutla girdirip, yeniden 10 ayrı komutla yazdırmak gerekir. Çünkü her değer giriş işleminden sonra yeniden lazım olacağından mutlaka saklanmaları gerekecek. Ancak 10 elemanlı bir dizi ile bu işlemleri çok daha kısa sürede yapabiliriz.

#include
#include
void main()
{
int a[10]; i;
for ( i=0; i<10; i++) { printf (“%d. Elemanı giriniz:”, i+1); scanf (“%d”, &a[i]); } printf (“\n Elemanlar tersten yazılıyor:”) for ( i = 9; i >= 0; i--)
{
printf (“%d\t”, a[i]);
}

Hiç yorum yok:

Yorum Gönder