Standart C ile bir dizinin tüm elemanlarını toplamak

Soru: Bir diziyi paremetre olarak alıp, dizinin tüm elemanlarını toplayıp döndüren bir fonksiyon yazınız.

Bu fonksiyonu iki şekilde yazabiliriz, pointer aritmetiği kullanarak toplamı kolay bir şekilde bulabiliriz. Aşağıdaki kodlarda diziTopla isimli bir fonksiyon tanımlanmıştır. Bu fonksiyon double tipinde bir pointer'i ve int tpindeki n eleman sayısını parametre olarak almaktadır. Pointer aritmetiği kullanıldığında dizinin ilk elemanına 0'dan başlayarak aşağıdaki şekilde erişilecektir. 

*(a+0)
*(a+1)
*(a+2)

....
*(a+n-1)

Yukarıdaki işlemde 0,1,2,...,n-1 şeklinde eklemeler gittiğinden bu işlemi bir döngü ile aşağıdaki şekilde sadece iki satır kod yazarak yapabiliriz.

for (int i=0;i<n;i++)
    *(a+i)

Bu döngü dönerken toplamı bulmak için double tipinde bir toplam değişkeni oluşturup, her defasında toplam içinde değerleri biriktiriyoruz.


Aşağıdaki kullanımda diziTopla fonksiyonu çağrılırken dikkat ederseniz, parametrelerde dizinin sadece adını yazdık, köşeli parantez kullanmadık. Burada x dizisinin sadece ilk değerinin, yani sıfırıncı indisinin adresi gönderilmektedir. 
 
Bu işlemin sonucunda toplam 25.5 şeklinde dönecektir.

#include <stdio.h>

double diziTopla(double *a, int n){

    double toplam=0;

    for(int i=0;i<n;i++)
        toplam+=*(a+i);

    return(toplam);
}



int main() {

    double x[] ={1,2,3,4,5,10.5};

    double sonuc=diziTopla(x,6);
    printf("Sonuc: %lf",sonuc);

    return 0;
}
 



Bu sayfada yer alan kodlar Jetbrains firmasının Clion IDE'si ile yazılmıştır, Eclipse veya Netbeans gibi IDE'ler kullanabilirsiniz. C++ derleyicisi olarak MinGW kullanılmaktadır. Başka C++ derleyicileri kullandığınızda bu kodlarda yer alan komutların bulunduğu kütüphaneler farklı olabilir. İlgili komutları kendi derleyicinizin dökümanlarına bakarak projenize dahil ettiğinizde çalışacaktır. 

Mutlu kodlamalar,
Oğuzhan TAŞ
Ocak 2021

 
Bookmark and Share