CodeBlanks Logo Icon CodeBlanks

Dizi yardımcıları

  • C kursu
  • Orta seviye
  • Ders 16/116
  • 6 dk

Dizi işleme fonksiyonlarını eklersin.

Dizi yardımcıları

Dördüncü ders arr_max ve arr_sum fonksiyonlarını tanımlar. arr_max, bir tamsayı dizisinin en büyük elemanını döndürür; arr_sum, tüm elemanların toplamını verir.

Her ikisi de for döngüsüyle dolaşır. arr_max bir m değişkeni tutar ve her adımda karşılaştırır; arr_sum bir s akümülatörü tutar ve her adımda ekler. Dizinin uzunluğu parametre olarak alınır; bu, C dizilerinde yerleşik bir boyut olmadığı için şarttır. Önceki dersin çözümü başlangıç koduna dahildir.

arr_max uygulaması

arr_max, ilk elemanı başlangıç değeri yapar ve diziyi dolaşarak en büyüğü arar. Yazım: int arr_max(int *a, int n) { int m = a[0]; for (int i = 1; i < n; i++) if (a[i] > m) m = a[i]; return m; }.

İlk eleman zaten m'dir; bu yüzden döngü i = 1'den başlar. Her adımda a[i] > m kontrolü yapılır; doğruysa m güncellenir. Döngü sonunda m, en büyük elemandır. Bu desen, istatistik ve oyun skoru hesaplarında standarttır.

Uygulama arr_max ve arr_sum'u ekle

Var olan tanımların altına int arr_max(int *a, int n) yaz; ilk elemanı başlangıç yapıp for (int i = 1; i < n; i++) ile en büyüğü bul. int arr_sum(int *a, int n) yaz; for (int i = 0; i < n; i++) s += a[i]; ile topla. main içine int arr[3] = {5, -3, 8}; tanımla, sonra printf("%d\n", arr_max(arr, 3)); ve printf("%d\n", arr_sum(arr, 3)); ekle.

Başlangıç kodu

main.c
#include <stdio.h>

int str_len(const char *s);
int str_is_empty(const char *s);
int num_abs(int n);
int num_sign(int n);
int arr_max(int *a, int n);
int arr_sum(int *a, int n);

int str_len(const char *s) {
    int n = 0;
    while (*s) { n++; s++; }
    return n;
}

int str_is_empty(const char *s) {
    return str_len(s) == 0;
}

int num_abs(int n) {
    return n < 0 ? -n : n;
}

int num_sign(int n) {
    if (n > 0) return 1;
    if (n < 0) return -1;
    return 0;
}

int main(void) {
    printf("Modül hazır\n");
    printf("%d\n", str_len("Merhaba"));
    printf("%d\n", str_is_empty(""));
    printf("%d\n", num_abs(-7));
    printf("%d\n", num_sign(-5));
    return 0;
}

// arr_max fonksiyonunu yaz: dizinin en büyük elemanını döndür
// arr_sum fonksiyonunu yaz: dizinin toplamını döndür
// main içinde ikisini çağır ve yazdır

Örnek çözüm

main.c
#include <stdio.h>

int str_len(const char *s);
int str_is_empty(const char *s);
int num_abs(int n);
int num_sign(int n);
int arr_max(int *a, int n);
int arr_sum(int *a, int n);

int str_len(const char *s) {
    int n = 0;
    while (*s) { n++; s++; }
    return n;
}

int str_is_empty(const char *s) {
    return str_len(s) == 0;
}

int num_abs(int n) {
    return n < 0 ? -n : n;
}

int num_sign(int n) {
    if (n > 0) return 1;
    if (n < 0) return -1;
    return 0;
}

int arr_max(int *a, int n) {
    int m = a[0];
    for (int i = 1; i < n; i++) if (a[i] > m) m = a[i];
    return m;
}

int arr_sum(int *a, int n) {
    int s = 0;
    for (int i = 0; i < n; i++) s += a[i];
    return s;
}

int main(void) {
    printf("Modül hazır\n");
    printf("%d\n", str_len("Merhaba"));
    printf("%d\n", str_is_empty(""));
    printf("%d\n", num_abs(-7));
    printf("%d\n", num_sign(-5));
    int arr[3] = {5, -3, 8};
    printf("%d\n", arr_max(arr, 3));
    printf("%d\n", arr_sum(arr, 3));
    return 0;
}

Beklenen çıktı

Modül hazır
7
1
7
-1
8
10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangi fonksiyon dizinin en büyük elemanını döndürür?

  • arr_sum
  • str_len
  • arr_max Doğru cevap
  • num_abs

Açıklama: arr_max, dizideki en büyük elemanı bulur.

2 Dizi yardımcılarını eşle

Kavram Anlamı
arr_max([5,-3,8]) 8 döndürür
arr_sum([5,-3,8]) 10 döndürür
arr_max([1,1,1]) 1 döndürür
arr_sum([1,1,1]) 3 döndürür

3 arr_sum döngü sınırını tamamla

Soru
int arr_sum(int *a, int n) {
    int s = 0;
    for (int i = 0; i < ____; i++) s += a[i];
    return s;
}
Cevap
int arr_sum(int *a, int n) {
    int s = 0;
    for (int i = 0; i < n; i++) s += a[i];
    return s;
}

Açıklama: i < n koşulu tüm elemanları dolaşır.

Orta seviye bölümündeki tüm dersler