Библиотечке математичке функције

Поред стандардних оператора који врше операције над бројчаним подацима, програмски језик C нуди и значајан број математичких функција дефинисаних у заглављима math.h и stdlib.h.

Функција за квадратно кореновање

Функција sqrt(), дефинисана у библиотеци math.h, рачуна квадратни корен броја. Аргумент функције је реалан број двоструке прецизности, а функција враћа квадратни корен тог броја који је такође реалан број двоструке прецизности.

Напиши програм у програмском језику C којим се са стандардног улаза чита реалан број двоструке прецизности \(a\), па потом на стандардни излаз исписује вредност квадратног корена броја \(a\) као реалан број двоструке прецизности заокружен на две децимале. Задатак реши коришћењем библиотечке функције за квадратно кореновање.

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

int main(void)
{
    double a;
    scanf("%lf", &a);
    printf("%.2lf", sqrt(a));
    return 0;
}

Квадратни корен броја може се израчунати и без коришћења библиотечких функција, али захтева познавање напреднијих математичких алгоритама, као на пример Њутнове итеративне методе, алгоритма бинарне претраге или експоненцијалног алгоритма.

Функција за степеновање

Библиотечка функција pow(), дефинисана у заглављу math.h, рачуна вредност основе подигнуте на експонент. Аргументи функције су основа и степен који се наводе као реалан број двоструке прецизности, а функција враћа вредност основе подигнуте на експонент, такође као реалан број двоструке прецизности.

Напиши програм у програмском језику C којим се са стандардног улаза учитавају два реална броја двоструке прецизности, основа \(a\) и експонент \(n\), па потом на стандардни излаз исписује вредност основе подигнуте на експонент \(a^{n}\) као реалан број двоструке прецизности заокружен на две децимале. Задатак реши коришћењем библиотечке функције за степеновање.

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

int main(void)
{
    double a, n;
    scanf("%lf%lf", &a, &n);
    printf("%.2lf", pow(a, n));
    return 0;
}

Степен броја може се такође израчунати без коришћења библиотечких функција на више начина, као на пример наивном итеративном методом, рекурзивном методом или бинарном рекурзивном експоненцијацијом.

Функција pow() може се употребити и за израчунавање корена, јер важи да је \(\sqrt[n]{a}=a^{1/n}\). Приликом израчунавања количника \(1/n\) бар један од бројева \(1\) или \(n\) мора бити задат као реалан број.

Напиши програм у програмском језику C којим се са стандардног улаза учитавају два реална броја двоструке прецизности, \(a\) и \(n\), па потом на стандардни излаз исписује вредност \(n\)-тог корена броја \(a\) као реалан број двоструке прецизности заокружен на две децимале. Задатак реши коришћењем библиотечке функције за степеновање.

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

int main(void)
{
    double a, n;
    scanf("%lf%lf", &a, &n);
    printf("%.2lf", pow(a, 1.0 / n));
    return 0;
}

Функције за рачунање апсолутне вредности

Функција abs

Библиотечка функција abs(), дефинисана у заглављу stdlib.h, рачуна апсолутну вредност броја. Аргумент функције је цео број, а функција враћа апсолутну вредност тог броја, која је такође цео број.

Напиши програм у програмском језику C којим се са стандардног улаза чита цео \(a\), па потом на стандардни излаз исписује \(|a|\), такође као цео број. Задатак реши коришћењем библиотечке функције за рачунање апсолутне вредности.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a;
    scanf("%d", &a);
    printf("%d", abs(a));
    return 0;
}

Функција fabs

Библиотечка функција fabs(), дефинисана у заглављу math.h, рачуна апсолутну вредност реалног броја двоструке прецизности. Аргумент функције је реалан број двоструке прецизности, а функција враћа апсолутну вредност тог броја, која је такође реалан број двоструке прецизности.

Напиши програм у програмском језику C којим се са стандардног улаза чита реалан број двоструке прецизности \(a\), па потом на стандардни излаз исписује \(|a|\), такође као реалан број двоструке прецизности заокружен на две децимале. Задатак реши коришћењем библиотечке функције за рачунање апсолутне вредности.

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

int main(void)
{
    double a;
    scanf("%lf", &a);
    printf("%.2lf", fabs(a));
    return 0;
}

