Математичні функції в мові Сі

Математичні обчислення не обмежуються лише арифметичними діями. Крім них, можна ще зустріти коріння, модулі, логарифми, тригонометричні функції та ін. Навчимося ж використовувати подібні функції в своїх програмах.

Для використання математичних функцій потрібно підключити заголовний файл math.h. У ній визначено багато різних функцій, але ми поки розглянемо наступні:

Деякі математичні функції

fabs (x) модуль числа x
sqrt (x) квадратний корінь з числа x
sin (x) синус числа x (х в радіанах)
cos (x) косинус числа x (х в радіанах)
pow (x, y) обчислення x y
exp (x) обчислення e x
log (x) натуральний логарифм числа x
log10 (x) десятковий логарифм числа x

Два важливих моменти.
  • Всі функції повертають значення типу double.
  • Параметри функцій - речові числа (double), але можна передавати і цілі числа. При цьому відбудеться неявне перетворення типу. Компілятор з цілого числа, наприклад 3, зробить речовий 3.0.

Приклади.
Дано довжини катетів прямокутного трикутника. Обчислити довжину гіпотенузи. Проста задачка на знання теореми Піфагора.

Обчислити синус кута ввёденного з клавіатури. Кут вводиться в градусах.

У цій програмі є про що поговорити. Тригонометричні функції, які визначені в math.h працюють з радіанної мірою кута. Людям же звичніше працювати з градусами. Тому в даній програмі ми попередньо перевели значення з градусів в радіани. Якщо цього не зробити, результат вийде неправильним. Перевірте це самостійно.

Неявне перетворення типів

При явному перетворенні типу ми в дужках перед значенням вказували тип, до якого потрібно привести дане значення. У неявному перетворенні цього робити не потрібно. Компілятор автоматично підбере необхідний тип.

Неявне перетворення типів здійснюється в наступних випадках:

  1. перед передачею аргументів на функцію (як в нашому прикладі з коренем. Лістинг 1.)
  2. виконання арифметичних операцій з різними типами аргументів
  3. перед виконанням присвоювання

Правила неявного перетворення типів

  • якщо виконуються арифметичні операції з різними типами аргументів. Обидва аргументи наводяться до більшого типу.
    Порядок типів: int
  • при присвоєнні. Значення праворуч від оператора присвоювання приводиться до типу змінної зліва від оператора присвоювання. При цьому, якщо більший тип присвоюється меншому, то може відбутися втрата точності.

int + float буде автоматично перетворено до float + float
float / int буде автоматично перетворено до float / float
double * float буде перетворено до double * double
int = double double буде перетворено до int з втратою дробової частини
float = int int буде перетворено до float

Схожі статті