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
#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
#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
int num_abs(int n) {
return n < 0 ? ____ : n;
}
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.