Функције за заокруживање

Функција round

Библиотечка функција round(), дефинисана у заглављу math.h, заокружује реалан број двоструке прецизности. Аргумент функције је реалан број двоструке прецизности, а функција враћа реалан интегрални број који је најближи броју у аргументу. Под појмом „интегрални број” подразумева се реалан број чији је разломљени део једнак нули.

Напиши програм у програмском језику C којим се са стандардног улаза чита реалан број двоструке прецизности \(a\), па се на стандардни излаз исписује интегрални реални број \(b\) као реалан број двоструке прецизности без децимала, који је најближи броју \(a\). Задатак реши коришћењем одговарајуће библиотечке функције за заокруживање.

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

int main(void)
{
    double a, b;
    scanf("%lf", &a);
    b = round(a);
    printf("%lg", b);
    return 0;
}

Функција trunc

Библиотечка функција trunc(), дефинисана у заглављу math.h, заокружује реалан број двоструке прецизности. Аргумент функције је реалан број двоструке прецизности, а функција враћа интегралан реалан број који је најближи и мањи од броја у аргументу.

Напиши програм у програмском језику C којим се са стандардног улаза чита реалан број двоструке прецизности \(a\), па се на стандардни излаз исписује цео број \(b\) као реалан број двоструке прецизности без децимала, који је најближи и мањи од броја \(a\). Задатак реши коришћењем одговарајуће библиотечке функције за заокруживање.

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

int main(void)
{
    double a, b;
    scanf("%lf", &a);
    b = trunc(a);
    printf("%lg", b);
    return 0;
}

Функција floor

Библиотечка функција floor(), дефинисана у заглављу math.h, заокружује реалан број двоструке прецизности. Аргумент функције је реалан број двоструке прецизности, а функција враћа највећу реалну интегралну вредност која није већа од броја у аргументу.

Напиши програм у програмском језику C којим се са стандардног улаза чита реалан број двоструке прецизности \(a\), па потом на стандардни излаз исписује највећи цео број \(b\) који није већи од \(a\). Задатак реши коришћењем одговарајуће библиотечке функције за заокруживање.

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

int main(void)
{
    double a;
    int b;
    scanf("%lf", &a);
    b = floor(a);
    printf("%d", b);
    return 0;
}

Функција ceil

Библиотечка функција ceil(), дефинисана у заглављу math.h, заокружује реалан број двоструке прецизности. Аргумент функције је реалан број двоструке прецизности, а функција враћа најмању реалну интегралну вредност која није мања од броја у аргументу.

Напиши програм у програмском језику C којим се са стандардног улаза чита реалан број двоструке прецизности \(a\), па потом на стандардни излаз исписује најмањи цео број \(b\) који није мањи од \(a\). Задатак реши коришћењем одговарајуће библиотечке функције за заокруживање.

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

int main(void)
{
    double a;
    int b;
    scanf("%lf", &a);
    b = ceil(a);
    printf("%d", b);
    return 0;
}

У програмском језику C доступно је још функција за заокруживање бројева, а у овој лекцији научио си четири основне. Аргумент све четири функције је реалан број двоструке прецизности. Прве две, round и trunc, враћају интегралан цео број двоструке прецизности, а друге две, floor и ceil, враћају цео број. Како би што боље разумео како ове библиотечке функције заокружују бројеве погледај примере у следећој табели.

Број

round

trunc

floor

ceil

4.49

4.00

4.00

4.00

5.00

4.50

5.00

4.00

4.00

5.00

4.51

5.00

4.00

4.00

5.00

-4.49

-4.00

-4.00

-5.00

-4.00

-4.50

-5.00

-4.00

-5.00

-4.00

-4.51

-5.00

-4.00

-5.00

-4.00

Остале библиотечке функције

У заглављу math.h и осталим заглављима дефинисано је још много математичких функција, али те функције захтевају знања из области математике које још увек ниси учио у школи. Неке од њих су:

  • логаритамске и експоненцијалне функције (log, log10 и exp),

  • тригонометријске функције (sin, cos, tan, asin, acos и atan),

  • хиперболичке функције (sinh, cosh, tanh, asinh, acosh и atanh),

  • функције за рачунање остатка (fmod, remainder, modf и fma).