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.h — C 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.