Darsliklar C Matematik funksiyalar

C C Matematik funksiyalar

Matematik funksiyalar jiddiyroq hisob-kitoblar uchun mo’ljallangan. Oddiy qo’shish-ayirishni operatorlar bilan bajaramiz, biroq ildiz olish, darajaga oshirish yoki yaxlitlash uchun C’ning math.h kutubxonasi ishlatiladi. U ilmiy va muhandislik hisoblarining tayyor quroli.

math.hC standart kutubxonasining matematik funksiyalarni (ildiz, daraja, trigonometriya) taqdim etadigan sarlavha fayli. Undan foydalanish uchun #include <math.h> yoziladi.

Kutubxonani ulash

Matematik funksiyalarni ishlatish uchun math.h ulanadi. Diqqat: Linux’da kompilyatsiya vaqtida -lm bayrog’i kerak bo’ladi:

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%.1f\n", sqrt(144));   /* kvadrat ildiz */
    printf("%.1f\n", pow(2, 10));  /* daraja */
    printf("%.1f\n", fabs(-15.5)); /* modul (kasr) */
    return 0;
}
12.0
1024.0
15.5

sqrt — kvadrat ildiz, pow(a, b) — a ning b-darajasi, fabs — kasr sonning musbat qiymati. Ular doim double qaytaradi.

Yaxlitlash funksiyalari

math.h yaxlitlashning turli usullarini beradi. Ularni jadvalda solishtiramiz:

Funksiya Vazifasi f(3.4) f(3.6)
ceil() yuqoriga 4.0 4.0
floor() pastga 3.0 3.0
round() eng yaqinga 3.0 4.0

Amalda:

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%.1f\n", ceil(3.2));    /* doim yuqoriga */
    printf("%.1f\n", floor(3.9));   /* doim pastga */
    printf("%.1f\n", round(3.5));   /* eng yaqinga */
    return 0;
}
4.0
3.0
4.0

ceil har doim yuqoriga, floor har doim pastga, round esa eng yaqin butunga yaxlitlaydi.

Kompilyatsiya eslatmasi

Muhim: math.h funksiyalarini ishlatgan dasturni Linux’da kompilyatsiya qilganda -lm (link math) bayrog’ini qo’shish shart:

gcc dastur.c -o dastur -lm
[Matematik kutubxona bilan bog'lanadi]

Bu bayroqni unutsangiz, “undefined reference to sqrt” kabi xato chiqadi. Bu C’ning past darajali tabiatining natijasi — kutubxonalar aniq ko’rsatilishi kerak.

Amaliy misol: masofa

math.h ning kuchini real vazifada ko’ramiz — ikki nuqta orasidagi masofa (Pifagor):

#include <stdio.h>
#include <math.h>

int main(void) {
    double masofa = sqrt(pow(3, 2) + pow(4, 2));
    printf("Masofa: %.1f\n", masofa);
    return 0;
}
Masofa: 5.0

Xulosa

Bu bo’limda math.h bilan sqrt, pow, fabs, yaxlitlash funksiyalari va -lm bayrog’ining muhimligini ko’rib chiqdik. Diqqat: matematik kutubxonani -lm bilan bog’lang. Keyingi darsda mantiqiy (Boolean) qiymatlarga o’tamiz.