CodeBlanks Logo Icon CodeBlanks

Sayı yardımcıları

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

Sayı dönüşüm ve hesaplama fonksiyonlarını eklersin.

Sayı yardımcıları

Üçüncü ders num_abs ve num_sign fonksiyonlarını tanımlar. num_abs, bir sayının mutlak değerini döndürür; num_sign, sayının işaretini (+1, 0, -1) verir.

num_abs için tek satırlık bir ternary yeter: return n < 0 ? -n : n;. num_sign, üç durumlu olduğu için if zinciriyle yazılır. Bu fonksiyonlar, matematik ve istatistik hesaplamalarında sık kullanılır. Önceki dersin çözümü başlangıç koduna dahildir; sen yeni fonksiyonları eklersin.

num_sign uygulaması

num_sign, üç olası değer döndürür: +1 (pozitif), 0 (sıfır) ve -1 (negatif). En doğal yazım if zinciridir.

Örnek: int num_sign(int n) { if (n > 0) return 1; if (n < 0) return -1; return 0; }. İlk if pozitifleri yakalar, ikincisi negatifleri; kalan durum sıfırdır. Bu desen, üçlü mantık gerektiren işaret, yön ve karşılaştırma fonksiyonlarında yaygındır. else kullanmadan da yazılabilir; erken dönüş sayesinde.

Uygulama num_abs ve num_sign'i ekle

Var olan tanımların altına int num_abs(int n) yaz; return n < 0 ? -n : n; döndürsün. int num_sign(int n) yaz; pozitifse 1, negatifse -1, sıfırsa 0 döndürsün. main içine printf("%d\n", num_abs(-7)); ve printf("%d\n", num_sign(-5)); satırlarını 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 main(void) {
    printf("Modül hazır\n");
    printf("%d\n", str_len("Merhaba"));
    printf("%d\n", str_is_empty(""));
    return 0;
}

// num_abs fonksiyonunu yaz: mutlak değer
// num_sign fonksiyonunu yaz: pozitifse 1, negatifse -1, sıfırsa 0
// 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 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;
}

Beklenen çıktı

Modül hazır
7
1
7
-1

Soru ve cevaplar

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

1 num_abs ternary'i tamamla

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

Açıklama: n negatifse -n döndürülür; bu mutlak değerdir.

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

Kavram Anlamı
num_abs(-7) 7 (negatif giriş)
num_abs(7) 7 (pozitif giriş)
num_sign(-5) -1 döndürür
num_sign(0) 0 döndürür

3 num_sign(-5) ne döndürür?

  • 0
  • -1 Doğru cevap
  • 1
  • 5

Açıklama: num_sign negatif için -1 döndürür.

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